회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
본문은 요즘IT와 번역가 윌리(Willy)가 함께 만든 해외 번역 콘텐츠입니다. 필자인 Michael Lin는 전 넷플릭스 엔지니어링 책임자로 현재는 회사를 그만두고, 엔지니어링과 직업 조언, 그리고 스타트업에 대한 글을 쓰고 있습니다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
본문은 요즘IT와 번역가 윌리(Willy)가 함께 만든 해외 번역 콘텐츠입니다. 필자인 Michael Lin는 전 넷플릭스 엔지니어링 책임자로 현재는 회사를 그만두고, 엔지니어링과 직업 조언, 그리고 스타트업에 대한 글을 쓰고 있습니다.
이 글은 평범한 개발자보다 10배 이상 뛰어난(10x) 최고의 개발자란 누구인지, 그리고 최고의 개발자가 되기 위해서는 무엇을 해야 하는지 알려주고 있습니다. 이 글을 통해 최고의 개발자를 목표로 하려면 어떻게 해야 하는지 알 수 있기를 바랍니다.
초급 개발자가 흔히 저지르는 3가지 실수에 대해 알아볼 것입니다. 여러분은 어떤 개발자인가요?
최고의 개발자는 평범한 개발자보다 실제로 10배 이상 뛰어납니다. 초급 개발자로 구성된 팀 하나보다 10x 개발자[1]가 더 빠른 결과물과 더 많은 가치를 제공합니다.
어떻게 이것이 가능할까요? 사람이 많을수록 더 좋은 것 아닌가요?
제가 넷플릭스와 아마존에서 엔지니어링 책임자로 있었을 당시 두 명의 신입 대학원 인턴에서부터 수석 엔지니어(아마존의 L7 이상)까지 같이 일해볼 기회가 있었습니다. 이때 저는 10x 개발자의 존재를 목격했습니다. 일단 다음과 같은 사람이 10x 개발자는 아닙니다.
실제로 10x 개발자는 남들 보다 절반만 일하며, 절반의 속도로 타이핑하고, 코드를 작성하는 것보다 삭제하는 데 더 많은 시간을 할애한다는 것을 깨달았습니다.
최고의 엔지니어가 초급 개발자와 다른 점은 그들의 마음가짐과 개발 접근 방식에서 명확히 드러납니다. 그들은 올바른 도구를 사용하고 올바른 질문을 하고 우선순위를 정하는 방법을 알고 있습니다. 사실 이는 엄청난 코딩 스킬이 필요하기보다 누구나 갈고닦을 수 있는 분야입니다.
이렇듯 최고의 엔지니어와 평범한 엔지니어를 구분 짓는 것은 (놀랍게도) 비기술적 부분입니다.
지금부터 초급 개발자가 흔하게 저지르는 실수를 알아보고, 경험 많은 엔지니어가 동일한 문제를 어떻게 다루는지 비교하여 설명하도록 하겠습니다.
에이브러햄 링컨은 “나에게 나무를 베는 데 8시간이 주어진다면 도끼를 가는 데 7시간을 쓸 것이다.”라고 말했습니다. 초급 개발자는 무딘 도끼로 8시간 나무를 벨 것입니다. 반면, 수석 엔지니어는 작업 시작 전 한 시간 동안 최고의 전기톱을 고를 것입니다. 그리고 5분 만에 모든 나무를 자르겠죠.
초급 개발자가 저지르는 흔한 실수는 무작정 코딩부터 시작하는 것입니다. 그들은 자신이 알고 있는 도구만을 고집하고, 이를 모든 곳에 적용하려고 애씁니다.
초급 개발자가 망치만 사용할 줄 안다면, 땅을 파는 데에도 망치를 쓸 것입니다.
그들은 다른 대안을 찾는 데 시간을 투자하지 않습니다. 조금만 더 고민하면 코드 한 줄 없이 문제를 해결할 수 있는데도 말이죠!
10x 개발자는 초급 개발자가 몇 주 동안 땀을 흘려 완성할 일을 올바른 도구를 사용하여 단 10분 만에 완료할 수 있습니다. 여기에서 10배의 생산성 차이가 벌어집니다.
최근에 저는 이제 갓 졸업한 후배 엔지니어와 누가 자신의 홈페이지를 더 빨리 만들 수 있는지를 두고 내기를 했습니다. 제 후배는 2주 동안 천 줄 이상의 코드를 작성했습니다. 그리고 2주가 지나도 여전히 코드를 짜고 있었죠. 저는 단 한 줄의 코딩 없이 하루 만에 홈페이지를 만들었습니다. 여기에서 제가 만든 홈페이지를 보실 수 있습니다.
후배에게 어떻게 작업했는지 물어보니 왜 그렇게 오랜 시간이 걸렸는지 명확해졌습니다.
“학교에서 배운 리액트(React)[3] 앱을 제작 방식에 따라 맨땅에서 코딩을 시작했죠. 하지만 이미지와 CSS 작업이 너무 어려웠어요. 그리고 제가 만든 앱을 어떻게 배포하는지 몰랐어요. 그래서 AWS에서 배포 스크립트를 작성하려 노력했지만 콘솔 사용법이 쉽지 않았습니다. 그런데 마이크로 인스턴스와 라지 인스턴스는 어떤 차이점이 있나요?"
이 엔지니어의 설명 곳곳에서 중요한 핵심을 놓치고 있다는 사실을 발견할 수 있습니다. 우선 제 후배는 다음과 같은 부분을 놓쳤습니다.
백지에서부터 모든 기능에 대한 주석을 작성해야 한다고 상상해 보세요. SEO가 제대로 작동하는지 확인하는 것 또한 보통 일이 아닙니다. 이러한 기능은 올바르게 구현하려면 개발팀이 투입되어야 합니다. 2주가 지나도 완성하지 못한 것은 당연한 일입니다.
이는 정말 간단하게 고칠 수 있는 부분이지만, 너무 많은 개발자가 놓치고 있는 부분이라 반드시 언급하고 싶습니다.
초급 개발자는 고급 개발자가 마치 고독한 천재와 같다는 착각을 합니다. 물론 여러분이 문제를 계속 붙잡고 있다 보면 해답을 얻을지도 모르죠.
하지만 이 둘 사이에는 큰 차이점이 있습니다. 가장 큰 차이는, 초급 개발자는 스스로 상황을 판단하고 정보를 해석할 능력이 부족하다는 것입니다.따라서 도움을 요청하는 대신 자신이 작성한 코드를 한 줄씩 살펴보며 고민에 빠집니다. 동료에게 질문하면 5분 만에 해결될 간단한 문제임에도 말이죠.
경험이 부족한 엔지니어라도 도움을 적절히 구한다면 홀로 일하는 경력 많은 엔지니어를 이길 수 있습니다.
때로는 계속하기 위해 추가 컨텍스트가 필요하다는 것이 분명합니다. 예를 들어, 다음과 같은 경험이 없다면 이해하기 힘든 부분입니다.
위와 같은 부분은 아무리 혼자서 고민해도 알기 힘든 부분이며 다른 누군가에게 도움을 청하는 것이 훨씬 효율적입니다. 도움을 구하는 것을 두려워하지 마세요!
10x 개발자는 현명한 투자자입니다.
그들은 자신의 일이 투자라는 것을 이해하고 있으며, 투입한 시간보다 투자에 대한 보상이 훨씬 커야 한다고 생각합니다. 또한, 그들은 기회비용을 잘 이해하고 있습니다. 한 기능을 구축하는 데 들어간 시간만큼 다른 기능의 개발을 중단됩니다.
엔지니어는 항상 기회비용을 저울질해야 합니다. "모든 요구사항 중 지금 개발하고 있는 기능이 가장 가치 있는 것인가요?"
그들은 코드가 비즈니스 목표를 달성하기 위한 수단이라는 것을 이해합니다. 코드 없이 목표를 달성할 수 있다면 더욱 좋은 것입니다. 직접 작성하는 코드가 적으면 유지 보수해야 할 코드도 적어지는 일석이조 효과를 거둘 수 있습니다.
많은 초급 개발자들이 이러한 비즈니스 목표를 간과하는 것을 자주 보았습니다. 예를 들어:
10x 개발자의 높은 생산성은 다음과 같이 계산할 수 있습니다. 초급 개발자가 수익을 창출과 무관한 기능 구현에 2시간을 낭비하고, 고급 개발자는 5배의 수익을 내는 간단한 코드 변경에 1시간을 투자한다면 10배의 생산성 차이가 발생합니다.
5배의 수익을 창출하는 작업을 1/2시간 만에 해냈으니 10배의 가치를 제공하게 된 셈이죠.
가장 유능한 개발자와 그렇지 않은 개발자를 구분 짓는 차이는 소프트 스킬입니다. 앞서 소개한 모든 지침을 충실히 따르는 개발자라도 같이 일하기 힘들다면 소용이 없습니다.
여러분은 좋은 개발자가 되기 위해 열심히 일했습니다. 하지만 엔지니어링은 팀플레이입니다. 당신의 노력이 당신의 자존심 때문에 물거품이 되지 않도록 하세요. 그리고 항상 기억하세요.
개발자는 무엇보다도 가치 전달을 우선해야 합니다.
[1] 10x 프로그래머 또는 10x 엔지니어라고도 부르며, 다른 개발자에 비해 10배의 생산성을 보여주는 독보적인 실력의 개발자를 말함.
[2] 코딩 테스트 및 알고리즘 풀이 사이트.
[3] 사용자 인터페이스 개발을 위해 페이스북에서 만들고 공개한 오픈소스 자바스크립트 라이브러리.
[4] 특정 소프트웨어 시스템, 응용 소프트웨어, 소프트웨어 구성 요소를 빌드하기 위해 사용되는 소스 코드의 전체 집합.
<원문 링크>
How to Be a 10x Software Engineer
위 번역글의 저작권은 Michael Lin에게 있으며, 요즘IT는 해당 글로 수익을 창출하지 않습니다.