GN⁺: "보통(Normal)" 엔지니어는 훌륭한 팀의 핵심임
(spectrum.ieee.org)- 소프트웨어 업계에서는 동료보다 10배 더 생산적이라는 즉 "10x 엔지니어"에 대한 신화가 존재함
- 그러나 이러한 개념은 근거가 빈약하고, 편견을 강화하거나 비현실적인 기준을 설정할 위험이 있음
생산성을 측정하는 것은 복잡하고 불완전함
-
생산성을 어떻게 측정할 것인가?
- 엔지니어가 다루는 분야는 다양함: 마이크로프로세서, IoT, 데이터베이스, 웹 서비스, UX 등
- 사용하는 언어와 프레임워크도 다양함: Golang, Python, COBOL, Lisp 등
- 인접한 기술, 시장, 제품에 대한 전문 지식이 필요함: 보안, 데이터 시각화, 마케팅, 재무 등
- 개발 단계와 제품의 규모도 다름: 화성 탐사 로버인지, 단순한 소프트웨어인지에 따라 다름
-
기술은 변함
- 과거에 뛰어났던 엔지니어도 시간이 지나면서 특정 기술에서 뒤처질 수 있음
- 특정 분야에서 "10배 엔지니어"였더라도, 다른 분야에서는 평균 수준일 수 있음
소프트웨어는 엔지니어가 아니라 팀이 소유함
- 소프트웨어의 품질은 개인의 성과가 아니라 팀의 성과에 의해 결정됨
- 개인이 아무리 빠르게 코드를 작성해도 팀의 프로세스가 느리면 결과적으로 속도는 같아짐
- 코드 작성보다 테스트, 리뷰, 배포, 유지보수에 더 많은 시간이 소요됨
- 특정 엔지니어가 소프트웨어의 소유권을 가지면 그 엔지니어가 사라질 경우 큰 위험이 발생함
- 팀 중심의 소프트웨어 개발 구조가 장기적으로 더 안정적임
최고의 엔지니어링 조직은 "보통" 엔지니어가 뛰어난 성과를 낼 수 있는 곳임
- 최고의 엔지니어링 조직은 꼭 뛰어난 엔지니어들만으로 이루어진 곳이 아님
- 평범한 엔지니어가 일상적으로 좋은 성과를 내고, 지속적으로 제품과 비즈니스를 발전시킬 수 있는 환경이 중요함
- 팀이 시스템을 이해하고, 코드 배포, 사용자 응답, 문제 해결을 일상적으로 수행할 수 있어야 함
- 최고의 엔지니어 조직은 보통의 엔지니어가 성장하고 성과를 낼 수 있는 환경임
"보통" 엔지니어의 중요성
- 소프트웨어 업계는 "똑똑한 사람"을 중시하는 경향이 강함
- 넷플릭스는 "상위 10%"의 인재를, 코인베이스는 "상위 0.1%"의 인재를 선호한다고 밝힘
- 그러나 대부분의 사람은 평범함 → 평범한 사람이 성과를 낼 수 있는 시스템이 필요함
- 소프트웨어 엔지니어는 타고나는 것이 아니라 훈련과 경험으로 성장함
"보통 사람"을 위한 소시오테크니컬 시스템 구축
- 시스템은 "보통 사람"이 쉽게 사용할 수 있도록 설계되어야 함
-
보통의 인간 특성을 고려해야 함:
- 확인 편향, 최근 편향, 후광 효과 등 인지 편향 존재
- 피로감, 감정 상태가 성과에 영향 미침
- 알람이 새벽 3시에 울리면 오후 3시보다 오류 발생 가능성이 높아짐
- 시스템이 직관적이고 사용하기 쉬우면 엔지니어의 에너지가 제품 개선에 집중될 수 있음
뛰어난 엔지니어 조직은 세계적 수준의 엔지니어를 양성함
- 뛰어난 엔지니어링 조직은 뛰어난 인재를 보유한 곳이 아니라, 평범한 엔지니어가 성장할 수 있는 곳임
- 좋은 조직에서는 평균 수준의 엔지니어도 지속적으로 성과를 내고 성장할 수 있음
- 최고의 엔지니어는 이러한 환경에서 자연스럽게 배출됨
"최고의 사람"보다 "적합한 사람"을 고용해야 함
- "최고의 인재"보다 "우리 팀에 적합한 인재"를 찾는 것이 중요함
- 시스템이 개인의 성과보다 팀의 성과를 촉진해야 함
- 개별 성과보다 팀워크와 협업이 중요한 환경이 필요함
- 포용적이고 공정한 문화는 성과를 높이고, 다양한 배경의 엔지니어가 성장할 수 있는 기회를 제공함
결론
- "10배 엔지니어"는 현실적으로 존재할 수 있으나, 이를 팀의 성과와 연결시키는 것은 어렵고 위험함
- 뛰어난 엔지니어 조직은 소수의 천재가 아니라, 평범한 엔지니어가 성과를 낼 수 있는 구조를 갖춘 곳임
- 시스템이 개인의 성과보다 팀의 성과를 강화해야 함
- 포용적인 문화와 시스템을 통해 평범한 엔지니어가 성장하고 성과를 낼 수 있는 환경이 핵심임
Hacker News 의견
-
소프트웨어 엔지니어링이 특별하다는 생각은 독이 되는 경향이 있음
- 금융 분야와 비슷하게 개인의 가치를 과대평가하는 경향이 있음
- 일을 잘하고 퇴근하는 것이 중요하며, 과도한 근무 시간은 시스템의 취약성을 나타냄
- 꾸준하고 신중한 노력이 중요함
-
"정상적인" 엔지니어는 없으며, 다양한 수준의 개발자가 존재함
- 뛰어난 팀을 만들기 위해서는 능력 있는 엔지니어가 필요함
- 그러나 그런 엔지니어를 찾는 것이 어려움
-
소프트웨어는 팀이 아닌 개인이 개발함
- 복잡한 프로젝트는 보통 한 명의 뛰어난 사람이 주도함
- 팀을 구성하는 것은 끊임없는 도전임
-
노동 계급의 비인간화와 분류에 반대함
- 훌륭한 팀의 핵심은 훌륭한 리더십임
- 팀이 있어야 리더가 존재할 수 있음
-
IEEE가 클릭베이트 같은 내용을 다루는 것에 실망함
- 생산성을 측정하는 방법에 대한 오해가 있음
- "정상적인" 소프트웨어 엔지니어라는 개념에 의문을 가짐
-
10배 엔지니어는 창의적이며 사용자 경험과 코드 유지보수에 신경 씀
- 1배 개발자는 결과만 중시하여 갈등을 초래함
-
10배 엔지니어라는 개념은 과장되었지만, 많은 일을 하는 몇몇 사람들이 있음
- 보상이 비례하지 않음에도 불구하고 일에 몰두하는 이유를 이해하기 어려움
-
엔지니어링 작업은 다른 직업과 다른 특성을 가짐
- 성과는 엔지니어-제품 쌍의 속성임
- 성과를 정량화하기 어려움
-
다른 사람들과 비교해 무력감을 느낄 때가 있음
- 문제를 해결할 때 자신감을 회복함
- 생산성은 명확한 목표를 가질 때 높아짐
- 속도는 마법이 아니며, 특정 방식으로 달성됨
-
많은 엔지니어가 돈을 위해 일하며, 열정이 없으면 뛰어난 엔지니어가 되기 어려움
- 개별적인 기술은 연습과 재능에 의해 영향을 받음
- 경험이 지능보다 더 유용할 수 있음