무엇이 탁월한 개발자를 만드는가?
좋은 개발자의 조건, 태도 등에 관련된 글이 최근 눈에 좀 띄어서요. 저 자신이 더 좋은 개발자가 되고, 더 좋은 개발자를 알아보고, 주니어를 성장시킬 수 있게 도움을 준 연구를 하나 소개해드려고 합니다. (원본 글: [인프콘 2023 발표] 1. 무엇이 탁월한 개발자를 만드는가)
<What makes a great software engineer?> 라는 Li Paul Luo의 2015년 박사학위 논문인데요.
결론부터 말씀드리면, 저는 이 연구를 통해 다음 5개를 탁월한 개발자의 핵심 역량으로 생각하게 됐어요.
- 훌륭한 코드를 짠다
- 근거 기반 의사결정을 연습한다
- 동료의 효과적 의사결정을 돕는다
- 작업의 현재 가치를 극대화한다
- 효과적으로 꾸준히 학습한다

주니어를 위한 핵심 메시지
이 논문을 읽고 제가 정리한, 주니어 개발자를 위한 핵심 메시지는 다음과 같습니다:
- 훌륭한 코드를 기반으로 하여, 근거 기반 의사결정을 연습하고 동료의 효과적 의사결정을 도움으로써 작업의 현재 가치를 극대화하라.
- 효과적으로 학습하는 법을 꾸준히 학습하라. 더 훌륭한 코드를 짜는, 근거 기반 의사결정을 더 잘 연습하는, 동료의 효과적 의사결정을 더 잘 돕는, 작업의 현재 가치를 더 높이는 방법을 학습하라.
- 주니어 개발자라면 훌륭한 코드 짜기, 그리고 효과적이고 꾸준한 학습을 최우선 목표로 삼아라.
- 이 모든 것은 현실의 구체적 문제에 대한 이해와 관심을 바탕으로 해야 한다.
재밌는 건, 여기서 '개발자'를 다른 직군으로 바꾸고 '코딩'을 그 직군의 핵심 하드 스킬로만 바꾸면 어떤 직군에서나 제법 효과적인 역량 판단 기준 및 성장 방향으로 써먹을 수 있다는 겁니다. 그래서 이 연구는 제가 (다른 직군에 대한) 면접관으로서 성장하는 데에도 도움을 주었습니다.
연구는 어떻게 했나
혹시 궁금하신 분이 있으실까 해서 저자 Li Paul Luo가 어떻게 연구했는지 덧붙여보면요.
- A) 개발자에게 필요한 교육, 역량, 행동 등에 대한 기존 연구 분석
- B) 마이크로소프트에서 레벨 2 이상(어느정도 역량을 인정받은) 개발자 59명을 심층 인터뷰
- C) A, B를 통해 개발자가 가져야 할 만한 개인적 특성(성격, 지식, 행동 등) 후보 54개 도출
- D) 마이크로소프트 개발자 2,000여명 대상 설문조사하여 항목별 중요도 평가
D의 질문은 이런 식이었습니다.
(자세한 특성 묘사 후) 만약 숙련된 개발자가 이 특성을 가지고 있지 않다면, 당신은 그가 탁월한 개발자라고 평가할 것인가?
그리고 이렇게 답변하게 했죠.
- 이것 없이는 탁월한 개발자가 될 수 없다
- 이것 없이 탁월한 개발자가 되는 게 불가능하진 않으나 굉장히 어렵다
- 이것 없이도 탁월한 개발자가 될 수는 있겠으나, 있으면 도움이 된다
- 이건 탁월한 개발자가 되는 것과 관계가 없다
- 탁월한 개발자에게는 이게 있어서는 안 된다
- 잘 모르겠다
MS만을 대상으로 한 건 연구의 한계점이기도 했으나, MS에는 여러 나라에서 여러 분야의 소프트웨어 팀이 있었고 MS만의 용어와 문화에 익숙한 것이 분석의 일관성을 더해주는 이점이 더 크다고 봐서 MS만을 대상으로 했다고 언급되어 있습니다.
설문조사 결과는 이랬습니다.
- 1위: 코딩 디테일에 주의를 기울이기
- 2위: 복잡성을 관리하는 마음가짐
- 3위: 꾸준히 스스로를 개선하기
- 4, 5위: 정직함과 개방성
- 6위: (분석하느라 실행 못하는 게 아니라) 실천하기

재밌는 건 최하위 2개인데요.
- 53위: 초과근무(하루 8시간 이상) 하며 빡세게 일하기
- 54위: 개인적 신뢰자산을 쌓아 호의를 주고받기

이 둘만 '탁월한 개발자는 이러면 안 된다'는 비율이 5%가 넘었습니다. 즉 개발자로서 성장하는 데 해가 되는 특성이라는 것이죠.
저자가 이 결과에 놀라서 후속 심층 인터뷰를 해보니, 이 특성들이 본질적으로 개발자에게 안 좋은 특성이라기보다는, 개발자가 이래야만 하는 상황에 처해있다는 것 자체가 안 좋다는 뜻에 가까웠습니다.
- 초과근무가 필요하다는 건 설계가 잘못됐거나, 지속 불가능한 실천법을 따르는 상황이라는 뜻일 수 있고,
- 호의를 주고받아야만 한다는 건 의사결정이 합리적 근거보다는 주관적 의견을 따르는 문화라는 뜻일 수 있다는 거죠.
이는 탁월한 개발자라면 이런 상황을 피할 수 있도록 조직과 문화를 바꾸는 노력을 해야 한다는 의미로 읽을 수도 있습니다.
제가 속한 조직에서도 물론 열심히 일하고 호의를 주고받는 것이 당면한 문제에 대한 해결책이 될 수 있음을 잘 알고 있습니다만, 이들에 의존하지 않고도 효과적으로 일할 수 있는 환경을 조성하도록 노력하고 있습니다.
각 역량에 대한 제 더 자세한 해석은 아래 글에 담겨 있습니다. 궁금하시면 한번 읽어보세요!

Member discussion