From: HARD CODE

에릭 브레히너의 마이크로소프트 사내 칼럼으로, 2003년 2월 1일에 작성된 글이다.

뛰어난 개발자의 요건

  • 뛰어난 개발자는 자신이 무엇을 하는지 안다 뛰어난 개발자에게 "이 행이나 이 변수가 왜 여기 있습니까?" 라고 물어보면 이유를 설명한다. 때로는 ("다른 곳에서 코드를 가져와서 사용했습니다"라는 등) 이유가 다소 부실하다. 그래도 "저런, 저도 모르겠습니다. 코드가 돌아는 가네요." 라고 답하지 않는다.

  • 뛰어난 개발자는 마법을 믿지 않는다 '자신이 무엇을 하는지 안다'와 같은 의미다. 뛰어난 개발자는 블랙박스로 감춰진 API, 컴포넌트, 알고리듬을 불편해 한다. (단순히 문자열을 이어주는 클래스가 \(O(n^2)\) 성능을 자랑하거나 메모리 할당에 실패하는 등) 잘못된 가정이나 '허술한' 추상화로 골탕 먹지 않도록 사전에 코드가 돌아가는 방식을 파악한다.

  • 뛰어난 개발자는 고객과 비즈니스를 이해한다 7장 '인생은 공평하지 않다'라는 칼럼에서 자세히 다룬 내용이다. 뛰어난 개발자는 무엇이 중요한지 안다. 우선순위를 매겨서 적절한 타협점을 찾는다.

  • 뛰어난 개발자는 자신보다 고객과 팀을 우선한다 뛰어난 개발자에게 사소한 업무란 없다. 사소한 고객도 없다. 모든 업무가 중요하고 모든 고객이 중요하다.

  • 뛰어난 개발자는 도덕과 윤리를 타협하지 않는다 개인에 따라 차이는 있지만, 뛰어난 개발자는 업무를 달성하는 방법과 다른 사람을 대하는 태도를 중히 여긴다. 알고리듬을 선택하든 이메일을 작성하든, 자신에게 높은 기준을 적용하고 핵심 가치를 타협하지 않는다.

  • 뛰어난 개발자는 우수한 대인 기술과 의사소통 기술을 보유한다 인기 있는 토크쇼 사회자가 될 만한 개발자는 별로 없지만, 뛰어난 개발자는 다른 사람과 어울려 일하고, 주변 사람을 존중하며, 자신의 의사를 분명하고 적절하며 효과적으로 전달한다. 뛰어난 개발자는 (마음만 먹으면 가능하지만) 남을 괴롭히거나 위협하는 대신 협업한다(8장 '모 아니면 도 협상'이라는 칼럼에서 좀 더 자세히 다룬다).

  • 뛰어난 개발자는 폭넓고 협조적인 인맥을 보유한다 뛰어난 개발자는 다른 사람의 뛰어난 능력을 알아본다. 그래서 위대한 사람들은 서로에게 끌린다. 그들은 서로를 지지하는 인맥을 순식간에 구축해 개인으로 달성하기 어려운 효율을 발휘한다.

그 외에도 뛰어난 개발자는 품질을 중시하고, 멘토로서 다른 사람을 끌어주며, 설계 능력이 탁월하다.

뛰어난 개발자를 정의하는 특성 중 어느 요소도 단순한 숫자 값으로 측정하기란 불가능하다. 1

참고문헌

  • HARD CODE / 박재호 역 / 에이콘출판사 / 발행 2009년 06월 30일 / 원제 : I. M. Wright's Hard Code

주석

  1. HARD CODE. 9장.