일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 페이지넘기기
- 크리스탈레포트
- 경주 동궁원
- 도시락
- Microsoft.Office.Interop.Excel.ApplicationClass’ 형식의 COM 개체를 인터페이스 형식 [출처] 오피스 에러 com구성요소 쿼리 인터페이스 오류
- 간절곶
- 2018년 12월
- 인터페이스의 COM 구성 요소에서 QueryInterface를 호출하지 못했으므로
- 픽사인콘서트
- 2019년 3월
- 밀프렙
- 2018년 10월
- 후기
- 2019년 4월
- 엑셀 레지스트리 충돌
- meal prep
- 2019년 1월
- 2019년 2월
- Crystal Reports
- 일기
- 2018년 9월
- 중소기업청년대출
- 자우림 콘서트
- 2018년 11월
- 에펠탑 나노블럭
- 2018년 8월
- 2018년 4월
- tinyglade
- 중소기업청년전세자금대출
- 엑셀 레지스트리 오류
- Today
- Total
늘 자신을 설레게 하는 쪽으로
[퍼와요]더 이상 배우려 하지 않는 개발자 : Expert Beginner의 등장 외 1 본문
[번역]더 이상 배우려 하지 않는 개발자 : Expert Beginner의 등장
[번역]소프트웨어 집단의 부패:Expert Beginner의 유산
-
아주 재미있는 칼럼 두 개를 발견하여 저장한다.
위에 굵은 글씨로 쓰여진 제목을 클릭시 해당 글로 이동가능하며, 아래에서 그냥 읽기도 가능.
[번역]더 이상 배우려 하지 않는 개발자 : Expert Beginner의 등장
*이 글은 Erik Dietrich의 How Developers Stop Learning: Rise of the Expert Beginner를 번역한 글입니다. 모든 저작권과 권리는 Erik에게 있습니다.
*This article is a translated version of Erik Dietrich’s article: How Developers Stop Learning: Rise of the Expert Beginner. All rights goes back to him.*최대한 이해하기 쉽도록 곳곳에 의역이 들어간 점 양해 부탁드립니다.
*글 내에서 등장하는 드레이퍼스가 제시한 모델의 다섯가지 단계는 본 뜻을 보존하기 위해 영문을 유지하였습니다.
+ 후속편이 번역되었습니다.
사해를 넘어서: 좋은 소프트웨어 집단이 변질될 때
최근에, 기술력이 뛰어난 대부분의 프로그래머들이 직장에서 어떤 것을 원하고 그것이 주어지지 않았을 때 떠나게 되는 이유를 “가장 뛰어난 개발자들을 지키는 법”이라는 제목으로 포스팅을 했고, 꽤 좋은 반응을 얻었다. 오늘은 개발자 개개인의 개발자로서의 여정 보다는 특정한 단체 내에서의 소프트웨어 집단에 대해서 이야기 해 보려 한다. 작성하다보니 글이 조금 길어져서 두 편으로 나눌 예정이고, 이 글은 그 첫번째 파트이다.
앞서 언급했던 글에서 나는 브루스 웹스터의 “사해 효과”를 이용해서, 가장 뛰어난 개발자들이 곧 제일 잘 나가는 개발자들이며, 그들은 상황이 조금 안 좋아지면 바로 더 좋은 곳을 찾아 떠나게 된다는 것을 설명했다. 반대로, 제일 재능이 없는 개발자들은 다른 회사들에게 자신을 어필하기 힘들기 때문에 그대로 머무는 경우가 많다. 이것은 우리가 흔히 마주치는 “어마어마하게 대단한 최고의 선임 아키텍트”라는 별명의, 고액의 연봉을 받는, 영향력도 많은, 하지만 실제로 실력은 별로 없어보이는 사람들을 이해하는데에 중요한 요소이다. 하지만 한편으로 이는 아직 개인 단계의 분석이다. 이 접근법은 낮은 질의 개발 그룹이 발생하는 이유를 그런 사람들로만 구성되어있어서 라고 밖에는 설명하지 못한다(혹은 상황이 극도로 나빠져서 이러한 부류의 사람들이 다른 사람들을 모두 쫓아내버렸다거나).
나는 소프트웨어 그룹을 망치는 데에는 외부 요소가 아닌, 집단에서 발생하는 독특한 역학관계가 존재한다고 믿는다. 물론 앞서 언급한 브루스의 사해 효과가 기본적으로 이러한 결과를 발생시키는 촉매제이자 결과라는 것을 부정할 수는 없지만, 개인적으로는 집단 전체를 무능력하게 만드는 데에는 단순한 외부적 문제 외에 어떠한 특별한 요소가 더 있다고 생각한다. 어떻게 하나의 소프트웨어 집단이 유해한 문화와 장애에 빠지게 되는지는 다음 포스팅에서 설명하고, 이번 글에서는 어떻게 개인이 영속적으로 안주하게 되면서도 높은 보상을 받게 되는지를 설명하려 한다.
볼링 배우기
앞서 말한 것들을 알아보기 전에, 나의 볼링의 역사를 들려주고자 한다. 농담이 아니고 정말로.
나는 꽤 운동을 좋아하는 편이다. 자라나면서 나는 어떤 스포츠에서든 적어도 상위 1/3에 속하고는 했다. 모든 방면에서 에이스였지만, 최고인 적은 없었던 것이다. 이러한 과거는 나를 큰 노력 없이도 어느 정도의 실력과 더불어 조금 부적절하다고 볼 수 있을 정도의 자신감을 가지게 했고, 볼링에서도 마찬가지였다.
대부분의 사람들은 볼링을 할 때 엄지와 두개의 손가락을 공에 넣고, 조심스럽게 공이 넓게 커브를 돌아 중앙으로 굴러가게끔 던진다. 그것을 익힐 만큼의 인내심이 없었던 나는 공에 손가락을 하나도 넣지 않고, 팔꿈치를 돌려서 비슷하게 그 스킬을 흉내낼 수 있었다. 멋져 보이지는 않았지만, 꽤 잘 먹혔다.

이 기술은 꽤나 효과가 좋아서, 내가 퇴근 후 리그에 취미로 참가하기 시작하자 평균점이 상당히 높아졌다. 물론 리그 내 최고 수준은 아니었다. 내 매니저를 포함한 몇몇 사람들은 170에서 200 사이의 평균 점수를 냈기 때문이다. 하지만 나는 몇 개월만에 130,140을 금방 넘어서 160 안팎의 점수를 낼 수 있었다. 썩 나쁘지 않았다.
하지만 이상한 일이 생겼다. 성장이 멈춘 것이다. 160 정도에서 벽에 부딪쳤다. 나는 내 예전 매니저에게 어떻게 하면 더 성장할 수 있을지를 물어봤고, 그는 내게 매우 흥미로운 이야기를 해줬다. 요약하자면 이런 내용이었다:
그런 식으로 볼링은 하는 동안은 무슨 수를 써도 실력이 늘지 않을거야. 이미 한계에 다다른거지. 실력을 더 높이고 싶다면, 제대로 볼링하는 법을 배워야해. 다른 공을 사용해서, 다른 방법으로 던지고, 어른답게 제대로 손가락을 공에 집어넣어야 한다고. 그렇게 하면 지금보다 훨씬 실력이 떨어질거고, 그게 제일 견디기 어려울거야. 다시 지금의 점수를 내기 위해서는 아마 꽤 오랜 시간이 걸리겠지.
나는 한동안 이것을 부정했지만, 내 정체된 실력에 곧 질려버렸고 (나는 개인적으로 장인의 수준에 도달하지 않고서는 못 견디는 성격이 있다) 더 어려운 길을 택했다. 나는 볼링공을 새로 사고, 알맞게 구멍을 낸 후 제대로 볼링을 치기 시작했다. 아이러니하게도 나는 그 직장을 곧 그만두었고, 그 후로 8번 정도밖에 더 볼링을 치지 않았지만, 뭐 인생이 다 그런것 아니겠는가. 이제는 볼링장에 가게 되어도, 볼링화를 빌리거나 내 손가락에 맞는 공을 찾아다닐 필요가 없다.
드레이퍼스, 가시적 성과와 성장의 구속
1980년, 드레이퍼스라는 성을 가진 형제가 기술 습득의 이론(model of skill acquisition) 이라는 것을 발표했고, 이는 학습과 그 과정, 그리고 연습 방법 등의 토론에 있어 상당한 영향을 끼쳤다. 후에 그들은 이 논문을 기반으로 한 책을 발표했고, 위키피디아에서 볼 수 있듯이 이 이론을 조금 더 현대에 맞춰 바꾸어 재구성하였다. 이 이론에 따르면 기술을 습득하는데에는 5가지 단계가 있다- Novice(*역:초심자), Advanced Beginner(*역:숙련된 초심자), Competent(*역:실력을 갖춤), Proficient(*역:능숙함), 그리고 Expert(*역:전문가). 이것을 설명하는데에 책 한권을 써야 했을 정도이니 복잡한 내막이 있지만, 요점은 무언가를 배울 때 사람은 “큰 그림을 보지 못하고 정해진 규칙만 따라가기” 에서 시작해서 “직감적으로 규칙 전반을 넘어선 큰 그림을 볼 수 있는 상태”에 도달하게 된다는 것이다.
혹자는 이를 보고 가라테에서 승급하거나 돈이 벌리는 원리와 같이, 노력과 실력 사이에는 직선 관계가 존재한다고 생각할 수 있다. 하지만 실제로는 감정과 마음가짐이라는 요소가 있어 좀 다르게 나타난다. 특정한 기술을 배우기 시작하는 시점에서는 누구나 완전히 무능하며, 이 때 짜증을 느끼게 된다. 또한 누군가가 가르쳐주는 것을 곧이곧대로 따라하는 동안 (혹은 드레이퍼스가 말하듯이 아기처럼 다른사람들의 행동을 어리숙하게 따라하는 동안) 답답한 감정을 겪게 된다. 하지만 한동안 이렇게 완전한 초기 과정을 겪고 나면, 연습을 통해 스스로 스킬을 익힐 수 있게 되고, 신이 난 학습자는 “낮은 곳에 달린 열매”들을 열심히 따며 빠르게 성장하게 된다.
하지만 그 열매들이 모두 바닥난 후에는 지속 불가능할 정도로 빨랐던 성장 속도가 점점 느려지게 되고, 차차 성장하는 것이 어려워지기 시작한다. 이것을 표현하는 그래프를 한번 그려보았다(이 그래프를 그리는데는 부끄럽게도 매우 오래 걸렸는데, 보통 사람들처럼 그냥 그림판으로 그리면 될 것을 나는 logistic 1/(1 + e^-x) 함수를 굳이 플롯으로 찍어 그리느라고 헛고생을 했다).

이것은 실제로 내가 볼링을 배울 때 전혀 못하는 수준에서 어느정도 가능하게 될 때 까지의 성장곡선과 매우 흡사하다. 나는 competence의 수준까지 도달할 때 까지는 빠르게 성장했지만, 곧 완전히 기세가 꺾였다. 나의 경우, 내 상태를 개선하거나 계속해서 노력하기에는 다른일로 너무 바빴기 때문에 성장이 지역적 최고점에 도달한 후에는 완전히 멈춰버렸다.
이러한 현상을 나는 이 글의 문맥상 “성장의 구속”(arrested development)라고 부르고자 한다 (같은 이름의 다른 개념이 심리학에서 존재한다는 것은 알고 있지만 편의상 여기서는 이런 의미로 이해를 부탁한다). 기술 습득에 있어서, 보통 학습자는 두가지 이유로 성장의 구속으로 인한 기술 능력 정체에 이르게 된다. 첫번째는 재능의 벽에 부딫치는 것이고, 두번째는 자발적으로 의미있는 성장을 하려는 시도를 멈추고자 하는 마음가짐이다.
이제부터 나올 내용에 대해서 첫번째 가능성은 무시하고,(대부분의 전문 프로그래머들은 competence 단계나 그 전 단계에서 재능의 부족을 느낄 가능성이 적다) 더 흥미롭고 구체적인 두번째 경우에 집중해 보도록 하자 — 이미 전문가의 위치에 도달했으니, 더 이상의 성장은 불가능하다고 느끼는, 즉 성장에 대한 자발적인 거부. 이것이 곧 내가 “Expert Beginner”(*역:전문적 초심자)라고 명명하고자 하는, 기술 습득에 있어 끝없이 안주하는 단계의 입문 과정이다.
The Expert Beginner
드레이퍼스 모델을 다시 한번 떠올려보면, 큰 그림은 전혀 보지 못하고 정해진 규칙에만 집착하는 단계에서 직관적으로 모든것을 파악하게 되는 단계까지의 패턴이 있다는 것을 알 수 있다. Expert Beginner 단계는 학습자가 큰 그림을 보지 못하는 단계 중에서 가장 마지막에 있다. 즉, 다르게 말하면 학습자는 자신이 Expert라고 착각할 수 있는 단계인 것이다. Competent 단계의 학습자는 자신을 Expert라고 생각하기에는 너무 많은 것을 알고 있다. 즉, 자신이 부족한 부분이 무엇인지를 알고 있는 것이다.
Advanced Beginner의 단계에서는 이것이 불가능한데, Dunning-Kruger 효과에 따르면 Advanced Beginner들은 “기술이 없는(unskilled)” 쪽에 가까우므로, “내가 이해할 수 없으면, 분명 쉬운걸꺼야” 라는 생각에 쉽게 사로잡히게 된다.

Advanced Beginner들은 결국 양갈래길에 놓이게 된다. 하나는 Competent로 나아가서 큰 그림을 보고 자신이 어디에 있는지를 자각하는 것이고, 하나는 자신들이 이미 Expert로 졸업했다고 생각하여 Expert Beginner에 속하게 되는 것이다. 당장은 그렇게 나빠 보이지 않을 수 있다.
다시 한번 나의 볼링 경험으로 돌아가서 내가 그 골목의 최고가 되었었다고 상상해보자. 처음에야 잘 못했겠지만, 따기 쉬운 열매들을 신나게 따며 빠르게 실력을 키워갔을 것이다. Dunning-Kruger 법칙에도 불구하고, 나는 스스로의 성장이 꽤 빨랐던 점을 감안하여 내가 볼링에 꽤 재능이 있다고 결론내렸을 수 있다. 그리고 한 걸음 더 나아가 내가 볼링 스킬의 정점에 올랐다고 꽤 합리적으로 (혹은 꽤 오만하게) 결론내렸을 수도 있다. 왜냐하면 주변에는 나보다 잘 하는 사람이 없으니까, 분명 내가 어떤 경지에 오른것이 아닐까, 라는 생각을 하게 되는 것이다.
이것의 가장 큰 문제는, 몇가지의 꼭 틀렸다고 볼 수는 없는 추론들이 나를 거짓된 성취감에 이르게 했고, 결국 나를 더 나은 성장으로부터 멀어지게 했다는 것이다. 볼링을 계속 하면서 나는 내 자신에 대한 긍정적 평가를 서서히 논리적 오류에 활용하게 된다. “나는 전문가야. 전문가는 뭐든 잘 하게 되어있고, 지금 하는 것도 모두 제대로 하고 있어” (논리적 오류에 대해서 조금 더 설명을 보태자면, 이것은 순환론, 혹은 선결문제 요구의 오류이다).
위의 그림은 드레이퍼스 모델에 기반한 상태들의 흐름을 표현하고 있다. 각 단계에서 학습자는 다음 단계로 넘어가거나 혹은 현 단계에 그대로 머물 수 있다(Novice나 Advanced Beginner는 내 생각에 그 단계에 그리 오래 머물 수 없으므로 제외하고). 다른 점이라면, 내가 이 그림에 Expert Beginner를 추가했다는 것이다.
성장을 위해서는 스스로가 아직 배울 것이 많고, 아직 목표에 도달하지 않았다는 사실을 스스로 인지해야 하므로 Expert Beginner는 더 이상 어떠한 진전도 이룰 수 없다. Expert Beginner 는 Advanced Beginner의 조금 더 위, 그렇지만 Competence보다는 조금 더 낮은 단계에 위치한다. 이것은 본인의 현 상태의 모순에 대해서 인지할 정도의 능력은 없지만, 반대로 Beginner로서 굉장히 많은 ‘연습’을 했으므로 Advanced Beginner보다는 조금 더 우위에 있기 때문이다. 만약 “10년의 경험인가 아니면 같은 경험을 10년동안 한것인가” 라는 말을 들어본 적이 있다면, Expert Beginner는 후자의 정점이다. Expert Beginner는 매주 똑같은 볼링 기술과 습관을 이용하면서 300점중에 160점을 따는 데에 달인이 되었다. 이것은 그가 160점이 최고의 점수라고 생각하고 있기 때문이다.
소프트웨어 업계의 Expert Beginner들
소프트웨어는, 당연하게도, 볼링과는 다르다. 볼링에서는 몇분 간격으로 피드백이 돌아오지만, 소프트웨어는 수 개월, 혹은 수년에 걸쳐 피드백이 돌아오는 경우가 많다. 여기서 내가 말하는 소프트웨어의 피드백이란 컴파일링이나 유닛 테스트 등이 아니라 프로젝트 단위를 말하는 것이다. 하나의 프로젝트를 진행하면서 개발자는 코딩, 소스코드 관리, 수정, 테스트, 그리고 이전의 디자인과 설계 등을 유지보수 하는 경험을 하게 된다. 만약 이 모든 과정을, 개발자가 운이 좋아 6개월 안에 모두 경험했다고 친다면 5년 후에는 10건 남짓의 애플리케이션 개발 경험을 가지게 된다 (이는 평균치로, 누군가는 이 기간동안 하나에 매진해 있을 수도 있고 누군가는 여러개를 할 수도 있다).
이는 곧 소프트웨어 개발자가 빠르게 성장하는 기간 (Advaned Beginner의 기간)이 몇주가 아닌 몇 년일 확률이 높다는 뜻이다. 그리고 이 기간동안 소프트웨어 개발자들은 이직과 승진을 거듭하게 된다. 빠르게 기술을 습득해 나가면서 소프트웨어 개발자 1 이나 소프트웨어 개발자 2를 거쳐 “주니어”(*역: 원래 Associate이나 주니어로 의역), “시니어”, 그리고 “리드” 혹은 “아키텍트”, 또는 “총책임”(Principal)이라는 직급을 넘나들 것이다. 즉 Dunning-Kruger의 법칙과 Advanced Beginner로서의 역경을 거치면서 전문가를 연상시키는 직급을 부여받고, 헤드헌터들로부터 “rock star”(*다크호스와 비슷한 어감) 혹은 “닌자” 등의 별명도 얻게 될 것이다. 이런 상황에서 이들이 Expert Beginner 단계로 자연스럽게 입장하는 것을 막을 수 있는 유일한 방법은 피어리뷰(peer review)와 개발자 커뮤니티와의 교류 뿐이다.
하지만 Advanced Beginner가 더 큰 커뮤니티와의 교류에 관심이 없고, 주변 동료들과도 별로 교류하지 않는다면 어떻게 될까? Daily WTF 사이트는 이런 예시들로 넘쳐 흐른다. 언제든 그렇듯이 다른 사람의 탓을 하면 손쉽게 인지부조화를 해소하고 현 상황에서 도피할 수 있기 때문에, 그들 역시 남탓으로 상황을 해결하려 한다. 이미 Expert 레벨에 도달하였으며, 더 이상 올라갈 곳이 없다고 생각하는 것이다. 그들은 이로서 Expert Beginner가 되고, 하나의 집단에서 오랫동안 안주하면서 높은 연봉을 받을 준비를 마친다. 주변 사람은 물론 그들 스스로도 그들이 훨씬 더 많은 것을 할 수 있다는 사실을 모르기 때문이다.
이번 글을 마치며
이렇게 Expert Beginner의 등장에 대한 이야기, 즉 그들이 어디서 나타나고 왜 성장을 멈추는지에 대해 탐구해 보았다. 이 시리즈의 다음 편에서는, 한명 이상의 Expert Beginner들이 모였을 때 어떻게 다른 재능있는 구성원들이 있음에도 불구하고 하나의 집단을 퇴행시키고 내부적으로 부패하게 하는지에 대한 이야기를 해 보도록 하겠다.
번역을 마치고
제가 이 글을 읽은 것은 작년 가을 쯤이었습니다. 매일같이 야근에 시달리고 하루하루가 벅차던 그 때 이 글을 읽고 다시 한번 마음을 추스렸던 기억이 나서, 오랜만에 글을 읽으며 번역해 보았습니다.
저에게는 나태해지려 할 때 마다 머릿속에 “Expert Beginner”라는 단어로 경종을 울리게 해주는 중요한 글이라, 작가님의 허락을 받고 번역해 보았습니다. 민감할 수도 있는 내용이여서 다양하게 받아들여질 것이라 생각합니다만, 저를 채찍질 하는 글이 되었듯이 다른 분들께도 도움이 되었으면 좋겠습니다. 학문적 단어가 많아 제 기준으로 이해하기 쉽게 의역이 많았음을 다시 한번 알려드립니다.
이 글은 2편으로 나뉘어져 작성되었지만, 속편은 아직 번역할 계획이 없습니다. 혹 요청이 많거나 제가 여유가 된다면 속편도 번역하도록 하겠습니다 :)
-
[번역]소프트웨어 집단의 부패:Expert Beginner의 유산
*이 글은 Erik Dietrich의 How Software Groups Rot: Legacy of the Expert Beginner를 번역한 글입니다. 모든 저작권과 권리는 Erik에게 있습니다.
*This article is a translated version of Erik Dietrich’s article: How Software Groups Rot: Legacy of the Expert Beginner. All rights goes back to him.
*최대한 이해하기 쉽도록 곳곳에 의역이 들어간 점 양해 부탁드립니다.
*읽기 전에 시리즈의 전편인 이 글을 읽고 오시면 더 좋습니다.
Expert Beginner 되짚어 보기
지난 포스팅에서 나는 “Expert Beginner”라는 용어를 자신의 테두리가 곧 전체의 테두리라고 굳게 믿고, 지역적 최고점에 도달한 후 배움을 멈춘 개발자들을 표현하기 위해 사용했다. Expert Beginner들은 큰 그림을 볼 수 있을 정도의 역량이 없으므로, 자신들이 expert(*역: 전문가) 가 아니라는 사실을 자각하지 못한다. 즉, 자신들이 여태까지 노출되었던 환경이 곧 전체이자 유일한 방법이라고 생각할 정도로 시야가 좁다는 뜻이다.
예를 들어, 자바를 사용해 보지도 않고 욕하는 C# 개발자나 NoSQL의 등장을 그저 한순간의 유행이라고 치부하는 MySQL DBA 같은 사람들이 여기에 포함된다. 단순히 특정한 기술을 싫어하거나 사용해보지 않았다고 해서 Expert Beginner가 되는것은 아니다. “내 기술 세트 안에 들어있지 않거나 내가 경험해보지 않은거라면, 딱히 값어치 있는게 아니다” 라고 결론 짓는 자기중심적인 마인드를 말하는 것이다.
또 다른 Expert Beginner의 특징은 일반적으로 그들이 소프트웨어 집단 내에서 어느 정도의 권위나 영향력을 가진 위치에 올라 있다는 것이다. 지난 글에서, 나는 Expert Beginner라는 용어를 만든 근거를 이번 글에서 더 설명하기 위해 미뤄두었다.
Advanced Beginner라는 용어는 초심자들 중에서도 조금 더 성숙한 수준에 있다 라고 이해할 수 있는 반면, Expert Beginner는 단어 뜻 그대로의 의미이기도 하면서 동시에 고의적으로 아이러니함을 담아 만들어낸 용어이다. 실제로 초심자로서의 연습을 많이 했기 때문에 그런 면에서는 말 그대로 전문가(expert)이지만, 보통 expert라는 말은 진심으로 스스로가 전문가라고 생각해서 사용하거나, 혹은 그 사람보다 지식이 부족한 매니저나 주변 동료들이 불러주는 명칭이기 때문이다.
대표적인 예를 들어보자. IT 계열이 아닌 작은 회사의 “tech guy(*역: 컴퓨터와 IT에 밝은 사람 정도로 해석할 수 있습니다)”가 있다고 치자. 그는 “컴퓨터를 꽤 하는” 사람이고, 회사가 성장함에 따라 IT 기술이 필요해져서 프로그래머가 된다. 컴퓨터를 잘 다루는 파워 유저에서 개발자가 된 그는, 자신이 기대했던 것 보다 더 많은 기술을 습득하고, 자신의 제한된, 그리고 제대로 교육받은 적 없는 능력에 대해 자신감을 가지게 된다.
같은 일을 하는 동료도 없으니 그의 기술을 평가할 수 있는 사람은 나 자신과 IT 지식 없이 “어쨌든 되기는 하는것 같애, 아마도” 라는 칭찬을 해주는 사람들 뿐이다. 그는 장님들만 있는 거리의 외눈박이이며, 굉장히 현실적이고 동시에 불운하게도, 지역적(local) 전문가이다. 이 예시의 등장인물은 Expert Beginner가 되기에 매우 좋은 조건들을 갖추고 있다. 쉽게 성공할 수 있고, 요구되는 기준이 낮으며, 진짜 전문가들은 존재하지 않고, 경쟁도 없으며, 외부와의 교류도 없다.
한 부분에서 발생한 부패가…

지금까지 Expert Beginner에 대한 많은 이야기를 했다. 그들이 발생하는 시점, 특징, 마음가짐, 그리고 비교적 공감 가능한 그들의 허위적인, 혹은 적어도 이해는 가는 세계관까지. 하지만 그렇다고 해서 어떻게 내가 기존에 주장했듯이, Expert Beginner들이 소프트웨어 집단의 전문성을 좀먹고 퇴화시킨다는 걸까?
이것을 설명하기 위해서 다시 나의 조금 지루한 볼링 이야기로 돌아가 보려고 하니, 질렸어도 조금만 참아주기를 부탁한다. 내 첫번째 포스팅을 읽지 못한 분들은 그 글로 가서 두번째 부분을 읽고 오는것이 좋을 것이다.
볼링장들의 매출이 선수들이 얼마나 볼링을 잘 치는가에 달려 있다고 가정해보자. 나는 자그마한, 스타트업 볼링장이 있는 동네에서 살고 있다. 소프트웨어 개발자로서 직장을 찾지 못한 나는, 동네 볼링장에서 볼링이나 쳐 보기로 한다. 나나 그들이나 내가 뭘 하고 있는지는 잘 모르지만, 내가 거기서 볼링을 치기 시작한 후로, 자세가 우스꽝스럽긴 해도 나의 실력이 빠르게 느는것을 발견한다. 평균점은 올라가고, 볼링장은 돈을 벌고, 모든게 완벽하다. 이윤과 성공적 커리어 앞에서 누가 불만이 있겠는가!
내 평균이 150을 웃돌고 나의 성장세에 끝이란 없을 것 처럼 보일 때 쯤, 볼링장은 조금 더 확장해서 몇몇 초보 선수들을 영입하여 내 밑에서 일하게 하기로 결정한다. 그들의 첫 출근 날, 나는 어떻게 공을 드는지를 보여주고, 어떻게 나처럼 걷는지를 가르친다. 그들이 엄지와 손가락 구멍들은 어디에 쓰는거냐고 물어보면, 나는 그냥 “아 그건 신경쓰지마. 여기선 그거 안 써.’ 라고 대답해 준다. 열심히 하는 모습을 보이기 위해 신입들은 내 말을 그대로 따르고, 내가 그랬듯 점수가 오르기 시작한다. 나는 160 언저리에서 서서히 정체기를 맞이하고 있는데도.
시간이 지나고, 그들 대부분은 내 식대로 하는 것에 만족한다. 하지만 몇몇은 의지가 충만하여 여유 시간에 연습을 따로 하기 시작한다. 그들은 책을 읽고, 볼링 기술에 대한 방송도 시청한다. 그러던 어느 날, 그들이 나에게 “TV에서는 손가락을 공 안에 넣고 쳐서 엄청 높은 점수를 내던데요. 200 이상요!” 라고 말한다.
그들은 내가 자신들 만큼이나 성장에 관심이 있기를 기대하지만, 나는 이렇게 반응하고 그들은 풀이 죽고 만다.
“아냐. 여기선 그렇게 안 해. 나는 너희들이 태어나기 전부터 볼링을 했고, 내가 어떻게 하고 있는지는 내가 제일 잘 알아… 그리고, TV에서 나오는 걸 다 믿으면 안돼.”
그렇게 나는 내가 볼링장에서 더 오래 일했으니, 나에게 결정권이 있다는 것을 그들에게 상기시킴으로써 집단의 혁신을 빠르고 확실하게 제거한다. 이것은 보편적으로 사용되는 완벽히 불합리한 추론으로, 대화를 불만족으로 끝맺음 짓는 방법이다.
이 시점에서, 열정적인 선수들 중 절반은 “공 안에 손가락을 넣는” 방법을 포기하고, 절반은 다른 볼링장에서 퇴근 후에 만나 조용히 연습을 한다. 시간이 지나 그들의 점수는 내 점수를 제치고, 그들은 이 접근법이 더 우수하다는 것을 객관적으로 증명했으니 변화를 일으킬 수 있다고 믿게 된다. 하지만 내가 화를 내며 그들의 성과는 그저 꼼수일 뿐이며, 나도 한번은 205점을 낸 적이 있다고 한바탕 설교를 하고 나자 그들은 남은 동료들을 두고 사라진다. 그들은 나의 꽉 막힌, 역행하는 볼링장을 떠나, 고작 고집 때문에 저급한 방법을 선택하지는 않는 곳으로 떠나게 된다.
볼링장은 가장 높은 점수를 내는 선수들을 다른 볼링장이 아닌, Expert Beginner에게 빼앗겼다.
…전체를 오염시킨다

떠나지 않은 볼링선수들은 두가지 흥미로운 교훈을 얻게 된다.
첫번째는 그들이 자신의 차례를 기다리면, 실제 능력과 상관없이 무조건적인 권력을 얻게 된다는 것. 두번째는 이 볼링장에서는 그저 그런 상태로 있어도 괜찮거나, 심지어는 더 좋을 수도 있다는 것이다.
그래서 새로운 선수들이 고용되었을 때, 회사의 ‘라인’을 유지하고 본인들의 차례를 기다리기 위해서 그들의 과거 경험 그대로 신입들에게 나쁜 방법을 강권하는 것에 동참한다. Expert Beginner는 자신의 행동과 본보기로 새로운 Expert Beginner들을 만들어내고 이는 곧 Expert Beginnerism의 문화를 생성하는 것이다.
또 하나의 흥미로운 전개는 채용 프로세스에 미치는 영향이다. 수석 Expert Beginner로서, 나는 배운게 있다. 열정 넘치는 어린 신입들을 만나기 싫은 나는, 채용 프로세스를 그저 그런 “팀 플레이어”들을 모집하는 방향으로 바꾼다. 뜬구름 잡는 “손가락에 공을 넣기” 같은 소리나 해서 나의 위치를 위협하지 않을 팀 플레이어들. 자, 여기서 여러분은 생각할 것이다. 그걸 깨달았다는 것은 기존에 이야기 했던 Expert Beginner의 “큰 그림을 보지 못한다” 라는 전제가 깨진 것 아닌가? 그렇지 않다.
이 채용 결정은 명시적인 행동이라기보다 무의식, 혹은 합리화에 가깝다. “나보다 더 나은 사람들은 채용하지 않겠다” 가 아니라 “이 사람들은 나의 ‘고정관념을 깨는’, 또한 ‘전문적인’ 방법들과는 어울리지 않아” 라고 생각하는 것이다. 심지어, 나는 나의 Expert Beginnerism에 너무 빠져버려서 Competent 혹은 Expert 수준의 작업과 무능한 수준의 작업을 구분할 정도의 지식도 갖추지 못하여, 이 둘을 혼동할 가능성 마저 있다.(조금 더 설명해 보자면 “볼링 면접”시에 나는 결과가 아닌 자세에만 집중하여 220점을 낸 선수가 내 자세랑은 다르다는 이유로 나쁜 선수라고 생각할 수 있다)
이렇게 함으로써, 나는 나의 새로운 Expert Beginner 중위들을 포함한 모두에게 이런 문화를 강화하게 된다.
이제 볼링장은 고득점을 내던 선수들을 Expert Beginner 패거리들에게 빼앗기게 된다. 또한 이것은 브루스 웹스터(Bruce Webster)가 말하던 “사해 효과”(Dead Sea Effect)가 완성, 실현되는 단계임을 알 수 있다.
현실로 돌아와서
볼링장 이야기는 그렇다 쳐도, 이 이야기가 실제 소프트웨어 개발 환경에 적용 가능할까? 꽤 간단히 가능하다.
자동화 테스팅의 부재. 거대한 함수나 클래스들. 수 많은 복사-붙이기 코딩. 오래 되었거나 적절치 못한 툴 사용. 프로세스들. 예를 들자면 끝이 없지만, 중요한 것은 부족한 지식으로 점철된 치명적인 문화를 가진 사람들이 힘 있는 위치에 있다는 것이다. 자신들이 무엇을 모르는지 자각하지 못하고, 전문가인 본인들이 모르는 것은 알 필요가 없다는 생각- 이것은 재능있고 열정적인 사람들을 떠나게 하거나 혹은 그저 그런 집단에 합류하게 만드는 유해한 문화이다.
여러분은 이것이 그저 개개인의 문제이고, 부서들이 무례하고 고집센 무능한 사람들에게 책임을 맡기면서 발생하는 일이라고 생각할 수 있지만, 나는 조금 더 심오한 문제라고 생각한다. 이 Expert Beginner들은 사실은 인격적인 문제가 없을 수도 있다. 나는 이것이 외부와 격리된 환경, 낮은 기대치, 그리고 실제로 효율성 산출이 불가능한 그저 그런 수행능력에 대한 꾸준한 보상이 만들어낸 자연스러운 결과라고 생각한다.
거기다, 우리 산업의 특성에 대해 한번 생각해볼 필요가 있다. 릴리즈 일정이 늦어지고, 버그는 많고, 예산까지 초과 했을 때에 따로 릴리즈 팀을 운영하는 회사를 몇번이나 보았는가? 제대로 관리하기가 너무나 힘든 애플리케이션을 포기하고, 처음부터 다시 작성(결국 똑같은 사이클을 언젠가는 반복할걸 알면서)하는 팀은?
마치 작동할 것처럼 보였지만 결국엔 지면에서 떨어지자 멈춰버리고, 추락하는 로켓을 만들고 나서도 승급을 하는 로켓 기술자들 마냥, 그들은 그렇게 하고도 승급을 하고 포상을 받는다.
“뭐, 좀 제대로 안되기는 했어 존스. 그렇지만 너도 이걸 통해 많이 배웠을테니까, 너를 수석 로켓 기술자로 승급시키고 두번째 버전의 설계를 맡기도록 하지. 우리의 록스타, 당신에게 말야!”
이 상황에서 존스가 자신이 마이다스 왕이라고 생각하는 건 놀라운 일도 아니다.
기본적으로 사람들의 소프트웨어에 대한 기대치는 로켓에 비해 훨씬 낮기 때문에, 우리 업계에서는 이런 일이 용인되는 것이다. 나는 여기서 우리 업계가 완전히 바뀌어야 한다고 불평하고자 하는 것이 아니다. 다만, 외부 피드백과 우리 자신의 인식에 따라 얼마나 쉽게 실제 배운 것보다 많이 알고 있다고 생각하게 될 수 있는지를 설명하려고 하는 것이다.
정체하지 않고 진전하는 문화 만들기
단순하게 표현하자면 자만심을 가진 사람들이, 어떻게 하나의 집단을 만들어내고 동시에 망가뜨리는지에 대해 이야기 해 보았다. 이번에는 이러한 사태를 최대한 방지할 수 있는 비교적 간단한 방법들을 제시해 보려고 한다.
첫째로, Expert Beginner의 덫에 빠지지 않기 위해서 제일 중요한 것은 자기 자신의 들뜬 감정을 믿지 않는 것이다. 자신이 한 것에 대해서 적절한 자신감을 가지되, 이성적인 주장 혹은 증거 없이 자신의 학습이 완성 되었다거나, 나는 직급이나 연차가 이 정도 되었으니 질문을 받을 필요가 없다거나 하는 식의 생각을 지양해야 한다. 건강한 겸손함과 지속적으로 성장하기 위한 노력을 겸비하고, 객관적 수치들을 주관적인 고려사항들보다 우선순위에 둔다면 Expert Beginner로부터 충분히 거리를 둘 수 있을 것이다.
소프트웨어 집단으로서 이 현상을 막기 위한 방법도 몇가지 리스트로 만들어 보았다.
- 팀 멤버들에게 최대한 자유롭게 상상할 수 있는 기회를 주고, 그들이 발견한 방법을 직접 보여줄 수 있도록 독려하라 (성공보다는 실패에서 배우는게 많음을 기억하자).
- 새로운 언어, 접근법, 프레임워크, 패턴, 스타일 등을 학습하는 것에 대한 인센티브를 제공하라
- 특정 주장이 더 낫다고 평가하거나 수용할 때, 절대로 그 사람의 연차를 근거로 삼지 말아라.
- 외부의 의견을 사내에 강제적으로 주입받을 수 있는 정책을 만들어라 (점심시간을 이용한 네트워킹, 월간 트레이닝, 감사 등)
- 가능하다면 논쟁이나 의견 충돌이 있을 때 직급이나 투표 등의 주관적 기준이 아닌 좀 더 객관적인 기준으로 해결하라.
- “증명하는 문화(culture of proof)”를 만들어라. 실제 레퍼런스, 통계, 사실 등이 확인되지 않으면 그 의견은 없는 것이나 다름 없다.
- 주기적으로 주니어와 시니어를 아우르는 설문을 진행하라. 그들의 강점과, 강점의 갯수만큼 자신이 모르는 것, 혹은 알고 싶은 것에 대한 것을 작성하도록 하라. 이것은 사전에 직원들이 (특히 오래된 직원들이) 자신이 “모든 것을 다 안다”라고 생각하게 되는 분위기를 미연에 방지하기 위해서이다.
이 리스트는 우선적으로는 매니저와 팀 리더들을 위한 것이지만, 팀 멤버들도 충분히 이러한 변화를 일으킬 수 있다. 차이점은 한쪽은 바로 실행에 옮길 수 있고, 다른 쪽은 관리자들을 설득해야 한다는 점이다. 가능하다면, 몸소 실천해서 보여줌으로써 주도 해보라. 만약 이것이 모두 소용이 없다면, 내 개인적인 생각으로는 이미 가망이 없는 것이니 가능성이 있는 곳으로 떠나기 바란다.
보편적으로는 팀원 누구든-제일 시니어이거나 최고 경력자라 할지라도- “모르겠다” 라는 답변을 할 수 있는 문화를 만드는 것이 Expert Beginner 들로 인한 집단의 부패를 방지하기 위한 중요한 방책이다. Expert Beginner는 절대로 “모르겠다”라는 답을 하지 않는다. 이는 곧 기술을 배우고 있는 사람과 자신이 이미 알건 다 안다고 생각하는 사람 사이의 중요한 차이이다.
당신의 그룹이 성장하고 있지 않다면, 부패하고 있는 것이다.
이 시리즈는 “성장의 정체는 어떻게 합리화되는가: Expert Beginner의 언어”(How Stagnation is Justified: Language of the Expert Beginner) 에서 계속된다.
추가: E-Book이 출시되었다. 출판사의 웹사이트에 방문하면 책을 다양한 매체로 접할 수 있을 것이다.
번역을 마치며
이전 글을 올리고 난 후 너무나 많은 분들이 좋아해 주셔서, 저도 한번 Erik의 속편을 읽어보게 되었습니다.
저도 전에는 속편까지 읽지는 않았던 터라, 이번이 처음이었는데 1편만큼이나 흥미로운 이야기들이었고, 워낙 흡입력이 뛰어나 금방 번역으로 옮기게 되었습니다.
전편이 각종 학술적 이론을 기반으로 한 꼼꼼한 분석이 주였다면 이번 글은 이야기 위주의, 그리고 훨씬 신랄한(^^;) 글이다 싶습니다.
그럼에도 불구하고, 저는 Erik이 의도하고자 하는, 즉 개개인의 책임이 없다고 할 수는 없으나 구조적 문제를 반드시 생각해 봐야 한다는 점에 상당히 공감하였고, 감명을 받았습니다. Erik의 글은 약 4년 전 쯤에 쓰여진 것으로 보이므로 지금은 상황이 나아진 회사들도 많을거라고 생각합니다만, 본질에 대한 것들은 변하기 쉽지 않으니까요.
전편이 그러했듯, 많은 분들이 이번 편도 즐겁게 읽어보시고 기회가 되신다면 Erik의 E-book도 한번씩 살펴보시면 어떨까 싶네요!
*Erik은 속편의 번역도 진행해도 되겠냐는 저의 질문에 흔쾌히 시리즈 전체를 번역하라고 해 주었습니다 :)
Erik에게 감사의 말을 전하며, 시리즈의 마지막 편인 “성장의 정체는 어떻게 합리화되는가: Expert Beginner의 언어”(How Stagnation is Justified: Language of the Expert Beginner)도 밀린 기술 번역을 한 후에 추후 진행하고자 합니다.부족함이 많은 번역글을 읽어주셔서 감사합니다!
'아는 것이 힘!' 카테고리의 다른 글
엑셀 레지스트리 충돌 (0) | 2021.11.05 |
---|---|
크리스탈 리포트(Crystal Reports) 그룹 / 페이지 넘기기(나누기) (0) | 2021.06.04 |