10x 개발자는 남들보다 절반만 일하며, 절반의 속도로 타이핑하고, 코드를 작성하는 것보다 삭제하는데 더 많은 시간을 할애한다.
최고의 엔지니어가 초급 개발자와 다른점은 그들의 올바른 도구를 사용하고 올바른 질문을 하고 우선순위를 정하는 방법을 알고 있다는 것이다. 이는 엄청난 코딩 스킬이 필요하기보다 누구나 갈고닦을 수 있는 분야이다.
최고의 엔지니어와 평범한 엔지니어를 구분짓는 것은 비기술적 부분이다.
초급 개발자가 흔하게 저지르는 실수를 알아보고, 경험 많은 엔지니어가 동일한 문제를 어떻게 다루는지 비교하여 보자
링컨은 "나에게 나무를 베는데 8시간이 주어진다면 도끼를 가는데 7시간을 쓸 것이다"라고 말했다. 초보자는 무딘 도끼로 8시간 나무를 벨 것이다. 반면, 수석 엔지니어는 작업 시간 한 시간동안 최고의 전기톱을 고를 것이다. 그리고 5분 만에 모든 나무를 자를 것이다.
초급 개발자의 흔한 실수는 무작정 코딩부터 시작하는 것이다. 그들은 자신이 알고 있는 도구만을 고집하고 이를 모든 곳에 적용하려고 애쓴다.
초급 개발자가 망치만 사용할 줄 안다면, 땅을 파는 데에도 망치를 쓸 것이다.
그들은 다은 대안을 찾는데 시간을 투자하지 않는다. 조금만 더 고민하면 코드 한 줄 없이 문제를 해결할 수 있는데 말이다.
10x 개발자는 초급 개발자가 몇 주 동안 땀을 흘려 완성할 일을 올바른 도구를 사용해 10분 안에 완료할 수 있다. 여기서 10배의 생산성 차이가 벌어진다.
초급 개발자는 고급 개발자가 마치 고독한 천재와 같다는 착각을 한다. 물론 문제를 계속 붙잡고 있으면 해답을 얻을지도 모른다.
하지만 초급 개발자는 스스로 상황을 판단하고 정보를 해석할 능력이 부족하다. 따라서 도움을 요청하는 대신 자신이 작성한 코드를 한 줄씩 살펴보며 고민에 빠진다. 동료에게 질문하면 5분 만에 해결될 간단한 문제임에도 말이다.
경험이 부족한 엔지니어라도 도움을 적절히 구한다면 홀로 일하는 경력 많은 엔지니어를 이길 수 있다.
위와 같은 부분은 아무리 혼자 고민해도 알기 힘든 부분이다. 다른 누군가에게 도움을 청하는 것이 훨씬 효율적이다.
10x 개발자는 현명한 투자자이다. 그들은 자신의 일이 투자라는 것을 이해하고 있으며, 투입한 시간보다 투자에 대한 보상이 훨씬 커야 한다고 생각한다. 또한 그들은 기회비용을 잘 이해하고 있다. 한 기능을 구축하는데 들어간 시간만큼 다른 기능의 개발은 중단된다.
엔지니어는 항상 기회비용을 저울질해야 한다. 모든 요구사항 중 지금 개발하고 있는 기능이 가장 가치있는 것인가요?
그들은 코드가 비즈니스 목표를 달성하기 위한 수단이라는 것을 이해한다. 코드 없이 목표를 달성할 수 있다면 더욱 좋은 것이다. 직접 작성하는 코드가 적으면 유지 보수해야 할 코드도 적어지는 일석이조 효과를 거둘 수 있다.
10x 개발자의 높은 생산성은 다음과 같이 계산할 수 있다. 초급 개발자가 수익을 창출과 무관한 기능 구현에 2시간을 낭비하고, 고급 개발자는 5배의 수익을 내는 간단한 코드 변경에 1시간을 투자한다면 10배의 생산성 차이가 발생한다.
개발자는 무엇보다도 가치 전달을 우선해야 한다.