최고의 엔지니어들이 기술 결정 자체가 아니라 ‘판단이 무시된다’는 신호 때문에 떠나기 시작하는 과정과, 계층 구조가 나쁜 소식을 걸러내며 이직이 연쇄적으로 발생하는 메커니즘, 그리고 이를 막기 위한 정보 흐름 설계와 조기 개입 방법을 다룬다.
2018년, 연 매출반복(ARR) 4,000만 달러 규모의 한 SaaS 회사에서 시니어 엔지니어 한 명이 제안된 데이터베이스 아키텍처가 확장되지 않을 것이라고 6개월 동안 주장했다. 프로덕트 조직은 빨리 출시하길 원했다. 엔지니어링 리더십도 그 엔지니어의 말이 맞다고 생각했지만, 프로덕트에 맞서서 반대하지는 않았다. 결론은 정해졌다. “지금 출시하고, 나중에 리팩터링하자.” 그는 그 주에 면접을 보기 시작했다. 기술적 결정 때문이 아니었다—그런 일은 늘 있다. 그 이유는 그의 판단이 아무 의미가 없었기 때문이다. 8개월 뒤, 시스템은 매일 성능 문제를 일으켰다. 18개월 뒤, 회사는 시니어 엔지니어 다섯 명을 잃었고, 왜 그런지 진단하기 위해 프랙셔널 CTO를 고용했다.
진단은 단순했다. 임원 레벨에서는 엔지니어들이 불만을 갖고 있다는 사실을, 그들이 사직하기 전까지 아무도 몰랐다. 퇴사 인터뷰에는 “더 나은 기회”, “경쟁력 있는 보상” 같은 문구가 적혔다. CEO는 남은 엔지니어들에게 15% 인상을 승인했다. 그래도 더 많은 사람이 떠났다. 진짜 문제는 보상이 아니었다. 문제는 정보가 조직 계층을 타고 위로 올라가지 못한다는 점, 그리고 문제가 임원진에게 도달했을 때는 이미 수개월 전에 내려진 ‘퇴사 결정’으로 전이(전이·확산)되어 되돌릴 수 없게 되어 있다는 점이었다.
그 다섯 명을 대체하는 데 든 비용은 리쿠르팅 수수료, 생산성 손실, 지식 유출을 합쳐 대략 140만 달러였다. 유지(리텐션) 문제는 그보다 훨씬 적은 비용으로 해결할 수 있었다. 단, 임원들이 그 문제가 존재한다는 사실을 알았더라면 말이다. 하지만 그들은 몰랐다. 주니어 엔지니어는 시니어에게 말했고, 시니어는 매니저에게 말했고, 매니저는 그 정보를 올릴 가치가 없다고 판단했다. 임원들은 가장 마지막에 알았다.
조직은 복잡성을 관리하기 위해 계층을 만든다. 의도하지 않은 결과는, 정보가 각 레이어를 지나며 필터링된다는 것이다. 주니어 엔지니어가 기술 결정이 문제라고 시니어에게 말한다. 시니어는 엔지니어링 매니저에게 전달한다. 매니저는 그 내용이 자신을 나쁘게 보이게 만드는지, 혹은 상부에 올릴 가치가 있는지 판단한다. VP of Engineering은 전달받더라도 필터링된 버전을 듣거나, 아예 못 들을 수도 있다. CTO는 “우리가 처리 중이다”라는 말만 듣는다. CEO는 “모든 게 계획대로다”라는 보고를 듣는다.
각 레이어는 디테일과 긴급성을 조금씩 제거한다. 임원 레벨까지 도달할 때쯤이면 그것은 이미 위기이거나, 혹은 완전히 걸러져 사라진다. 이 필터링은 악의적이지 않다. 중간관리자는 “자기 레벨에서 문제를 처리하는 것”이 자신의 일이라고 믿는다. 그들은 에스컬레이션을 실패로 본다. 문제를 올리기보다는 해결책을 제시한다. 이것은 ‘프로페셔널함’처럼 보이지만, 실제로는 정보 억압으로 작동한다.
엔지니어 120명이 있는 한 소프트웨어 회사의 사례가 이를 잘 보여준다. 프론트엔드 팀은 3월에 새 대시보드의 성능 이슈를 발견했다. 4월에는 코드 리뷰에서 엔지니어들이 공개적으로 그 이야기를 하고 있었다. 엔지니어링 매니저는 5월에 이를 알았고 해결책을 조사하기 시작했다. VP of Engineering은 6월에 “대시보드 성능을 최적화 중”이라는 프레이밍으로 이를 들었다. CTO는 7월에 “어떤 성능 작업”이 진행 중이라는 정도를 알았다. 8월, 회사의 최대 고객이 대시보드가 쓸 수 없다고 항의했다. 임원진은 이를 갑작스러운 위기로 받아들이며 긴급 대응에 들어갔다. 그러나 엔지니어들은 5개월 전부터 알고 있었다.
그 결과, 자원 배분 결정을 내리는 사람들은 수개월이나 낡았고 체계적으로 나쁜 소식이 지워진 정보로 운영하게 된다. 8월에 데이터베이스가 확장되지 않을 것임을 엔지니어들은 안다. 10월에는 매니저들이 엔지니어들이 좌절하고 있음을 안다. 12월에는 VP들이 사기(모럴) 문제가 있음을 안다. 2월이 되어 CTO는 엔지니어들이 사직하고 있음을 알게 된다. 각 집단은 자신들이 적절히 문제를 처리하고 있다고 생각했다. 그러나 아무도 자신들이 정보 지연(latency)을 만들고 있었고, 그 때문에 문제를 해결 불가능하게 만들고 있다는 사실을 깨닫지 못했다.
많은 조직은 스킵레벨(임원이 여러 레벨 아래의 엔지니어와 직접 대화하는 것)을 부적절하다고 여긴다. 반대 논리는 늘 비슷하다. 중간관리자의 권위를 훼손한다, 지휘 체계를 깨뜨린다, 불신의 인상을 준다, 마이크로매니징이다. 이런 우려는 조직 건강을 위한 고려처럼 포장된다. 실제로는 중간관리자를 책임으로부터 보호하는 조직의 항체다.
주니어 엔지니어와 직접 대화하는 CTO는 실제로 무슨 일이 벌어지는지 듣는다. 필터링된 보고서에 의존하는 CTO는 관리자가 들려주고 싶은 것만 듣는다. 스킵레벨 금기는 후자를 보장한다. 중간관리자는 정보 흐름을 통제할 수 있어 이 구조를 선호한다. 그들은 해결한 문제만 보여주고, 자신을 나쁘게 비추는 문제는 숨길 수 있다. 조직은 작은 문제를 위기로 키우는 정보 지연이라는 대가를 치른다.
스킵레벨에 반대하는 경제적 논리는 “임원 시간은 비싸니 전술적 디테일이 아니라 전략에 써야 한다”는 것이다. 하지만 전략적 결정이 체계적으로 잘못된 정보 위에 서 있다면 이 논리는 무너진다. 매주 몇 시간이라도 전 레벨의 엔지니어와 대화하는 CTO는 무엇이 실제로 망가졌는지, 무엇이 생산성을 실제로 막는지, 누가 마음속으로 이미 퇴사한 상태인지 알게 된다. 이 정보는 직접적인 전략적 가치가 있다. 어디에 자원을 배분해야 하는지, 어떤 매니저가 효과적인지, 어떤 기술적 베팅이 실패하고 있는지 드러낸다. 반대로 3~4개 레이어를 거친 보고서에 의존하는 것은 시간당 비용은 싸 보이지만, 잘못된 의사결정의 비용은 훨씬 비싸다.
필요한 시간 투자는 거창할 필요가 없다. 매주 몇 시간을(정확한 양보다 일관성이 더 중요) 레벨을 가로지르는 직접 대화에 배정하면 ‘그라운드 트루스(현실 정보)’를 얻을 수 있다. 조직이 성장할수록 개인당 빈도는 줄어들지만 커버리지는 유지된다. CTO는 매달이 아니라 분기마다 한 번씩 각 엔지니어와 이야기할 수도 있다. 이는 임원 캘린더를 잠식하지 않으면서도 현실과의 연결을 유지한다. 그리고 이 대화를 가진 엔지니어들은 매니저에게는 절대 말하지 않을 것들을 말해준다. 정식 채널로는 3~6개월 뒤에야 들을 문제를 더 일찍 듣는다. 조기 경보는 개입 비용을 낮춘다.
한 결제 회사는 한 분기에 시니어 엔지니어 세 명을 잃은 뒤 이를 깨달았다. 새 CTO는 매주 오피스 아워를 열어 어떤 엔지니어든 30분을 예약할 수 있게 했다. 아젠다 필요 없음, 매니저 승인 필요 없음. 첫 달에 드러난 사실은 이랬다. 배포 시스템이 너무 불안정해서 엔지니어들은 주말 호출을 두려워하며 금요일 배포를 피했다. 모니터링 시스템은 오탐이 너무 많아 엔지니어들이 경보를 무시하는 법을 학습해버렸다. API 문서는 너무 낡아 신규 엔지니어가 문서가 아니라 시행착오로 첫 달을 보냈다. 이 모든 것은 각 매니저가 “처리하고 있다”고 생각했기에 정상 채널로 임원 레벨까지 올라오지 못했다. CTO는 분기 내에 세 문제를 모두 해결하는 데 예산을 배정했다. 6개월 뒤 자발적 이직은 거의 0에 가까워졌다.
엔지니어는 퇴사 인터뷰가 체계적으로 오진하는 이유로 떠난다. 보상은 측정 가능하고 사회적으로 말하기 쉬워서 언급된다. 실제 이유는 말로 표현하기 어렵고 어색할 수 있다. 반복적으로 나타나는 패턴은 세 가지다.
에이전시(주도권)의 상실. 엔지니어는 실패할 것을 아는 시스템을 만들라는 지시를 받는다. 비기술적 이유로 기술적 판단이 지속적으로 뒤집힌다. 문제를 일으킬 결정을 보는 동시에, 우려를 제기하고, “그냥 구현하라”는 답을 듣는다. 예측된 실패가 발생하면, 막지 못했다는 이유로 비난받는다. 이는 자존심이나 ‘엔지니어가 권력을 원해서’가 아니다. 전문가 판단을 요구해 놓고 그 판단을 무시하는 문제다.
한 핀테크 회사는 검증된 솔루션을 쓰지 않고 자체 인증 시스템을 만들기로 했다. 시니어 엔지니어들은 “차별화되지 않는 기능에 불필요한 리스크”라고 주장했다. 프로덕트 매니지먼트는 특정 사용자 플로우를 지원하려면 커스텀이 필요하다고 주장했다. 엔지니어링 리더십도 시니어 의견에 동의했지만 반대하지 않았다. 커스텀 인증 시스템은 첫 달에 보안 취약점 세 개를 포함한 채 출시되었고, 긴급 패치가 필요했으며, 매출을 만드는 기능에 쓸 수 있었던 6개월의 엔지니어링 시간을 소모했다. 이에 반대했던 시니어 엔지니어는 결정이 확정된 그 주에 면접을 보기 시작했다. 그는 자신이 예견한 실패를 기다릴 필요가 없었다.
경제적 비용은 낭비된 구현 시간 + 지속적인 유지보수 부담 + 엔지니어의 이탈(디스인게이지먼트)이다. 회사는 연 1만2,000달러에 살 수 있는 것을 18만 달러를 들여 만들었다. 떠난 엔지니어는 제품 로드맵 우선순위를 기준으로 연간 반복 매출(ARR) 40만 달러를 만들 기능을 구축했을 것으로 추정된다. 그의 판단을 무시한 결정은 대체 비용을 제외하고도 첫해에만 약 58만 달러의 손실을 만들었다.
기술 부채가 ‘상환 불가능’해진다. 팀은 중요한 인프라 작업을 식별한다. 데이터베이스 복제, 배포 자동화, 모니터링 개선. 하지만 분기마다 기능 개발에 밀려 계속 뒤로 간다. 엔지니어들은 시스템이 부하를 버티지 못하고 비틀거리는 것을 보며, 무엇이 언제 어떻게 깨질지 정확히 안다. 그리고 깨지면 “왜 예방하지 않았냐”는 질문을 받는다. 세 번째로 우선순위에서 밀린 뒤, 그들은 인프라를 주장하는 것을 멈춘다. 그들은 자신이 예측했고 고치려 했으나 막혔던 실패로 인해 비난받고 싶지 않아서, 불가피한 위기 전에 떠난다.
한 이커머스 회사는 18개월 동안 데이터베이스 인프라 작업을 미뤘다. 엔지니어들은 리드 레플리카를 도입하고 쿼리 성능을 개선할 예산을 요청했다. 매 분기 기능 개발이 우선이었다. 부하는 매년 40% 증가했지만 인프라는 그대로였다. 19개월째에 데이터베이스가 플랫폼 전체의 병목이 되었다. 피크 시간대 응답 시간이 200ms에서 4초로 악화되었다. 전환율이 떨어지며 매출이 감소했다. 회사는 긴급 인프라 업그레이드에 24만 달러를 썼고, 성능 저하 기간 동안 약 120만 달러의 매출 손실이 발생한 것으로 추정됐다. 인프라 작업을 요청했던 시니어 3명 중 2명은 이미 떠난 뒤였다. 그들은 실패 시점을 정확히 예측했고, 위기에 함께 있고 싶지 않았다.
똑똑한 사람이 멍청한 일을 강요받는다. 연봉 18만 달러를 받는 시니어 엔지니어가 사실상 폐기되어야 할 시스템을 유지보수하도록 배정된다. 의미 있는 문제보다 잡무가 우선된다. 프로세스 연극이 시간을 잡아먹는다. 아무도 믿지 않는 숫자를 만드는 추정(에스티메이션) 의식, 아무것도 바꾸지 않는 아키텍처 리뷰, 아무도 읽지 않는 문서. 경제적 낭비는 ‘프리미엄 인건비를 절반 가치의 일에 쓰는 것’이며, 동시에 시니어 인재를 역량 이하의 작업으로 번아웃시키는 것이다. 그들은 자신이 잘하는 일을 할 수 있는 곳을 찾아 떠난다.
한 SaaS 회사에는 6년 전에 만들어진 리포팅 시스템이 있었고, 연 매출 8만 달러를 만드는 고객 12명에게 제공되었다. 그 시스템은 기술 부채 때문에 지속적인 유지보수가 필요했다. 연봉 19만 달러의 시니어 엔지니어는 시간의 약 60%를 이 시스템 유지에 썼다. 회사는 사실상 연 11만4,000달러를 들여 연 8만 달러 매출을 지원하고 있었던 셈이다. 그녀가 시스템을 폐기하고 12명의 고객을 새 플랫폼으로 마이그레이션하자고 제안했을 때, “그 고객들은 전략적 관계라 계속 지원해야 한다”는 답을 들었다. 그녀는 3개월 뒤 떠났다. 대체 인력의 채용 및 온보딩 비용은 22만 달러가 들었다. 회사는 약 4만 달러로 12명의 고객을 모두 마이그레이션할 수 있었고, 그녀를 핵심 제품에 투입할 수 있었을 것이다.
경고 신호는 퇴사 수개월 전부터 존재하지만, 조직 레벨마다 다른 시점에 나타난다. 임원들은 보통 개입이 불가능해진 마지막 단계만 본다.
주니어/미드 레벨이 먼저 보는 것(시니어가 떠나기 6~12개월 전). 시니어 엔지니어가 기술 결정을 위해 싸우는 것을 멈춘다. 아키텍처 리뷰는 거수기(러버 스탬프)가 된다. “그거 예전에 해보자고 했는데 리더십이 안 된대”가 흔한 답이 된다. 기술 부채 백로그는 커지는데 할당은 없다. 주니어는 시니어들이 더 이상 반대하지 않게 된 결정을 구현하는 당사자이기 때문에 이를 알아차린다. 그들은 시니어의 조용한 이탈을 본다.
한 물류 회사의 주니어 엔지니어는 6개월 동안 이 패턴을 관찰했다. 이전에는 상세한 코드 리뷰 코멘트를 남기던 시니어 아키텍트가, 점점 모든 것을 “LGTM”(looks good to me)으로 승인하기 시작했다. 아키텍처 논의에서는 대안을 제시하지 않고 프로덕트가 원하는 대로 동의했다. 주니어가 개인적으로 이유를 묻자, 시니어는 “내 의견이 결과를 바꾸지 못한다는 걸 배웠어. 그래서 의견 내는 데 드는 시간을 아끼는 거야”라고 말했다. 주니어는 시니어가 면접을 시작하기도 전에 이미 떠날 것을 깨달았다. 3개월 뒤 사직이 있었고, 매니지먼트는 완전히 놀랐다.
시니어 엔지니어가 겪는 것(떠나기 4~8개월 전). 패턴 인식: 이건 실패할 것이고 리더십은 듣지 않을 것이다. 도덕적 상처(moral injury): 틀렸다는 걸 알면서도 만들도록 강요받는 것. 신뢰 상실: 여기서는 내 전문성이 중요하지 않다. 그들은 회의에서 논쟁을 멈추고, 기술 결정을 거수기로 통과시키며, 코드 리뷰 코멘트는 상세함에서 형식적으로 변한다. 임원에게는 “이제 덜 싸우고 더 정렬됐다”는 성숙처럼 보이기도 한다. 사실은 체념이다.
이 행동 변화는 함께 일하는 사람에게는 보이지만, 마찰이 줄어들기 때문에 종종 문제로 인식되지 않는다. 비현실적인 일정에 반대하고 기술 접근을 따지던 시니어가 갑자기 수긍하기 시작한다. 프로덕트 매니저는 기뻐한다. 엔지니어링 매니저는 “더 좋은 팀플레이어가 됐다”고 해석한다. 실제로는 그 엔지니어가 마음속으로 체크아웃했고 면접을 위해 에너지를 아끼는 중이다. 그들은 논쟁이 무의미하다고 결론 내리고, 출구를 찾는 동안 지시를 수행하기만 한다.
매니저가 보는 것(퇴사 2~4개월 전). 1:1에서의 행동 변화. 팀 논의에서의 낮은 참여. 링크드인 프로필 업데이트, 업계 행사 참석 증가, 이전보다 철저한 문서화, 자신의 시스템을 주니어에게 교육. 매니저는 높은 이직률이 자신을 나쁘게 보이게 하므로 이를 에스컬레이션하지 않는 경우가 많다. 조용히 해결하길 바란다. 명확해질 때쯤이면 그 엔지니어는 이미 오퍼를 갖고 있다.
한 미디어 회사의 엔지니어링 매니저는 시니어 엔지니어 한 명이 모든 것을 문서화하기 시작한 것을 보았다. 아키텍처 결정, 배포 절차, 시스템의 특이점까지. 매니저는 이를 긍정적으로 생각했다—드디어 부족하던 구전 지식이 문서화되는구나. 그가 놓친 것은 동기였다. 엔지니어는 보통 떠날 때 지식 공백에 대한 죄책감 때문에 문서화를 더 철저히 한다. 문서화는 마음속에서 이미 ‘전환(transition out)’이 시작되었다는 신호다. 매니저는 퇴사 인터뷰에서야 이를 뒤늦게 깨달았다.
임원이 보는 것(퇴사 0~1개월 전). “시니어 엔지니어가 퇴사 통보를 했다.” 완전한 충격. 하지만 정보는 내내 하위 레벨에 존재했다. 조직의 정보 아키텍처가 나쁜 소식을 임원 가시성에서 걸러냈기 때문에 위로 올라오지 못했을 뿐이다.
한 명의 퇴사는 데이터 포인트다. 세 명이면 남은 엔지니어가 알아차리는 패턴이다. 존경받는 동료가 떠나면, “나도 알아봐야 하나?”라는 생각이 든다. 엔지니어들은 떠나는 동료가 자신들이 모르는 무언가를 안다고 가정한다. 이 가정은 종종 맞다. 떠나는 엔지니어는 상황이 고쳐지지 않는다고 결론 내렸고 이미 대안을 탐색했다. 남은 엔지니어들은 자신들이 뭔가 놓치고 있는지 따져보기 시작한다.
외부 리크루터도 이 패턴을 본다. 팀의 링크드인 활동이 늘어난다. 같은 회사의 여러 엔지니어가 리크루터 검색에 잡힌다. 아웃리치가 강화된다. 리텐션 문제는 리크루팅 문제가 된다. 이전에는 떠날 생각이 없던 엔지니어도 전화를 받기 시작한다. 그중 일부는 매력적인 기회를 발견한다. 퇴사 속도는 가속된다.
한 클라우드 인프라 회사는 3주 사이에 시니어 엔지니어 두 명을 잃었다. 이후 3개월 동안 다섯 명이 더 떠났다. 사후 분석에서 첫 두 번의 퇴사가 광범위한 의문을 촉발한 것이 드러났다. 엔지니어들은 “왜 그들이 떠나지? 우리가 모르는 회사 재무 문제를 아는 건가?”라고 물었다. 현실은 첫 두 명이 앞서 말한 이유—에이전시 상실과 기술 부채—로 떠났다는 것이었다. 하지만 그들의 퇴사는 정보 불확실성을 만들었고, 리크루터는 이를 이용했다. 그 연쇄는 대체 비용 약 220만 달러를 만들었고, 주요 제품 이니셔티브 3개를 합산 8개월 지연시켰다.
지식 유출은 수치화하기 어렵지만, 다음 분기들에서 ‘실수’로 나타난다. 떠난 시니어는 어떤 코드 3줄이 핵심인지, 어떤 3,000줄은 지워도 되는지 알고 있었다. 어떤 고객이 왜 특수 요구사항을 갖는지 알고 있었다. 어떤 시스템이 ‘추하긴 하지만 안정적’인지, 아니면 실제로 망가졌는지 알고 있었다. 이 지식은 함께 나가고, 값비싼 실수로 재발견된다. 건드리면 안 되는 코드를 지워버리거나, 고객 워크플로가 깨지거나, 사실상 하중을 받는(load-bearing) 기술 부채였음이 드러나는 식이다.
한 결제 회사는 조정(reconciliation) 시스템을 만든 시니어 엔지니어가 떠난 지 6개월 뒤 이를 경험했다. 그 엔지니어는 특정 결제 처리업체의 API 특이점 때문에 일부 트랜잭션 타입에 특수 처리가 필요하다는 사실을 문서화하지 않았다. 그 특이점은 업체 문서에도 없었고, 그는 3년 전에 시행착오로 발견했다. 새 엔지니어가 조정 로직을 변경하자 해당 업체의 트랜잭션이 실패하기 시작했다. 회사는 2주간 디버깅했고, 결국 업체 지원 티켓을 통해 그 ‘문서화되지 않은 특이점’을 재발견했다. 그 2주는 엔지니어링 시간 약 4만5,000달러의 비용이 들었고, 수동 조정이 필요한 실패 트랜잭션 18만 달러를 발생시켰다.
보상은 일부 퇴사에서 실제 요인이다. 신호는 ‘타이밍’이다. 엔지니어가 구직을 시작하기 직전에 보상 문제를 직접 제기했고, 실제로 그들의 보상이 역할 범위 대비 시장보다 낮다면, 그것은 보상 문제다. 반대로, 퇴사 논의에서 압박을 받았을 때만 보상을 언급한다면, 아마도 보상이 진짜 이유가 아닐 가능성이 높다. 이미 다른 이유로 구직하고 있었고, 그 오퍼가 ‘정당화’를 제공했을 뿐이다.
정상적인 보상 문제는 패턴이 있다. 실제 역할 범위 대비 시장보다 현저히 낮다. 자신보다 주니어가 같은 연봉으로 들어오는 것을 본다. 책임이 늘어났는데 보상이 조정되지 않았다. 결정적으로, 구직 전에 이를 직접 말한다. “시장 대비 제가 저평가된 것 같습니다. 이야기해볼 수 있을까요?” 이건 보상으로 해결할 수 있는 보상 문제다.
‘핑계로서의 보상’은 다르다. 몇 달간 면접을 봤고, 30% 더 높은 오퍼를 받았고, 퇴사 논의에서 시장가를 언급한다. “맞춰주면 남겠냐”는 질문에 확답을 피한다. “생각해보겠지만, 이미 다른 역할을 수락했습니다.” 이런 경우 보상은 동기가 아니라 정당화였다. 앞서의 이유들로 이미 떠나기로 결정했지만, 보상을 사회적으로 말하기 쉬운 설명으로 사용하는 것이다.
테스트는 이것이다. 20% 인상이면 남는가? 그렇다면 보상이다. 아니라면 다른 문제이며, 그들은 외교적으로 말하는 중이다. 에이전시 상실, 상환 불가능한 기술 부채, 의미 없는 일 때문에 떠나는 대부분의 엔지니어는 돈만으로 붙잡을 수 없다. 그들은 업무 환경이 망가졌다고 결론 내렸다. 보상은 “더 많은 돈 때문에 떠납니다”가 “내 판단은 중요하지 않고, 실패할 걸 알면서 만들기 지쳤습니다”보다 말하기 쉬워서 설명이 된다.
한 개발자 도구 회사는 퇴사 엔지니어들과 심층 퇴사 인터뷰를 진행하면서 이 차이를 배웠다. 보상을 이유로 떠난다고 말한 8명 중, 회사는 특히 붙잡고 싶었던 5명에게 카운터 오퍼를 했다. 그중 3명은 새 역할과 같거나 더 높은 조건을 제시받고도 거절했다. 후속 대화에서 보상이 진짜 관심사가 아니었음이 드러났다. 그들은 제품 로드맵이 계속 피벗하여 일이 무의미해지는 느낌 때문에 떠났다. 퇴사 인터뷰에서는 회사 방향을 믿지 못한다는 말을 하기가 어려워 보상을 이유로 들었다.
초기 개입을 하려면, 임원들이 문제가 ‘정신적 퇴사(mental resignation)’로 진행되기 전에 들어야 한다. 그러려면 필터링 계층을 우회하는 정보 채널을 만들어야 한다. 몇 가지 효과적인 접근이 있다.
정기적인 스킵레벨 대화. 매주 몇 시간을 전 레벨에 걸친 직접 대화에 배정하면 그라운드 트루스를 얻는다. 시간은 거창할 필요가 없다. 빈도보다 일관성이 중요하다. 조직이 성장하면 개인당 대화 빈도를 줄이되 커버리지는 유지하라. 이런 대화를 하는 엔지니어들은 매니저에게 절대 말하지 않을 것—생산성을 실제로 막는 것, 문제를 만드는 기술 결정, 사기가 떨어지는 지점—을 말해준다.
내가 자문했던 한 100명 규모 엔지니어링 조직의 CTO는 매주 4시간을 스킵레벨에 배정했다. 2주 로테이션과 30분 세션으로 운영하면 한 달에 약 30명 가까이를 커버할 수 있어, 약 7개월에 조직 전체를 한 번씩 만나는 셈이 된다. 엔지니어들은 CTO 슬롯이 열려 있음을 알았고 필요할 때 예약할 수 있었다. 이는 양방향 정보 흐름을 만들었다. CTO는 현실 정보를 듣고, 엔지니어는 ‘들린다’고 느꼈다. 리텐션은 눈에 띄게 개선되었다. 자발적 이직률은 연 18%에서 연 7%로 감소했다. CTO는 개선의 원인을 조기 문제 식별로 직접 연결했다. “문제가 작고 고칠 수 있을 때 듣습니다. 예전엔 사직서가 되었을 때 들었습니다.”
외부 진단 관점. 엔지니어는 자신의 커리어에 권한이 없는 사람에게 더 솔직해진다. 프랙셔널 CTO나 외부 어드바이저가 레벨을 가로질러 인터뷰를 하면, 사람들이 실제로 생각하는 것을 듣게 된다. 내부 임원들이 같은 질문을 못 해서가 아니다. 답이 달라지는 이유는, 외부인은 일시적이고 위협적이지 않으며, 매니지먼트 평판을 보호할 이해관계가 없기 때문이다.
한 SaaS 회사는 6개월에 시니어 네 명을 잃은 뒤 프랙셔널 CTO를 데려왔다. 프랙셔널 CTO는 2주 동안 전 레벨의 엔지니어를 인터뷰했다. 결론은: 엔지니어들은 아키텍처 리뷰 프로세스를 ‘연극’으로 느꼈다. 여러 이해관계자의 피드백을 반영해 제안이 승인되더라도, 몇 주 뒤 프로덕트 결정으로 뒤집혔다. 엔지니어들은 아키텍처 리뷰가 결정을 내리기 위한 것이 아니라 책임을 분산하기 위한 것이라고 결론 내렸다. 바뀌는 게 없는데 리뷰 준비에 시간을 썼다. 회사는 아키텍처 리뷰 프로세스를 없애고, 기술 구현에 대한 엔지니어링의 거부권을 부여했다. 가치는 ‘공식적으로 인정된 문제’가 아니라 ‘실제 문제’를 진단해낸 데 있었다.
최소 한 가지는 행동으로 옮기기. 문제를 듣는 것만으로는 부족하다. 엔지니어는 우려 제기가 결과를 만든다는 것을 봐야 한다. 배포 시스템이 취약하다고 말했는데 그 분기 안에 배포 시스템이 고쳐지면, 그 엔지니어는 자신의 입력이 중요하다는 것을 배운다. 같은 문제를 반복해서 말해도 아무것도 바뀌지 않으면, 그 반대를 배운다.
한 헬스케어 테크 회사에서 한 개발자가 스킵레벨에서 CTO에게 테스트 스위트가 45분 걸려 개발이 느리다고 말했다. CTO는 왜 고치지 않았냐고 물었다. 개발자는 여러 번 올렸지만 늘 우선순위에서 밀렸다고 했다. CTO는 그 주에 예산을 배정해 개발자가 2주 동안 테스트 최적화에 집중하도록 했다. 실행 시간은 8분으로 줄었다. 개발자는 이 경험을 동료 3명에게 말했다. 그 동료들은 다른 이슈를 올리기 위해 스킵레벨을 예약하기 시작했다. 투자는 엔지니어링 시간 1만2,000달러였다. 신호는 이것이었다. “네 입력은 행동을 만든다.” 이 신호는 리텐션 가치 측면에서 1만2,000달러보다 훨씬 크다.
리텐션을 잘못 진단하는 비용은 측정 가능하다. 시니어 엔지니어 한 명을 대체하는 직접 비용은 20만28만 달러다. 리쿠르팅 수수료(보통 연봉의 2025%), 사인온 보너스, 필요 시 이사비가 포함된다. 공석 기간의 생산성 손실은 4만7만5,000달러(채용에 36개월, 연간 생산성 손실 15만 달러 가정). 온보딩으로 인한 생산성 저하는 3만5,0004만 달러(6개월 동안 50% 효율 가정). 지식 손실은 정량화하기 어렵지만 이후 분기들에서 실수, 의사결정 지연, 반복 작업으로 나타난다. 보수적으로 합산하면 시니어 한 명당 27만5,00039만5,000달러. 다섯 명이면 140만~200만 달러다.
리텐션을 ‘올바르게’ 하는 비용은 더 작지만 조직 변화를 요구한다. 실제 문제를 고치려면 로드맵 우선순위를 바꾸거나, 프로세스를 제거하거나, 아키텍처 결정에 엔지니어에게 기술적 거부권을 주어야 한다. 비용은 기능 개발을 뒤로 미루는 기회비용과, 중간관리자를 넘어서는 데 드는 정치적 자본이다. 하지만 이 비용은 실제이며, 대체 비용보다 훨씬 작다.
장벽은 비용이 아니다. 무언가가 망가져 있고, 매니지먼트가 그 문제에 기여했을 수 있음을 인정하는 것이다. 조직은 문제가 ‘인재 시장 경쟁’ 때문이라고 믿는 편을 선호한다. 그 설명은 내부 변화를 요구하지 않기 때문이다. “엔지니어는 비싸고 경쟁이 치열하다”는 말이 “우리의 의사결정 프로세스는 기술 전문성을 체계적으로 무시하고, 우리의 정보 구조는 문제가 위기로 커지기 전까지 임원이 알 수 없게 만든다”는 말보다 쉽다.
한 시리즈 B 회사는 18개월 동안 엔지니어 7명을 잃었다. CEO는 이를 시장 요인으로 믿었다. 경쟁사가 더 많이 줬고, 회사는 매칭할 수 없었고, 리텐션은 원래 불리한 싸움이라는 생각이었다. 그러나 사후 분석은 다른 이야기를 보여줬다. 7명 중 5명은 떠나기 6개월 전에 기술 결정, 프로세스 오버헤드, 프로젝트 우선순위에 대한 구체적 우려를 제기했었다. 그 우려는 임원 레벨까지 올라오지 않았다. 매니저와의 1:1에서 기록되었고 “모니터링 중”으로 표시된 뒤 에스컬레이션되지 않았다. 임원은 리텐션이 보상이라고 가정했다. 엔지니어는 자신의 우려가 중요하지 않다고 결론 내렸다. 두 집단 모두 서로가 무엇을 중요시하는지에 대해 체계적으로 잘못된 정보를 갖고 있었다.
떠나는 엔지니어는 임원이 모르는 것을 안다. 어떤 기술 결정이 실패하고 있는지, 어떤 프로세스가 시간을 낭비하는지, 어떤 매니지먼트 관행이 이탈을 만드는지. 이 정보는 조직 안에 존재하지만, 계층이 정보를 걸러내고 중간관리자가 나쁜 소식을 억제할 유인이 있기 때문에 정상 채널로 임원 레벨에 도달하지 않는다.
질문은 이것이다. 임원들은 엔지니어가 떠나기 전에 그들로부터 무엇이 망가졌는지 배울 것인가, 아니면 그 엔지니어들이 예방했을 문제를 통해 배울 것인가. 이를 제대로 하는 조직은 정보 흐름을 전략적 우선순위로 다룬다. 필터를 우회하는 스킵레벨 채널을 만든다. 필터링된 정보에 기반한 전략보다, 현실을 듣는 데 쓰는 임원 시간이 더 높은 ROI를 갖는다는 것을 이해한다. 리텐션이 대체보다 싸지만, 문제를 충분히 일찍 볼 수 있어야 고칠 수 있다는 사실을 이해한다.
이를 못하는 조직은 정보 정확도보다 매니지먼트의 편안함을 최적화한다. 스킵레벨을 부적절하다고 보고, 체계적으로 나쁜 소식이 제거된 보고서에 의존하며, 사직서가 도착할 때 리텐션 문제를 알게 된다. 그들은 수천 달러로 유지할 수 있었던 엔지니어를 수백만 달러를 들여 대체하고, 왜 최고의 사람들이 계속 떠나는지 끝내 이해하지 못한다.
계산은 단순하다. 매주 몇 시간을 엔지니어와 직접 대화하는 데 쓰는 비용은 임원 시간으로 연 5만 달러 정도일 수 있다. 시니어 한 명의 퇴사를 막기만 해도, 그 개입은 5배 이상 회수된다. 실제로는 여러 명의 퇴사를 막고, 조직 전반의 자원 배분을 개선하는 정보도 제공한다. 대안—사직서로 문제를 학습하는 것—은 시간당 비용은 싸지만 결과 비용은 치명적으로 비싸다.
2018년에 떠난 그 시니어 엔지니어는 아직 업계에 있다. 그는 이제 CTO가 정기적으로 스킵레벨을 운영하고, 엔지니어링이 기술 아키텍처에 대한 거부권을 가진 회사에서 일한다. 그는 면접을 보지 않는다. 동료들도 마찬가지다. 그 회사의 자발적 이직률은 12%로, 같은 단계의 업계 평균의 절반 이하다. 그 회사의 임원들은 문제가 되돌릴 수 없게 되기 전에 무엇이 망가졌는지 안다. 그들은 단순한 메커니즘으로 이를 배웠다. 묻고, 사람들이 말할 수 있도록 조직 구조가 정보가 필터링되지 않은 채 위로 흐르게 만들었다.
계속 읽기: 파트 2 – 엔지니어 이직을 멈추게 하는 경제적 개입. 정보 흐름은 필요하지만 충분조건은 아니다. 임원들이 문제가 있다는 것을 알면서도 여전히 행동하지 않는다면, 제약은 커뮤니케이션이 아니라 경제학이다.