GN⁺: 당신 회사는 주니어 개발자가 필요해요
(softwaredoug.com)주니어 엔지니어를 고용해야 하는 이유
- 최근 빅테크 기업들은 주로 "즉시 투입 가능한" 스태프 개발자들을 선호함
- AI가 주니어 개발자를 완전히 대체할 것이라는 의견이 많음
- 그러나 주니어 직원의 존재 이유는 단순한 노동력 제공이 아닌, 심리적으로 안전한 문화와 혁신을 촉진하는 데 있음
주니어 인재가 팀에 미치는 영향
- 주니어 인재는 팀이 가르치고, 코칭하고, 협력하도록 강제함
- Nonaka와 Takeuchi의 'The Knowledge-Creating Company'에서 일본 기업들이 지식 창출에 집중하여 혁신을 이끌었다고 주장함
- 혁신적인 기업은 지식을 가르치고, 확산시키고, 공유하는 것을 우선시함
- 지식 발견 자체가 혁신임
- 주니어는 회사의 지식을 흡수하고 재처리하여 명시적인 지식으로 변환함
- 주니어는 팀의 중복성을 제공하여, 버그 수정 및 야간 근무 등의 단순한 팀 필요를 충족시킴
제너럴리스트가 전문가보다 더 나은 혁신을 가져옴
- Range라는 책에서는 "제네럴리스트가 종종 혁신적인 아이디어를 제시한다"고 주장
- 전문가가 아닌, 자전거를 만지작거리던 라이트 형제가 결국 비행기를 발명한 것이 전형적인 예시임
- NoSQL 데이터베이스는 관계형 데이터베이스 전문가가 아닌, 분산 시스템을 만지작거리는 사람들로부터 나옴
- 주니어 직원들은 소크라테스식 대화를 통해 문제를 해결하려고 함
- 전문가들은 자아나 맹점으로 인해 명백한 해결책을 보지 못하는 경우가 많음
- 주니어들은 열심히 부딪히고, 때로는 시니어들이 너무 어렵다고 확신한 문제를 해결하기도 함
- 주니어들은 종종 실패하는 "바보 같은" 일을 시도하지만, 때로는 전문가들이 오랫동안 지녀온 가정에 얼마나 눈이 멀었는지 보여줌
- 위대한 아이디어 중 일부는 주니어 직원들로부터 나옴
- 잭 도시는 팟캐스트 회사의 주니어 직원으로 있을 때 트위터에 대한 아이디어를 냄
- 포스트잇은 3M의 주니어 직원이었던 스펜서 실버와 아트 프라이가 발명함
- 파이어폭스는 넷스케이프에서 일하던 블레이크 로스의 사이드 프로젝트였음
- 주니어들은 시니어보다 더 다양한 배경을 가지고 있으며, 시니어들이 완전히 놓치는 사고방식과 관점으로 이어짐
주니어는 심리적 안전을 의미하며, 이는 더 많은 혁신을 의미함
- 조직 문헌에서 심리적 안전이라는 용어는 1999년 Amy Edmonson의 논문에서 유래함
- 핵심 인용문: "팀의 심리적 안전은 학습 행동과 관련이 있지만, 팀 효능감은 그렇지 않음" (효능감 == 인지된 능력)
- 코칭이 규범인 환경을 조성하면 심리적 안전이 높아짐. 팀원들은 기꺼이 실수를 인정하고 오류를 보고함
- 요약하면, 학습 문화는 심리적 안전을 낳음. 심리적 안전은 학습을 낳음. 학습과 혁신은 함께 함
- 그룹 응집력과는 다소 대조적임
- 그룹 응집력은 오랜 기간 함께 일한 동료들의 밀접한 관계를 의미함
- 이러한 응집력은 다른 사람의 견해에 반대하고 도전하려는 의지를 감소시킬 수 있음 (집단사고 현상)
- 이는 대인 관계에서의 위험 감수 부족을 의미함
- 장기 동료로 구성된 안정적인 팀은 집단사고에 빠지고 혁신 능력을 잃게 됨
- 그들은 때로는 외부 아이디어와 경험에 대한 면역 체계를 형성함
- 누군가, 특히 주니어를 온보딩하는 것은 짜증나는 일로 보일 수 있음. 동료들은 가르치고 배우는 것을 즐기지 않기 때문
- 우리는 모두 자신의 지식 사일로에 살면서 자신의 일을 다른 사람에게 공개하는 것을 꺼리는 완고한 직원을 만난 적이 있음
- 그들은 "학습 행동"이라는 근육을 잃어버림
- "학습 행동"은 실험할 수 있는 능력을 포함함**
- 이는 더 많은 팀이 갖기를 바라는 것
- 이는 새로운 접근 방식을 시도하고, 더 많은 A/B 테스트를 실행하며, 효과가 없을 수도 있지만 (때로는 효과가 있는) 제품 방향을 기꺼이 시도하는 것으로 해석됨
- 창업자들은 종종 "빠르게 실패하라"고 말하지만, 창업자/관리자 등도 자신의 최악의 적이 될 수 있음: 이미 모든 답을 가진 전문가만을 원하고, 새로운 답을 찾고자 하는 주니어는 원하지 않음
주니어를 고용하지 않으면 당신의 조직이 겪게되는 문제
- 앞서 얘기한 많은 주제들이 겹치기 시작함:
- 배우기를 원하는 주니어를 고용할 것
- 가르치기를 원하는 시니어를 고용할 것
- 가르칠 수 없는 사람은 "하는 것"도 허용되어서는 안될 수도 있음
- 팀은 건강한 대학 연구실과 매우 유사함
- 플라톤적 이상의 시니어는 열린 마음을 가지고 도전받기를 열망함
- 새로운 길을 찾기 위해 자신의 전문성을 기꺼이 버리고자 함
- 스펀지처럼 지식을 흡수하려는 열정으로 들어오는 주니어들과 함께, 순진한 질문을 통해 새로운 아이디어를 이끌어내고 기반을 흔듦
- 이것이 바로 높은 성과를 내는 팀에 속해 있는 것 같은 느낌
- 개인은 아이디어에 개방적이고, 공을 기꺼이 나누며, 비난을 피함
- 지속적으로 출시(Shipping)하고, 성공과 배움을 공유하며, 팀을 믿음
- 이는 퍼즐의 50%에 불과함 (개인적 의견)
- 나머지 50%는 이 팀을 보호하고, 내부의 혼란을 일관된 이야기로 팔며, 투자자 및 이해관계자와 협력하여 난잡한 실험을 진보의 영광스러운 이야기로 바꾸는 "외부 세계"와의 인터페이스가 필요함
- 안타깝게도, 많은 임원들이 이러한 리더십의 겉모습을 전체 시스템으로 오해하고, 그것을 작동하게 만드는 가르침과 학습의 내부 연소 엔진을 무시함
GN⁺의 의견
- 주니어 개발자를 고용하는 것은 단순히 코드를 작성하는 인력을 확보하는 것 이상의 의미가 있음. 그것은 조직 문화와 혁신 능력에 직결되는 문제임
- AI 기술의 발전으로 주니어 개발자의 역할이 위협받고 있다고 생각할 수 있지만, 오히려 AI와 협업하며 새로운 가치를 창출할 수 있는 기회로 삼아야 함
- 주니어 개발자를 적극적으로 채용하고 육성하는 기업이 장기적으로 더 큰 경쟁력을 가질 것임. 단순히 눈앞의 성과에 집착하기보다는 조직의 지속가능한 성장을 위해 투자해야 함
- 주니어 개발자 채용이 어려운 상황이라면, 사내 교육 프로그램을 강화하거나 인턴십 제도를 활용하는 등 다양한 방안을 모색해 볼 수 있음
- 무엇보다 경영진과 리더들이 주니어 인재의 가치를 제대로 인식하고, 이들을 육성하고 활용하기 위한 장기적 비전을 제시해야 함
전반적으로 동의하는데 주니어 개발자를 채용하는건 하나의 예가 될 것 같아요.
비전문가(해당 도메인을 잘 모르는) 개발자도 비슷하지 않을까 생각은 드네요.
생각하지 못했던 관점이라 좋네요.
주니어는 회사의 지식을 흡수하고 재처리하여 명시적인 지식으로 변환함
이 부분이 특히 공감되고, 동료도 명시적인 지식으로 변환하려고 노력하게 되는 거 같아요.
코드 리뷰만 하더라도 경험이 있는 사람은 직감적으로 피하지만, 주니어는 시도하게 되고, 설득하기 위해서 지식을 정리하고 공유하게 되는 거 같아요.
Hacker News 의견
-
코드 리뷰를 통해 개발자들이 코드 품질을 유지하고 학습할 수 있음
- 주니어 개발자들이 질문을 통해 시니어 개발자들이 자신의 코드를 더 잘 이해하게 됨
- 소크라테스식 방법론을 통해 시니어 개발자들이 코드의 개선점을 찾을 수 있음
-
John Ousterhout의 "A Philosophy of Software Design" 원칙을 따름
- 코드 주석은 장기 유지보수와 팀 학습에 도움을 줌
- 클래스, 메서드, 변수 이름을 신중하게 선택하여 코드가 이야기처럼 읽히도록 함
-
주니어 개발자는 가이드가 필요함
- 적절한 작업 정의와 코드 리뷰 프로세스가 없으면 주니어 개발자를 고용하는 것은 비효율적임
-
우리는 주니어 개발자만 고용하는 회사임
- 고등학생 인턴을 통해 인재를 발굴하고 지역 인재를 유지함
- 대규모 확장을 목표로 하지 않는 회사에 적합함
-
모든 제네럴리스트가가 주니어는 아니며, 모든 주니어가 제네럴리스트는 아님
- 산업에는 더 많은 경험 있는 제네럴리스트가 필요함
-
많은 회사가 주니어 개발자를 고용하지 않음
- 주니어 개발자에게도 높은 경력을 요구하는 경우가 많음
-
주니어 개발자를 잘못 고용하면 코드베이스에 악영향을 미칠 수 있음
- 시니어 개발자를 잘못 고용하면 더 큰 비용이 발생함
- 주니어 개발자를 잘 고용하면 비용 대비 높은 성과를 얻을 수 있음
-
주니어 개발자를 고용하고 교육하는 것은 산업의 건강에 중요함
- 많은 회사가 시니어 개발자를 원하지만, 주니어 개발자를 시니어로 성장시키려 하지 않음
-
시니어 개발자가 떠날 때를 대비해 주니어 개발자를 고용하고 교육해야 함
- 주니어 개발자를 고용하고 교육하는 것은 어렵지 않음
-
주니어 개발자가 효과적이지 않을까봐 두려워하는 경우가 많음
- 주니어 개발자를 고용하고 교육하는 것이 산업 문제 해결의 한 방법임
-
주니어 개발자 성공 전략
- 똑똑하지만 경험이 부족한 주니어 개발자를 고용하고, 시니어 개발자와 무제한으로 시간을 보낼 수 있도록 함
- 프로젝트를 시연하게 하고, 어려운 부분을 단순화함
- 주니어 개발자를 AI로 대체하려는 생각은 어리석음