[번역]소프트웨어 집단의 부패:Expert Beginner의 유산

*이 글은 Erik DietrichHow 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로부터 충분히 거리를 둘 수 있을 것이다.

소프트웨어 집단으로서 이 현상을 막기 위한 방법도 몇가지 리스트로 만들어 보았다.

  1. 팀 멤버들에게 최대한 자유롭게 상상할 수 있는 기회를 주고, 그들이 발견한 방법을 직접 보여줄 수 있도록 독려하라 (성공보다는 실패에서 배우는게 많음을 기억하자).
  2. 새로운 언어, 접근법, 프레임워크, 패턴, 스타일 등을 학습하는 것에 대한 인센티브를 제공하라
  3. 특정 주장이 더 낫다고 평가하거나 수용할 때, 절대로 그 사람의 연차를 근거로 삼지 말아라.
  4. 외부의 의견을 사내에 강제적으로 주입받을 수 있는 정책을 만들어라 (점심시간을 이용한 네트워킹, 월간 트레이닝, 감사 등)
  5. 가능하다면 논쟁이나 의견 충돌이 있을 때 직급이나 투표 등의 주관적 기준이 아닌 좀 더 객관적인 기준으로 해결하라.
  6. “증명하는 문화(culture of proof)”를 만들어라. 실제 레퍼런스, 통계, 사실 등이 확인되지 않으면 그 의견은 없는 것이나 다름 없다.
  7. 주기적으로 주니어와 시니어를 아우르는 설문을 진행하라. 그들의 강점과, 강점의 갯수만큼 자신이 모르는 것, 혹은 알고 싶은 것에 대한 것을 작성하도록 하라. 이것은 사전에 직원들이 (특히 오래된 직원들이) 자신이 “모든 것을 다 안다”라고 생각하게 되는 분위기를 미연에 방지하기 위해서이다.

이 리스트는 우선적으로는 매니저와 팀 리더들을 위한 것이지만, 팀 멤버들도 충분히 이러한 변화를 일으킬 수 있다. 차이점은 한쪽은 바로 실행에 옮길 수 있고, 다른 쪽은 관리자들을 설득해야 한다는 점이다. 가능하다면, 몸소 실천해서 보여줌으로써 주도 해보라. 만약 이것이 모두 소용이 없다면, 내 개인적인 생각으로는 이미 가망이 없는 것이니 가능성이 있는 곳으로 떠나기 바란다. 
보편적으로는 팀원 누구든-제일 시니어이거나 최고 경력자라 할지라도- “모르겠다” 라는 답변을 할 수 있는 문화를 만드는 것이 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)도 밀린 기술 번역을 한 후에 추후 진행하고자 합니다.부족함이 많은 번역글을 읽어주셔서 감사합니다!