승진하려면 코딩 실력만으로는 부족하더라
두 번 승진 누락되고 세 번째에 성공한 이야기, 실력 외에 필요한 것들
두 번 떨어졌다
시니어 승진 심사에 두 번 연속 누락됐다. 첫 번째는 "아직 이르다"는 피드백, 두 번째는 "기술은 좋은데 임팩트가 부족하다"는 피드백. 솔직히 기분이 나빴다. 코드 퀄리티는 팀에서 상위권이었고, 코드 리뷰도 가장 많이 했다. 왜 안 되는지 이해가 안 됐다.
3개월간 불만에 찬 채로 일했다. 나보다 코딩을 못하는(라고 내가 생각한) 동료가 먼저 승진한 걸 보면서 "정치판이네"라고 생각했다.
(근데 돌이켜보면 그 동료가 정치를 잘 한 게 아니라, 내가 부족한 부분이 있었던 거다.)
승진은 "좋은 코드"의 보상이 아니다
이걸 깨달은 건 팀장과의 솔직한 1:1 이후였다. "코드 실력은 이미 시니어 수준인데, 영향력이 부족하다"고 했다. 영향력이 뭔데? 내가 짠 코드가 서비스에 영향을 주고 있잖아?
팀장이 설명해줬다. 시니어는 자기 코드만 잘 짜는 게 아니라, 팀 전체의 코드 퀄리티를 올려야 한다. 기술적 방향을 제시하고, 후배를 성장시키고, 다른 팀과 협업해서 조직 차원의 문제를 해결해야 한다.
나는 혼자 조용히 잘 짜기만 했다. 내 PR은 완벽한데, 팀 전체 생산성에 기여한 건 거의 없었다.
바꾼 것들
1: 기술 공유를 시작했다. 매주 30분씩 팀 내 기술 세션을 제안했다. 처음엔 3명만 왔는데, 3개월 뒤에는 8명이 왔다. TypeScript 고급 패턴, 성능 최적화 기법, 디버깅 노하우 같은 실무 중심 내용을 다뤘다.
2: 문서화를 열심히 했다. 우리 팀 온보딩 문서가 없어서 신입이 올 때마다 같은 질문을 반복했다. 내가 온보딩 가이드를 만들었더니 신입 적응 기간이 평균 3주에서 11일로 줄었다. 이건 숫자로 보여줄 수 있는 임팩트였다.
3: 다른 팀과의 접점을 만들었다. 백엔드 팀과 API 스펙 미팅을 정기적으로 잡고, 디자인 팀과 컴포넌트 시스템 논의를 주도했다. 내 역할이 "프론트엔드 개발자"에서 "팀 간 기술 허브"로 바뀌었다.
세 번째 도전에 성공
6개월 뒤 승진 심사에서 통과했다. 바뀐 건 코딩 실력이 아니었다. 같은 실력으로 영향력의 범위를 넓힌 거다. 팀장 피드백이 "기술 리더십이 눈에 보인다"였다.
승진이 목표가 되면 안 된다
이건 좀 아이러니한데, 승진에 집착하던 때보다 팀에 기여하는 데 집중하니까 자연스럽게 승진이 따라왔다. 승진을 위해 한 일이 아니라, 팀을 위해 한 일이 승진으로 이어진 거다.
근데 현실적으로 회사마다 기준이 다르다. 어떤 곳은 순수 기술력만 봐서 승진시키고, 어떤 곳은 조직 기여도를 본다. 내 경험이 모든 곳에 적용되는 건 아니다.
한 가지 실수라면, 승진 누락 후 3개월간 삐져 있던 시간이 아깝다. 그때 바로 피드백을 적극적으로 구했으면 6개월 더 빨리 승진했을 수도 있다.
결국 코딩 실력은 필요 조건이지 충분 조건이 아니다. 이걸 받아들이는 데 시간이 좀 걸렸다.