미디엄의 'how to be a 10x engineer'라는 글을 짧게 요약하고 내 생각을 적어본다.
(글에서 시니어 개발자가 10배 더 나은 개발자고 주니어 개발자는 평범한 개발자라는 느낌을 살짝 주지만, 저자가 의도한 'junior'는 오로지 연차만을 말하는게 아닌 것 같습니다. 'junior developer'라는 단어는 '평범한 개발자'로 의역을 했습니다.)
최고의 개발자?
'최고의 개발자'란 보통의 엔지니어보다 약 10배 나은 사람을 말한다.
그들은 더 느린 속도로, 더 적은 양의 일을 할지도 모른다. 어쩌면 코드를 치는 것보다 삭제하는데 더 많은 시간을 쓸지도!
최고의 개발자 vs. 평범한 개발자
는 바로 소프트 스킬(non-technical skills) 이다.
They use the right tools, ask the right questions, and know how to prioritize.
그들은 적시적소에 맞는 툴을 쓰고 적절한 질문을 하며 우선순위를 매길 줄 안다.
뛰어난 개발자는 적절한 도구를 찾아낸다.
“내가 8시간 안에 나무를 베어야한다면 내 도끼날을 가는데 7시간을 쓰겠다.” / 링컨
평범한 개발자는 무딘 도끼로 8시간 동안 나무를 벨지도 모른다. 뛰어난 개발자는 한 시간만에 잘 드는 전기톱을 고를 것이다. 그리고 5분 후 나무를 다 벨 것이다.
평범한 개발자들이 자주 하는 실수는 무작정 코드부터 친다는 것이다. 그들은 자기가 아는 기술 하나로 모든 상황을 처리하려한다.
저자가 한 개발자에게 개인 웹사이트를 만들어보라고 했을 때 그는 그렇게 말했다. "학교에서 리액트 앱 만드는 법을 배웠어서 그걸로 기초를 만들었어. 근데 이미지랑 CSS를 제대로 배치하는게 어려웠고, 나는 배포하는 법도 몰랐어. 그래서 AWS에서 커스텀 배포를 하려고 했는데 콘솔 쓰는게 또 좀 헷갈리더라. micro 인스턴스는 뭐고 large 인스턴스는 또 뭐야?"
이때 이 개발자가 놓친 것은 이런 게 있다.
- 요구사항 정의: 검색엔진 최적화, 댓글달기, 템플릿 등에 대한 이야기가 없음
- 대안: 그는 리액트와 AWS만 알았고 그것밖에 생각하지 못했음.
뛰어난 개발자는 도움을 요청한다.
몇몇은 뛰어난 개발자가 고독한 천재라는 오해를 하곤 한다. 문제를 안고 속으로 끙끙대면 해결책이 나타날 거라고 생각한다.
팀 동료에게 질문하면 5분만에 해결될 문제를, 코드가 사골국이 될 정도로 고민하는 이들이 많다. 그러나 도움을 요청할 줄 아는 적은 경력의 엔지니어가 절대 도움을 요청하지 않는 능력있는 엔지니어보다 낫다. 도움을 요청할 땐 문제 해결에 도움이 되는 추가 맥락을 설명해주면 좋다. 예를 들어 '코드를 왜 이런 구조로 짰는지', '어디서 불러오는 API인지', '배포는 어떻게 이루어지는지' 등이 있다.
뛰어난 개발자는 비즈니스 가치를 이해한다.
뛰어난 개발자는 일이 일종의 투자라는 것을 안다. 그리고 그 투자로 얻는 수익은 그들이 공들인 시간보다 더 큰 가치를 가져야한다. 기회비용을 이해하고, 구현할 수 있는 기능을 전부 구현하는게 아니라 가장 효율적이고 효과적인 기능을 추려낸다.
결론은 소프트 스킬이다.
"유능하지만 재수 없는 놈(jerk)을 그냥 냅두지 마세요. 팀워크는 너무나 중요합니다." / Netflix CEO
이외에도 결국 최강의 개발자를 결정하는 것은 바로 소프트 스킬이다. 개발을 잘 하는 것보다 재수 없는 놈(jerk)이 되지 않는게 더 쉽다. 쓸데 없는 자존심때문에 우리의 노력이 물거품이 되지 않도록 하자.
엔지니어는 무엇보다도 가치를 우선적으로 전달해야한다.
느낀 점
첫번째로 저자가 언급한 '적절한 도구 찾기'는 내가 최근 들어 가장 절실히 느끼고 있는 것이었다.
개인 블로그를 만들면서 지킬로 했다가 리액트로 했다가 다시 지킬로 돌아왔다가... 배포를 AWS로 할까 했다가 다시 깃허브 페이지로 돌아오고...
적절한 기술을 찾아보고 선택해서 개발을 시작하는게 무작정 시작하는 것보다 더 시간을 절약할 수 있었을 텐데 말이다.
이제 슬슬 삽질을 줄이려고 노력해야겠다.
그 방법은 더 많이 찾아보는 것과 기술, 배경 지식을 더 깊게 이해하는 것. 구독하고 있는 위클리 뉴스레터들을 대충 훑을 게 아니라 흥미로운 게 있으면 들어가서 공식문서도 좀 자세히 볼 것.
또 내 블로그에도 개선하고 추가해야할 기능이 많은데, 이것들도 좀 리스트업을 해봐야겠다. 내 시간과 에너지의 기회비용을 생각하며 꼭 필요한 기능을 추가해나가자.