Expert Beginner

  • 얼마 전에 ‘개발바닥’ 유튜브에 이력서 리뷰를 하는 영상을 보게 되었다
  • 이력서를 리뷰하다가 Expert Beginner라는 내용을 향로님이 언급해주면서 어떤 블로그를 하나 공유해주셨다
  • 블로그의 내용이 유익한 것 같아 나름 정리한 내용을 팀원들에게 공유하고자 자료를 만들게 되었다
참고
- <https://shorturl.at/lnqEY>
- <https://shorturl.at/lMPS2>

더 이상 배우려 하지 않는 개발자 : Expert Beginner의 등장

​

🤢 좋은 소프트웨어 집단이 변질될 때

사해 효과

  • 사해는 이스라엘과 요르단 사이에 있는 거대한 수역이다
  • 유입된 물은 증발하면서 소금이 축척되어 8배나 더 짜게 만들어진다

소프트웨어 집단이 유해한 문화와 장애에 빠지게 되는 이유

  • 사해효과는 조직 문화에 안티패턴에 빗대어 표현할 수 있다
  • 급여와 기술 스택이 충분히 매력적이면 기업은 보통 인재를 유치하는 데 문제가 없다
  • 어려운 부분은 실제로 ê·¸ 재능을 오랫동안 유지하는 것이다

소프트웨어 집단이 유해한 문화와 장애에 빠지게 되는 이유

  • 회사 문화가 퇴화한다고 느끼면 두 가지 선택권이 있을 것이다
    • 한 부류는 회사를 떠나 이직하기 ✈️
    • 한 부류는 회사에 남아 유지하기 🧚‍♂️
  • 그런데 대체로 능력있는 엔지니어는 이직할 기회가 많고 그만큼 능력도 있다
  • 그래서 대체로 회사를 떠날것이다

그리고 회사에 남는 부류는 대체로 능력이 없다…..

  • 그래서 남아 있는 부류는 회사에서 본인이 할 것을 찾는다..
  • 대체로 특별한 능력이 필요 없는 유지보수 업무가 메인이 될 것이다
  • 이렇게 회사는 점차 남아 있는 부류로 채워질 것이고 회사 문화는 악화되고 만다…

사해효과 이외의 특별한 문제가 하나 더 있다

  • 개인적으로 집단 전체를 무능력하게 만드는 데에는 특별한 요소가 더 있다고 생각한다
  • 개인이 영속적으로 안주하게 되면서도 높은 보상을 받게 되는지를 살펴보자

🎳 볼링 배우기

초보자 볼링

  • 대부분의 사람들은 볼링을 할 때 엄지와 두개의 손가락을 공에 넣고 조심스럽게 커브를 돌아 중앙으로 굴러가게끔 던진다
  • 그것을 익힐 만큼의 인내심이 없었던 나는 공에 손가락을 하나도 넣지 않고, 팔꿈치를 돌려서 비슷하게 ê·¸ 스킬을 흉내낼 수 있었다
  • 하지만 ê·¸ 후에 160점에서 더는 늘지 않았다….
  • 나는 예전 매니저에게 어떻게 하면 더 성장할 수 있을지 물어봤고, 흥미로운 이야기를 해줬다
볼링을 그런 식으로 하는 동안은 무슨 수를 써도 실력이 늘지 않는다 실력을 더 높이고 싶다면 제대로 볼링 하는 법을 배워야 한다 그러나 그렇게 하면 지금보다 훨씬 실력은 떨어질 것이다
  • 다시 지금의 점수를 내기 위해서는 아마 꽤 오랜 시간이 걸릴 것이다
  • 나는 한동안 이것을 부정했다
​

🛫 가시적 성과와 성장의 구속

기술 습득의 이론

  • 드레이퍼스라는 성을 가진 형제가 기술 습득의 이론을 발표했다
  • 기술을 습득하는데에는 5가지 단계가 있다
    1. 1.
      Novice(초심자)
    2. 2.
      Advanced Beginner(숙련된 초심자)
    3. 3.
      Competent(실력을 갖춤)
    4. 4.
      Proficient(능숙함)
    5. 5.
      Expert(전문가)

낮은 곳에 달린 열매

  • 무언가를 배울 때 사람은 “큰 그림을 보지 못하고 정해진 규칙만 따라가기”에서 시작해서“직감적으로 규칙 전반을 넘어서 큰 그림을 ë³¼ 수 있는 상태”에 도달하게 된다
  • 특정한 기술을 배우기 시작하는 시점에서는 누구나 완전히 무능하며 짜증을 느끼게 된다
  • 또한 누군가가 가르쳐주는 것을 곧이곧대로 따라하는 동안 답답한 감정을 겪게 된다
  • 한동안 이렇게 완전한 초기 과정을 겪고 나면, 연습을 통해 스스로 스킬을 익힐 수 있게 되고,신이 난 학습자는 “낮은 곳에 달린 열매”들을 열심히 따며 빠르게 성장하게 된다
  • 하지만 열매들이 모두 바닥난 후에는 지속 불가능할 정도로 빨랐던 성장 속도가 점점 느려지게 되고, 차차 성장하는 것이 어려워지기 시작한다

기술 습득의 한계점

  • Competence의 수준까지 도달할 때 까지는 빠르게 성장했지만, 곧 완전히 기세가 꺾였다
  • 내 상태를 개선하거나 계속해서 노력하기에는 다른 일로 너무 바빴기 때문에 성장이 지역적 최고점에 도달한 후에는 완전히 멈춰버렸다
  • 이러한 현상을 ‘성장의 구속’이라고 부른다

보통 학습자는 두 가지 이유로 성장의 구속으로 인한 기술 능력 정체에 이르게 된다

  • 첫번째는 재능의 벽에 부딪치는 것이다
  • 두번째는 자발적으로 의미있는 성장을 하려는 시도를 멈추고자 하는 마음가짐이다
  • 첫번째 가능성은 무시하고 두번째 경우에 집중하자
  • 더 이상의 성장은 불가능하다고 느끼는, 즉 성장에 대한 자발적인 거부. 이것이 곧 Expert Beginner라고 명명하는 자다

The Expert Beginner

  • Expert Beginner 단계는 학습자가 큰 그림을 보지 못하는 단계 중에서 가장 마지막에 있다
  • 다르게 말하면 학습자는 자신이 Expert 라고 착각할 수 있는 단계인 것이다
  • Competent 단계의 학습자는 자신이 부족한 부분이 무엇인지를 알고 있다
  • Advanced Beginner들은 “기술이 없는” 쪽에 가까우므로, “내가 이해할 수 없으면 분명 중요하지 않은 걸거야”라는 생각에 사로잡힌다

Advanced Beginner들은 결국 양갈래길에 놓이게 된다

  • 하나는 Competent로 나아가서 큰 그림을 ë³´ê³  자신이 어디에 있는지를 자각하는 것이다
  • 하나는 자신들이 이미 Expert로 졸업했다고 생각하여 Expert Beginner에 속하게 되는 것이다

다시 볼링 경험으로 돌아보자

  • 처음에는 볼링을 잘 못했겠지만, 따기 쉬운 열매들을 신나게 따며 빠르게 실력을 키워갔다
  • 스스로의 성장이 꽤 빨랐던 점을 감안하여 내가 볼링에 꽤 재능이 있다고 결론을 내렸다
  • 한 걸음 더 나아가 내가 볼링 스킬의 정점에 올랐다고 꽤 합리적으로 결론을 내렸을 수도 있다
  • 왜냐하면 주변에는 나보다 잘 하는 사람이 없으니까 내가 어떤 경지에 오른 것이 아닐까 하는 생각이 든다

🧐 나는 내 자신에 대한 긍정적 평가를 서서히 논리적 오류에 활용하게 된다

  • “나는 전문가야. 전문가는 뭐든 잘 하게 되어있고, 지금 하는 것도 모두 제대로 하고 있어”
  • 각 단계에서 학습자는 다음 단계로 넘어가거나 혹은 현 단계에 그대로 머물 수 있다
  • 성장을 위해서는 스스로가 아직 배울 것이 많고,아직 목표에 도달하지 않았다는 사실을 스스로 인지해야 하므로 Expert Beginner는 더 이상 어떠한 진전도 이룰 수 없다
  • Expert Beginner는 매주 똑같은 볼링 기술과 습관을 이용하면서 300점중에 160점을 따는 데에 달인이 되었다 😤

소프트웨어 업계의 Expert Beginner들

  • 볼링에서는 몇 분 간격으로 피드백이 돌아오지만, 소프트웨어는 수 개월, 혹은 수년에 걸쳐 피드백이 돌아오는 경우가 많다
  • 하나의 프로젝트를 진행하면서 개발자는 코딩, 소스코드 관리, 수정, 테스트 그리고 이전의 디자인과 설계 등을 유지보수 하는 경험을 하게 된다
  • 이 모든 과정을 개발자가 운이 좋아 6개월 안에 모두 경험했다고 친다면 5년 후에는 10ê±´ 남짓의 애플리케이션 개발 경험을 가지게 된다
  • 이는 곧 소프트웨어 개발자가 빠르게 성장하는 기간이 몇 주가 아닌 몇 년일 확률이 높다는 뜻이다
  • 빠르게 기술을 습득해 나가면서 주니어, 시니어, 리드 혹은 아키텍트 또는 총책임이라는 직급을 넘나들 것이다
  • 그리고 헤드헌터들 로부터 락스타, 닌자 등의 별명도 얻게 될것이다

돌아볼수 있는 기회가 필요하다

  • Expert beginner 단계로 자연스럽게 입장하는 것을 막을 수 있는 유일한 방법은 피어 리뷰와 개발자 커뮤니티와의 교류 뿐이다
  • Advanced Beginner가 더 큰 커뮤니티와의 교류에 관심이 없고 주변 동료들과도 교류하지 않는다면 어떻게 될까?
  • 인지부조화를 해소하고 현 상황에서 도피할 수 있기 때문에, 그들 역시 남 탓으로 상황을 해결하려 한다
  • 이미 Expert 레벨에 도달하였으며, 더 이상 올라갈 곳이 없다고 생각하는 것이다

Expert Beginner 되짚어 보기

  • Expert Beginner들은 큰 그림을 ë³¼ 수 있을 정도의 역량이 없으므로, 자신들이 expert가 아니라는 사실을 자각하지 못한다
  • Expert Beginner는 “내 기술 세트 안에 들어있지 않거나 내가 경험해보지 않은거라면, 딱히 값어치 있는게 아니다”라고 ê²°ë¡  짓는 자기중심적인 마인드를 말한다
  • 또 다른 특징은 그들이 집단 내에서 어느 정도의 권위나 영향력을 가진 위치에 올라 있다는 것이다
  • 작은 스타트업에서는 같은 일을 하는 동료도 없으니 그의 기술을 평가할 수 있는 사람은 나 자신과 IT 지식 없이 칭찬을 해주는 사람들 뿐이다
  • 그는 장님들만 있는 거리의 외눈박이이며, 굉장히 현실적이고 동시에 불운하게도 지역적(local)전문가이다

다시 볼링으로 돌아가보자…

  • 볼링장들의 매출이 선수들이 얼마나 볼링을 잘 치는가에 달려 있다고 가정해보자
  • 작은 마을에 스타트업 볼링장에서 볼링을 치고 있다
  • 나나 그들이나 내가 뭘 하고 있는지는 잘 모르지만,내가 거기서 볼링을 치기 시작한 후로, 자세가 우스꽝스럽긴 해도 나의 실력이 빠르게 느는것을 발견한다
  • 평균점은 올라가고, 볼링장은 돈을 벌고, 모든게 완벽하다
  • 이윤과 성공적 커리어 앞에서 누가 불만이 있겠는가…….
  • 내 평균이 150을 웃돌고 나의 성장세에 끝이란 없을 것처럼 보일때쯤,볼링장은 몇몇 초보 선수들을 영입하여 내 밑에서 일하게 하기로 결정했다

볼링장 고인물

  • 그들의 첫 출근 날, 나는 어떻게 공을 드는지를 보여주고 어떻게 나처럼 걷는지를 가르친다
  • 그들이 엄지와 손가락 구멍들은 어디에 쓰는 거냐고 물어보면, 나는 그냥 “아 그건 신경쓰지마. 여기선 그거 안 써”라고 답한다
  • 시간이 지나고, 그들 대부분은 내 식대로 하는 것에 만족한다
  • 하지만 몇몇은 의지가 충만하여 여유 시간에 연습을 따로 하기 시작한다
  • 그런던 어느날, 그들이 나에게 “TV에서는 손가락을 ê³µ 안에 넣고 쳐서 엄청 높은 점수를 내던데요. 200 이상이요!”
  • 그들은 내가 자신들 만큼이나 성장에 관심이 있기를 기대하지만, 나는 이렇게 반응하고 그들은 풀이 죽고 만다

새드엔딩

  • “아냐. 여기선 그렇게 안해.나는 너희들이 태어나기 전부터 볼링을 했고, 내가 어떻게 하고 있는지는 내가 제일 잘 알아.. 그리고 TV에서 나오는 걸 다 믿으면 안돼”
  • 내가 볼링장에서 더 오래 일했으니, 나에게 결정권이 있다는 것을 그들에게 상기시킴으로써 집단의 혁신을 빠르고 확실하게 제거한다
  • 이 시점에서 열정적인 선수들 중 절반은 “공 안에 손가락을 넣는”방법을 포기하고, 절반은 다른 볼링장에서 퇴근 후에 만나 조용히 연습을 한다
  • 시간이 지나 그들의 점수는 내 점수를 제치고, 그들은 이 접근법이 더 우수하다는 것을 객관적으로 증명했으니 변화를 일으킬 수 있다고 믿게 된다
  • 하지만 내가 화를 내며 그들의 성과는 그저 꼼수일 뿐이며,나도 한번은 205점을 낸 적이 있다고 한바탕 설교를 하고 나자 그들은 남은 동료들을 두고 사라진다
  • 볼링장은 가장 높은 점수를 내는 선수들을 다른 볼링장이 아닌, Expert Beginner에게 빼앗겼다

🤢 전체를 오염시킨다

두 가지 교훈

  • 떠나지 않은 볼링선수들은 두 가지 흥미로운 교훈을 얻게 된다
  • 첫번째는 그들이 자신의 차례를 기다리면, 실제 능력과 상관없이 무조건적인 권력을 얻게 된다는 것
  • 두번째는 이 볼링장에서는 그저 그런 상태로 있어도 괜찮거나, 심지어는 더 좋을 수도 있다는 것이다
  • 새로운 선수들이 고용되었을 때, 회사의 ‘라인’을 유지하고 본인들의 차례를 기다리기 위해서 그들의 과거 경험 그대로 신입들에게 나쁜 방법을 강권하는 것에 동참한다
  • Expert Beginner는 자신의 행동과 본보기로 새로운 Expert Beginner들을 만들어내고 이는 곧 Expert Beginnerism의 문화를 생성하는 것이다
  • 또 하나의 흥미로운 전개는 채용 프로세스에 미치는 영향이다
  • 열정 넘치는 어린 신입들을 만나기 싫은 나는, 채용 프로세스를 그저 그런 “팀 플레이어”들을 모집하는 방향으로 바꾼다
  • 뜬구름 잡는 “손가락에 공을 넣기” 같은 소리나 해서 나의 위치를 위협하지 않을 팀 플레이어들이다

사해 효과의 완성

  • 이 채용 결정은 명시적인 행동 이라기보다 무의식, 혹은 합리화에 가깝다
  • “나보다 더 나은 사람들은 채용하지 않겠다”가 아니라“이 사람들은 나의 “고정관념을 깨는” 또한 “전문적인” 방법들과는 어울리지 않아”라고 생각하는 것이다
  • 이제 볼링장은 Expert Beginner 패거리들에게 빼앗기게 된다
  • 이에 “사해 효과”가 완성, 실현되는 단계임을 알 수 있다

실제 소프트웨어 개발 환경에 적용 가능할까?

  • 소프트웨어 개발 환경의 부재
    • 자동화 테스팅의 부재
    • 거대한 함수나 클래스들
    • 수 많은 복사/붙여넣은 코드
    • 오래 되었거나 적절히 못한 툴 사용
  • 자신들이 무엇을 모르는지 자각하지 못하고, 전문가인 본인들이 모르는 것은 알 필요가 없다는 생각한다
  • 이것은 재능있고 열정적인 사람들을 떠나게 하거나 혹은 그런 집단에 합류하게 만드는 유해한 문화이다
  • Expert Beginner들은 사실은 인격적인 문제가 없을 수도 있다
  • 나는 이것이 외부와 격리된 환경, 낮은 기대치, 그리고 실제로 효율성 산출이 불가능한 그저 그런 수행능력에 대한 꾸준한 보상이 만들어낸 자연스러운 결과라고 생각한다

현실로 돌아와서

  • 우리 산업의 특성에 대해 한번 생각해볼 필요가 있다
  • 릴리즈 일정이 늦어지고, 버그는 많고, 예산까지 초과 했을 때에 따로 릴리즈 팀을 운영하는 회사를 몇번이나 보았는가?
  • 마치 작동할 것처럼 보였지만 결국엔 지면에서 떨어지자 멈춰버리고, 추락하는 로켓을 만들고 나서도 승급을 하는 로켓 기술자들 마냥, 그들은 그렇게 하고도 승급을 하고 포상을 받는다
  • 나는 우리 업계가 완전히 바뀌어야 한다고 불평하고자 하는 것이 아니다
  • 다만, 외부 피드백과 우리 자신의 인식에 따라 얼마나 쉽게 실제 배운 것보다 많이 알고 있다고 생각하게 될 수 있는지를 설명하고 하는 것이다

🦁 정제하지 않고 진전하는 문화 만들기

정체하지 않고 진전하는 문화 만들기

  • 이번에는 이러한 사태를 최대한 방지할 수 있는 비교적 간단한 방법들을 제시해 보려고 한다
  • 첫째로, Expert Beginner의 덫에 빠지지 않기 위해서 제일 중요한것은 자기 자신의 들뜬 감정을 믿지 않는 것이다
  • 자신이 한 것에 대해서 적절한 자신감을 가지되, 이성적인 주장 혹은 증거 없이 자신의 학습이 완성 되었다거나,나는 직급이나 연차가 이 정도 되었으니 질문을 받을 필요가 없다거나 하는 식의 생각을 지양해야 한다
  • 건강한 겸손함과 지속적으로 성장하기 위한 노력을 겸비하고, 객관적 수치들을 주관적인 고려사항들보다 우선순위에 둔다면 Expert Beginner로부터 충분히 거리를 둘 수 있을 것이다

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

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

정체하지 않고 진전하는 문화 만들기

  • 가능하다면, 몸소 실펀해서 보여줌으로써 주도 해보라
  • 만약 이것이 모두 소용이 없다면, 내 개인적인 생각으로 이미 가망이 없는 것이니 가능성이 있는 곳으로 떠나기 바란다
  • 당신의 그룹이 성장하고 있지 않다면, 부패하고 있는 것이다

출처