3년만 하면 더 배우고, 성장할 것이 없어요 ^^
요즘 많이 듣는 이야기 중 한 3년 일하고 나면 더 이상 그 조직에서는 배울 것이 없다거나, 성장할 것이 안 보여서 조직이나 회사를 옮겨야겠다는 말을 많이 듣는다. 과연 3년이면 더 이상 잘 할 수 없을 만큼 배웠고, 충분히 행할 수 있을까?
이 이야기와 관련해서 생각나는 기사가 있다.
어느 외국계 IT 기업에서 국내 헤드헌터 업체에게 시니어 개발자를 요구했고, 헤드헨트 업체는 몇몇 후보를 그 IT 업체에게 추천했다. 외국계 기업은 몇 번이나 퇴짜를 놨다. 후에 답답해진 헤드헌터 업체가 이유를 물으니 추천된 개발자들은 익숙한 개발자들이지 자신들이 원하는 전문가는 아니었다는 것이 답이었다.
그러면서 나온 얘기가 우리나라에는 경력을 통해 능숙한 개발자는 있지만 전문가는 없다는 논의가 있었다. 참 아쉬운 이야기이다.
이와 관련해서 지디넷에 기재된 "백발의 개발자가 되기 위한 커리어 패스"글이 있다. 이를 요약하면 아래와 같다.
영국에서는 5단계로 개발자를 분류. 초급자(Novice), 초중급자(Advanced Beginner), 능숙자(Competent), 숙련자(Proficient), 전문가(Expert)
초급자: 언어와 개발 도구에 대해 경험이 전무한 초급 개발자. 어떤 매뉴얼을 따라 결과를 만들어 내는 것 가능. 혼자서 창의적으로 코드를 작성하기 어려운 단계
초중급자: 매뉴얼이 없이 어느 정도 개발이 가능한 단계. 어떤 프로그램 로직이라도 원하는 결과물을 만들어 내는 것이 가능
능숙자와 숙련자: 결과물을 빨리 만드는 것과 품질을 고려하여 지속 가능한 시스템을 만들 수 있는지의 여부에 의해 갈림. 국내의 경우 품질보다 결과를 중시하게 때문에 숙련자로 성장할 필요성을 느끼지 못해 5~7년이 지나면 개발자 레벨이 평준화(능숙자로)된다는 이야기가 종종 있음.
전문가: 개발자들의 코드를 리뷰하는 아키텍트. 주로 소프트웨어 품질을 관리. 숙련자들이 할 수 있는 실수들을 줄여줄 수 있는 능력을 가짐. 숙련자들이 하게 되는 실수들을 미리 경험해보고 다양한 경우에 대한 설계 노하우를 갖고 조언할 수 있는 레벨
자 이와 같을 때 3년 정도 지나면 더 이상 배울 것이 없거나, 성장하기 어렵다는 것이 말이 될까? 아마 그 사람은 "능숙자" 수준일 것이라고 생각된다. 업무 영역을 다양화하는 것을 비하하는 것은 아니지만 깊이를 깊게 하여 전문가 수준을 지향해야 하는 것은 아닐까?
한 번은 조직 개편으로 80여 명의 개발자들을 면담을 한 적이 있다. 이들에게 앞으로 15~20년 후에 어떻게 살고 싶으냐고 물었다. 딱 1명을 제외하고 모두 개발자로 살고 싶다고 했다. 나이 50 정도에 개발자로 살려면 전문가가 되어야 하지 않을까? 빨리 개발하는 것은 젊고 똑똑한 개발자들을 능가하기 쉽지 않을 것이다. 하지만 지속해서 학습하고 연습하고, 업무를 통해서 검증하여 전문가 수준으로 간다면 이런 개발자는 쉽게 대체 가능하지 않을 것 같다.
애자일 코칭 관련된 책(아마도 이너써클로 기억) 내용 중 아래와 같은 일화가 기억난다.
스노우보드 코치가 테니스 클럽을 방문했는데, 그날 공교롭게 코치 한 명이 결근하여 코치가 추가로 필요했다. 그래서 테니스 코치들은 스노우보드 코치에게 강습을 요청했다. 당연히 스노우보드 코치는 어떻게 자신이 강습을 할 수 있느냐고 반문을 했다. 이에 테니스 코치들은 라켓을 옆구리에 끼고 보이는 것에 대해서 강습자들에게 제안(충고)을 해 주면 된다고 했다. 1시간이 지난 후 강습자들 중 누구도 그 사람이 테니스를 못 치는 스노우보드 강사였다는 것을 알아채지 못했다고 한다.
이처럼 한 가지 영역의 대가는 다른 영역에서도 탁월한 역량을 발휘하고 심지어 훌륭한 결정을 하는 것을 현실에서 경험한 적이 있다. 반대로 다양한 분야에 대해서 고루 [얕게(능숙자 수준)] 아는 사람이 결정을 내리지 못하고 헤매는 경우도 현실에서 경험했다. 모든 것을 능숙하게 하는 풀 스택 개발자는 봤지만 모든 것을 숙련자나 전문가 수준으로 하는 개발자는 못 본 것도 생각해 볼만 일이다(그래서 마틴 파울러의 개발자는 풀스택일 필요는 없지만, 팀은 풀 스택 이여야 한다는 말이 가슴 깊게 와 닿았었다)
10년을 개발했는데 깊이가 깊어진 전문가가 아니라 1년짜리 개발 경험을 10번 한 것 아니냐?라는 수년 전의 논란도 기억이 난다.
1950~60년대에 OOP, FP 등이 나왔고 그 개념, 실천법 등은 지금도 변화하고 있다. 그런데 3년 만에 마스터한다는 것은 불가할 것이다. 나는 나이가 먹어도 개발자로 남기 위해 다양함보다는 깊이를 추구한다(깊이가 있어야 백발이 되어도 개발자로 남을 수 있다고 생각한다). 내가 위에 영국에서 나누는 숙련자나 전문가 수준은 아직 아닐 것 같다(아닌 것이 더 좋다. 그럼 성장할 수 있다는 말이니까???). 모든 개발자들이 모두 전문가 수준의 깊이를 추구해야 한다고 생각하지는 않는다. 하지만 3년 정도 일한 후에 다른 일을 하고 싶다고 이야기할 때 더 이상 배울 것이 없다, 성장할 것이 안 보인다는 말은 말았으면 좋겠다.
ps. 최근 오늘 작성한 글과 관련하여 짜증 나는 일이 있었다. 근데 그날 저녁에 두 시간 정도 코드리뷰를 하면서 성장하고자 하는 분들에게 의견을 드리고, 또 내가 한번 해보는 시간을 가지니 맘이 훌훌 풀렸다 ^^