가장 뛰어난 개발자들을 지키는 법 : https://www.daedtech.com/how-to-keep-your-best-programmers
특정한 단체 내에서의 소프트웨어 집단에 대한 이야기의 첫번째 글이다.
브루스 웹스터의 “사해 효과”를 이용해 가장 뛰어난(제일 잘 나가는) 개발자는 상황이 조금 안 좋아지면 바로 더 좋은 곳을 찾아 떠난다고 했다.
가장 재능이 없는 개발자는 다른 회사에 어필할 수 없어 그대로 머문다.
이는 최고의 선임 아키텍트라며 고연봉을 받고 영향력 많지만 실력이 없어보이는 사람을 이해하는 중요한 요소다.(개인 단계의 분석이다. 이렇게 되면 낮은 질의 개발 그룹이 발생한 원인을 이들만으로 구성되서라든지 이들이 쫓아내버렸다고 접근해야 하므로 )
소프트웨어 그룹을 망치는 것은 집단에서 발생한 독특한 역학관계가 있다고 믿는다. 사해 효과 같은 외부적인 문제도 있겠지만, 어떤 특별한 요소가 더 있다고 본다.
볼링 배우기
나는 운동을 좋아하는 편이고 모든 방면에 에이스였지만 최고인 적은 없었다. 나는 큰 노력 없이 실력과 자신감을 가질 수 있었다.
볼링은 공이 넓게 커브를 돌아 중앙으로 굴러가게끔 던진다. 나는 팔꿈치를 돌려서 그 스킬을 흉내냈고 그건 꽤 잘 먹혔다.
이 기술로 160 안팎의 점수를 낼 수 있었다.
하지만 성장이 멈췄다. 예전 매니저에게 어떻게 해야 더 성장할지 물었다.
그런 식으로 볼링은 하는 동안은 무슨 수를 써도 실력이 늘지 않을거야. 이미 한계에 다다른거지. 실력을 더 높이고 싶다면, 제대로 볼링하는 법을 배워야해. 다른 공을 사용해서, 다른 방법으로 던지고, 어른답게 제대로 손가락을 공에 집어넣어야 한다고. 그렇게 하면 지금보다 훨씬 실력이 떨어질거고, 그게 제일 견디기 어려울거야. 다시 지금의 점수를 내기 위해서는 아마 꽤 오랜 시간이 걸리겠지.
부정했지만 내 실력에 질려버렸다.(장인 수준에 도달하지 않고는 못 견디는 성격)
더 어려운 길을 택했고 공을 새로 사고 구멍을 낸 후 제대로 볼링을 쳤다. 이후 8번 정도밖에 안 쳤지만.
드레이퍼스, 가시적 성과와 성장의 구속
1980년, 드레이퍼스라는 성을 가진 형제가 기술 습득의 이론(model of skill acquisition) 이라는 것을 발표했고, 이는 학습과 그 과정, 그리고 연습 방법 등의 토론에 있어 상당한 영향을 끼쳤다. 후에 그들은 이 논문을 기반으로 한 책을 발표했고, 위키피디아에서 볼 수 있듯이 이 이론을 조금 더 현대에 맞춰 바꾸어 재구성하였다.
이 이론에 따르면 기술을 습득하는데에는 5가지 단계가 있다
- Novice(*역:초심자), Advanced Beginner(*역:숙련된 초심자), Competent(*역:실력을 갖춤), Proficient(*역:능숙함), 그리고 Expert(*역:전문가).
큰 그림을 보지 못하고 정해진 규칙만 따라가기 → 직감적으로 규칙 전반을 넘어선 큰 그림을 볼 수 있는 상태
노력과 실력 사이에 직선 관계가 존재한다고 생각하지만, 실제로 감정과 마음가짐이라는 요소가 있다.
특정 기술을 배우는 시점에 누구나 완전히 무능하고 짜증을 느낀다.
곧이곧대로 따라하는 초기 과정을 겪고 나서 연습을 통해 스스로 스킬을 익히고 낮은 곳의 열매를 따며 빠르게 성장한다.
하지만 차차 성장이 어려워진다.
Competent까지 빨랐지만, 상태 개선이나 노력하기에는 바빴기 때문에 성장은 완전히 멈췄다.
“성장의 구속”(arrested development)
•
재능의 벽
•
자발적인 성장 시도를 멈추는 마음가짐
전문가의 위치에 도달해 더이상 성장이 불가능하다고 느끼는 2번째 원인에 의해 Expert Beginner가 된다.
The Expert Beginner
Expert Beginner는 학습자가 큰 그림을 보지 못하는 단계 중에서 가장 마지막에 있다.( 자신이 Expert라고 착각중이다. )
Competent(C)는 자신을 Expert(E)라고 하기에는 너무 많은 걸 알고 있다.( 자신이 부족한 게 무엇인지를 알기 때문. )
Advanced Beginner(AB)는 이것이 불가능하다.( 더닝 크루거 효과에 따라 unskilled에 가깝다. )
AB는 C로 나아가서 자신의 위치를 자각하는 길과 E라고 착각해서 EB에 속하는 길이 있다.
재능을 느끼고 주변에 나보다 잘하는 사람이 없어서 어떤 경지에 올랐다고 착각할 수 있다.
가장 큰 문제는 꼭 틀렸다고 볼 수 없는 추론에서 성취감을 얻게 해서 더 나은 성장으로부터 멀어지게 했다는 것이다.
“10년의 경험인가 아니면 같은 경험을 10년동안 한 것인가” 라는 말을 들어본 적이 있다면, Expert Beginner는 후자의 정점이다. Expert Beginner는 매주 똑같은 볼링 기술과 습관을 이용하면서 300점중에 160점을 따는 데에 달인이 되었다. 이것은 그가 160점이 최고의 점수라고 생각하고 있기 때문이다.
소프트웨어 업계의 Expert Beginner들
볼링은 몇분 간격의 피드백이 오지만 소프트웨어는 그 텀이 길다.
하나의 프로젝트에서 개발자는 코딩, 소스코드 관리, 수정, 테스트, 이전의 디자인 설계 유지보수의 경험을 한다. 운 좋게 6개월 안에 모두 경험했다면 5년동안 10건의 경험을 가지게 된다.
이는 급성장 기간(AB 기간)이 몇 년일 확률이 높다는 것이다. 주니어, 시니어, 리드, 아키텍트, 총책임을 넘나들고 헤드헌터에게 rock star, ninja 같은 별명을 얻으면서 EB로 입장하지 않을 유일한 방법은
피어 리뷰(peer review)와 개발자 커뮤니티와의 교류뿐이다.
남 탓으로 손쉽게 인지부조화를 해소하고 도피한다.
주변 사람이나 그들 스스로 훨씬 더 많은 것을 할 수 있다는 사실을 모른다.
마치며
그들이 어디서 나타나고 왜 성장을 멈추는지 탐구했다.
한명 이상의 EB가 어떻게 다른 재능있는 구성원이 있음에도 불구하고 집단을 퇴행시키고 부패시키는지 이야기 한다.