brunch

You can make anything
by writing

C.S.Lewis

by 민창 Feb 09. 2018

시니어 개발자로 가는길

그곳은 어디인가요.

주의 깊게 보진 않았지만 일전에 온라인에서 시니어 개발자는 무엇인가에 대해서 설왕설래가 많았던 것으로 기억한다. 사실 시니어 개발자가 되려면 어떻게 해야 하는지에 대해선 별 생각이 없이 살다가 최근 회사를 옮기면서 몇개월간 관찰한 내용을 바탕으로 이전에 보지 못했던 내용을 중심으로 메모로 남겨보려고 한다. (회사의 공식 의견과 상관 없어요 :) 시니어 개발자가 갖추어야 할 자격에 대한 이야기라기 보다는 시니어라는 타이틀을 달았을때 어떤 일들을 해야 하는지에 대한 관찰이다.


현재 회사에는 각 직군마다 레벨이 있는데 이것이 한국 대기업에서 (경험은 아니고 들어왔던) 직급과 약간 유사하면서도 좀 다른 면이 있다. 경력과 실력, 그 두가지를 직급 보다 좀 더 잘 보여주는 것 같다. 시니어라는 직함은 특정 레벨 이상을 올라가야지만 붙여주도록 되어 있다. 해당 레벨은 채용시 이미 높은 레벨로 정해지기도 하고 사내 promotion process 를 통해서 승진 하기도 한다.

시니어 레벨로의 승진 후보에 대해 이야기 하자면 기본적으로 본인이 원해야 진행이 된다. 연차나 고과에 따라 승진 대상이 된다기 보다는 우선은 본인이 특정 레벨로 올라갈 준비와 상황이 되었다고 판단 하였다면 매니저와 상의를 통해서 프로세스를 시작하게 된다.

회사에서는 각 레벨별 개발자들에게서 기대하는 역할을 비교적 명확하게 정의하고 있고 문서와 영상 등 각종 교육 프로그램을 통해서 개발자들로 하여금 본인의 레벨에서 어느 정도의 기대치를 충족시켜야 하는지 일깨워 준다. 그리고 지금 나의 업무 역량이나 위치가 이미 상위 레벨의 기대치를 충족하고 있다고 스스로 판단하는 경우에 승진 프로세스를 시작 하게 된다. 


이와 같이 승진을 위해서는 각 레벨에 걸맡는 실력을 갖추었음을 보여야 하고 승진 심사 인터뷰를 거쳐 승인을 받아야 한다. 모든 과정은 문서로 작성되어야 한다. 문서에는 본인이 진행했던 프로젝트에서 어떤 역할을 했고 어떤 결과를 딜리버리 하였으며 프로젝트 이외에 회사에서 중요하게 평가 하는 기준에 대해 어떤 강점을 가졌고 그 강점을 어떤 식으로 보였냐에 대해 기술 해야 한다. 이 때 본인이 작성한 코드와 코드 리뷰, 설계 및 디자인 컨설팅, 그 외 업무 관련 위키 문서들이 대부분 포함되어야 한다. 

회사의 문서에 대한 집착은 이러한 과정을 투명하게 할 뿐만 아니라 평소 업무의 품질을 높이는 중요한 요소가 된다. 연말에 자신이 작성한 위키를 모아서 리포팅을 하는데 코드 리뷰나 문서의 품질은 그 사람이 어떤 식으로 일하고 있는지를 단적으로 보여주는 결과물이 된다. 내가 작성한 문서를 보고 있자니 뽀록이 너무 난다. 이런 문서의 중요성 때문에 프로모션 문서를 작성하기 위한 별도의 교육을 진행하기도 한다. 일의 결과물들은 그 사람 아이디만 알면 누구나 쉽게 조회가 가능하기 때문에 승진 심사 뿐만 아니라 내부 팀이동시 그 사람을 판단하는 가장 중요한 요소가 된다. 


그렇다면 시니어 개발자에게 어떤 역할을 기대해야 할까? 사실 시니어급?으로 채용하거나 승진한 개발자들에게 실망했던 경험이 있다면 그것은 그들의 코드 품질이나 아키텍트로써의 역량이 좋을지라도 그것이 제품 뿐만이 아니라 조직 전체에 다양한 방법을 통해서 잘 전달이 안되는 경우가 많기 때문이다. 이 때문인지 회사에서는 시니어 개발자에게 다양한 역량을 명시적 또는 암묵적으로 요구한다. 시니어 개발자는 우선 그 영향력이 본인이 속한 팀을 벗어나 더 넓은 조직까지 미칠 수 있어야 한다. 이를 위해 상위 조직의 다른 시니어들과 주기적 회의나 토론을 통해서 팀의 기술 전략에 기여 해야 한다. 자신의 팀 또는 상위 조직에서 발생하는 다수의 프로젝트에 대해 디자인 컨설팅에 참여 하여 피드백을 제시 해야 한다. 채용에도 활발하게 참여 해야 한다. 채용은 회사가 더 성장 할 수 있는 가장 좋은 기회 중 하나이기 때문에 활발하면서도 높은 수준을 유지할 수 있도록 해야 한다. 우리 회사의 본사가 위치한  시애틀 지역에서는 수십회 또는 백회(명)이상 면접에 참여한 시니어들을 심심찮게 만나볼 수 있다. 일반 적인 업무 진행에 있어서도 단순 업무 보다는 좀 더 큰 단위의 프로젝트 계획하고 주도할 수 있어야 한다. 코드 수준을 높게 유지하기 위해서 특정 저장소나 제품의 모든 커밋에 대해서 최종 리뷰 그룹의 승인을 받아야 하는 경우도 있는데, 이러한 그룹에서 활동하기 위해서는 그만큼 높은 수준의 코드 리뷰 경력이 필요하다. 또한 자신 보다 하위 레벨의 개발자들의 멘토 역할도 해야 한다. 멘토는 개발 뿐만 아니라 커뮤니케이션, 목표 설정, 문서 작성, 회사 생활 전반 등 다양한 분야에서 본인이 기여할 수 있는 부분을 정하고 그 역량이 필요한 멘티와의 매칭을 통해 멘토링 프로그램이 진행된다. 


대충 생각나는 역할만 적어봐도 시니어 개발자는 이렇게 기대치가 높고 그만큼 해야할 일이 많다. 회사 마다 분위기나 생각들이 다르겠지만 지금 회사에서는 상위 레벨에 올라갈 수록 회사의 전분야에 걸쳐서 하위 레벨의 개발자보다 같은 시간에 더 많은 기여를 해야 한다. 그러기 위해서는 많은 일들을 잘 하면서도 빨리 처리해내는 능력이 중요해 보인다. 그래서 공부와 훈련을 하지 않으면 안된다. 타이틀만 보고 시니어가 되었다간 기대에 못미치는 업무 능력으로 업무 진행에 방해가 되는 블락커가 되기 마련이다. 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari