털어놓기 어려웠던 개발자로서 고민을 해결해준 책, 함께 자라기

내가 정말 잘할 수 있을까? 아니, 우리가 정말 자랄 수 있을까? 스스로 변하고 싶지만 계속 실패하는 사람, 혹은 조직을 개선하기 위한 시도를 하다가 오히려 데어 본 사람, 하루하루가 답답한 사람들을 위해 이 책을 썼습니다. (함께 자라기, 김창준 저)

고민의 굴레, 슬럼프

저는 작년 한 해 동안 많은 고민과 번뇌에 둘러싸여었습니다. 더 많이 공부하고 노력하는데 어찌 된 일인지 성장하고 있지 않다는 느낌은 점점 짙어져만 갔습니다. 제 능력이 부족한지 의심하기도 하고 환경을 탓하기도 했습니다. 핑계는 참 많았고 타협은 늘 이어졌습니다. 하지만 결국 나아지는 것은 없었습니다. 지금에서야 여유 갖고 돌아보니 오히려 당시엔 부정적인 생각에 점점 더 갇혔던 것 같습니다.

개발자란 직업을 갖고 있는 한 공부는 계속 이어져야 하고 쉴 때도 손에서 노트북을 놓지 않았습니다. 끊임없이 공부해야 하는 직군이라 더 심적인 부담도 있었습니다. 제가 이렇게 방황하고 있는 와중에도 다른 유능하신 분들의 발자국과 비교하며 제 한계를 무의식중에 정해버린 적도 있습니다.

개발자가 되고 싶었던 꿈은 이뤘지만 하고 싶은 개발보다 해야 되는 개발을 하면서 회사 코드는 제 것이 아니라는 생각이 더 커졌습니다. 퇴근 후에는 제가 하고 싶은 공부를 하지만 막상 써볼 곳이 없으니 크게 진도가 나가지 않고 이것저것 들춰보다 끝나기 일쑤였습니다. 회사에서는 업무 처리하기도 바쁜데 다른 분들은 어찌 그렇게 러닝 커브도 좋으신지 더 자괴감이 들었습니다.

네가 오길 기다렸어

점점 현실로부터 도망치고 싶어지기 시작한 저는, 어쩌면 개발자가 적성에 맞지 않나라는 생각마저 들기 시작했습니다. 이대로는 안 되겠다 싶어 주저하다 친한 개발자분에게 고민을 털어놨습니다. 그때 그분은 구구절절 많은 대답 대신 <함께 자라기> 책을 읽어보라고 권해줬습니다. 함께 자라기는 이미 제가 소장하고 있었지만, 아직 읽기 전이었습니다. 가지고 있던 책이라 그날부터 바로 읽기 시작해 단숨에 읽었습니다. 좋은 내용이 너무 많아 밑줄이 없는 쪽이 없을 정도였습니다.

이 책은 마치 저를 기다린 것 같았습니다

‘스스로 변하고 싶지만 계속 실패하는 사람, 혹은 조직을 개선하기 위한 시도를 하다가 오히려 데어 본 사람, 하루하루가 답답한 사람들을 위해 이 책을 썼습니다.‘로 머리말을 시작하는데 가슴이 벅차올랐습니다.

책에 밑줄 치지 않은 곳이 없을 정도로, 즐겨찾기가 무의미할 정도로 모든 페이지가 주옥같은 책입니다

잘하기에서 자라기로

학교 교과 과정을 이수하며 배운 학습 방법은 대부분 개별적이고 순차적이며, 교과서와 교재에서 시험 범위가 정해져 있습니다. 이 시험이라는 도구를 통해 학생 성취도 평가를 진행합니다. 결국, 그 이야기는 정답이란 것이 늘 존재한다는 것이죠. 정답은 더 나아가 합격과 자격증이라는 목표로 이어지게 됩니다. 이러한 학습 방법은 학교 학습이라고 칭하며 결과 중심적이고 수치에 치중된 방식입니다. 이와 반대되는 개념을 소개하는 것으로 책은 시작합니다. 바로 야생 학습입니다.

야생 학습은

  • 대부분 협력적이며
  • 대부분 비순차적이고
  • 대부분 자료에 한정이 없으며
  • 대부분 명확한 평가도 없고
  • 대부분 정답이 없으며
  • 대부분 목표가 불분명하고 바뀌기도 합니다.

야생 학습이란 표현은 낯설지만 사실 제가 지금 하고 있는 개발 과정과 다르지 않았습니다. 하나의 요구사항을 끝냈다고 해서 그 기능은 그것으로 정답이고 불변하지 않으며 그 기능의 평가가 절대적이라고 보기 어렵습니다. 더 나은 비즈니스를 모색하며 새로운 목표를 짧은 기간 안에 정하고 그 목표를 실현하기 위해 다양한 기술 스택을 모색하기도 합니다. fail fast를 위해 우리는 새로운 기술의 도큐먼트를 목차대로 모두 정독한 뒤 개발을 시작하지 않습니다. 자바 API를 A to Z로 읽지 않는 것처럼 말이죠.

당신이 제자리 걸음인 이유

1만 시간의 법칙을 모두 한 번쯤은 들어보셨을 것입니다. 그럼 우리는 양치질과 세수를 평생 해왔으니 이 분야의 달인일까요? 우리는 양치질 전문가라고 할 수 있을까요? 좀 더 나아가 회사에서 하는 개발은 1만 시간 안에 해당까요? 시간이 흐름에 따라 매년 연차가 저절로 쌓이다 어느 날 10년 차의 경력자가 되었을 때 저는 전문가라고 말할 수 있을까요?

어떠한 장치 없이 흐른 업무 시간은 1만 시간에 포함되지 않습니다. 저는 이 또한 제 노력의 시간에 포함된 것이라고 착각했고 저와 같은 분들도 계실 거로 생각합니다. 하루 8시간에 퇴근 후 추가로 하는 공부까지 했지만 성장하지 못한다는 느낌은 틀린 것이 아니었습니다. 하지만 회사 일을 하는 시간도 1만 시간에 포함할 수 있는 수련법이 있습니다.

바로 의도적 수련입니다. 악기 연주자에게 공연 시간은 이런 의도적 수련이 되지 못한다는 연구가 있습니다. 자신의 기량을 향상할 목적으로 반복해야 의도적 수련이 되는 것이죠.

작업 난이도

위 그림에서 A 영역의 일은 실력이 작업 난이도를 초과하는 지역으로 지금 당장은 쉽지만 조금만 지나면 지루함을 느끼게 됩니다.
B 영역은 실력보다 작업 난이도가 더 높은 지역으로 불안함이나 두려움을 느끼게 됩니다.
그럼 가운데 위치한 C 영역은 실력과 작업 난이도가 엇비슷한 부분으로 미하이1는 이 부분에서 인간이 몰입을 경험한다고 말합니다. 교육학에서는 학습 시 불필요하게 인지적인 부담을 주면 어떤 것도 제대로 학습하기 어렵다는 말을 합니다.


즉, 의도적 수련을 위해서는 적절한 난이도가 필수 요건입니다. 자신이 업무 시간 중에 불안함이나 지루함을 느끼는 때가 대부분이라면, 실력이 도무지 늘지 않는 환경에 있는 겁니다.

작업 난이도

제자리걸음에서 벗어나는 방법은 난이도를 조절하며 몰입 영역의 안으로 이동하는 것입니다. 평소 마우스를 많이 사용해 개발 했다면 이번에는 마우스를 사용하지 않고 키보드로만 개발 하거나, 디버거를 늘 쓰는 경우 디버거를 쓰지 않거나 하는 것이죠. 혹은 이번에 개발 해야 되는 내용이 쉽다고 느껴지면 시간 제약을 두는 것입니다. 10분 안에 동작할 수 있는 코드 만들기 또는 TDD를 사용하지 않았다면 TDD를 적용해 개발해보기 등으로 내게 스스로 미션을 주는 것입니다.

저도 TDD에 관해서 공부는 했지만, 실무에서 막상 쓰기 어려웠습니다. 늘 비즈니스에서 쫓겨 TDD를 실천할 마음의 여유가 없었습니다. 그러다 며칠 전 매우 작은 컨버터를 하나 추가해야 했습니다. 사용자 이름이 긴 경우 일정 길이까지만 보여주고 나머지는 …으로 줄임 표시를 하는 것이죠. 평소 같았으면 쉬운 내용이니 빨리 개발해놓고 여유를 부렸겠지만, 이번에는 TDD를 적용해보기 마음먹었습니다. 빨간 줄의 압박을 받으며 단계별로 코드를 작성하고 녹색 신호등을 보고, 다시 빨간 줄을 보고 녹색 신호등을 보며 재밌게 코딩했습니다. 막상 TDD를 실무에서 해보니 테스트 코드를 추후 작성해야 한다는 부담감도 없어졌고, 생각보다 지속적으로 도입해볼 만 하겠다는 용기도 생겼습니다.

이소룡은 3분안에 상대를 제압한다는 셀프 미션을 가지고 훈련했습니다.

실력보다 작업 난이도가 높은 경우가 찾아올 수도 있습니다. 이때는 혼자서 해결하기는 어려우므로 페어 프로그래밍을 하거나 다른 툴 사용을 도입하거나 과거 비슷한 일을 했던 경험을 복기하며 이미지 트레이닝을 하면 도움이 됩니다. 혹은 작업 난이도를 낮춰 시작하면서 점차 살을 붙여가는 것이죠.

의도적 수련

이런 의도적 수련을 좀 더 깊이 있게 다룬 글이 있어 소개하고 싶습니다. SI 개발 10년 차인데 코드 좀 봐주세요란 기고입니다.

본문 중 업무와 관련되지 않는 분야에 대해 별도의 시간을 투자하여 하는 공부는 깊이 있는 기술을 익히는데 한계가 있고 효율적이지 않기 때문에 권장하지 않는다고 합니다. 실무에서 얻은 지식과의 차이는 매우 크기 때문입니다. 현재 개발/운영 환경을 개선하며 견고하게 만들려는 미션을 스스로 제시하고 이 부분에 대해 깊이 파고들면 기능 하나를 만드는 것도 시간이 오래 걸리게 된다고 말합니다. 이렇게 부족한 시간은 원래 다른 기술 스택을 공부하려고 했던 시간을 이용해서 채울 수가 있고 실무에 적용해보며 계속 순환을 하도록 하는 것을 강조합니다.

그럼 여기서부터 이제 회사 일과 나를 위한 학습의 경계가 모호해지게 되며 좀 더 몰입의 영역으로 다가갈 수 있게 됩니다. 이렇게 의도적 수련을 할 수 있는 것이라 소개합니다.

초반에 제 고민을 설명했을 때 저는 효율적이지도 못하고 깊이 있게 들어가기 어려운 공부를 계속하며 정체되었다고 느낀다고 했습니다. 잘못된 수련을 하고 있었던 것이죠. 물론 새로운 것을 익히며 도입해볼 수 있겠지만, 기존 환경에 대해 깊게 관심을 갖지 않았다면 새로운 기술도 크게 빛을 바라기는 어렵습니다.

빠른 피드백

불확실한 환경에서 빠른 실행과 피드백을 요하는 애자일은 소프트웨어 개발 중 학습을 병목 요인 중 하나로 봅니다. 일반적인 프로젝트는 설계 단계의 피드백을 몇 달 후에 받게 됩니다. 애자일 프로젝트는 지금 내가 한 행동의 피드백을 하루 후, 일주일 후 등 여러 주기를 통해 지속적으로 얻을 수 있습니다. 직전에 저지른 실수는 바로 다음 주기에 교정할 수 있어 사이클을 빠르게 수정하며 운영할 수 있죠.

쾌속 학습

이상향의 프로그램을 한 번에 만들기보다는 지금 동작 가능한 작은 단위로 빠르게 피처를 만들어 나가며 계속 피드백을 받는 것이 중요합니다. 저는 전자의 방식을 채택했으며 마치 수영을 배우러 갔는데 풀장 밖에서 선생님이 수영하는 모습만 보고, 책에 쓰여있는 팔다리 움직이는 방법만 보고 있는 격이었습니다. 작게라도 만들어보는 것이 중요하며 새로운 기술을 마주할 때 무엇을 만들지를 정해놓고 빠르게 훑고 만들어 나가는 것이 중요합니다.

한계는 스스로 정해버리는 것

저는 잘못된 수련을 하면서 좌절감을 느끼며 제 한계를 낮추기도 했습니다. 깊고 어려운 영역의 일은 내가 할 수 있지 않다고 말이죠. 그러던 와중에 인프런의 한 통의 광고 메일이 제게 경종을 울렸습니다.

피터 드러커2는 사람은 스스로가 성취하고 획득할 수 있다고 생각하는 바에 따라 성장한다고 했습니다. 제가 정한 한계에 부딪혀 더 깊은 슬럼프로 빠지게 되고 결국 극복할 수 없게 되었을지도 모르겠습니다. 물론 아직 야생 학습과 의도적 수련을 십분 활용하진 못하지만 적어도 학교 학습과 실행 프레임에 가두는 수련은 하지 않고 있습니다. 그리고 무엇보다 할 수 있다는 자신감을 되찾았고 남들과 비교하지 않고 제 길을 걸어가리라 다짐했습니다.

그동안은 트렌드를 쫓기에 바빴고 만들어지는 결과물이 없으니 피드백을 받을 일도 없었습니다. 그럴수록 회사 업무에서 더 멀어지고 싶다는 생각만 짙어지는 악순환이었습니다. 그래서 러닝 커브가 좋아지지 못했죠. 하루는 개발자 선배에게 여쭈었습니다.

어떻게 러닝 커브를 좋게 할 수 있을까요?
단순히 튜토리얼에 있는 내용으로 프로그래밍했다고 해서 러닝 커브가 좋다고 하지는 않잖아요.

선배 역시 단 한 단어로 답했습니다. 바로 관심입니다. 관심의 차이가 좋은 러닝 커브를 만든다고 합니다. 관심이 없으면 더 나아갈 지식이나 원리를 알고 싶어 하지 않는다는 것이죠. 더 좋은 성능이나 더 빠른 적용을 위해 어떻게 하면 될지 고민하는 것은 관심 없이는 어렵다는 것입니다. 이 이야기는 앞서 의도적 수련에서 언급한 맥락과 이어진다는 것을 알아차릴 수 있죠.

인공지능으로 대체 가능한 위험군에 속하는 컴퓨터 프로그래머
다른 사람이 준 스펙대로 개발하는 것을 주 업무로 하는 컴퓨터 프로그래머가 있습니다. 협상과 설득이 크게 필요치 않죠. 반대로 소프트웨어를 뭘 만들지 고민하고 설계하는 부분이 포함되며, 과정에서 타인과 상호 작용하는 업무가 많은 소프트웨어 개발자가 있습니다. 개발자라는 같은 범주에 속하지만 일하는 과정은 다른 두 직업 중 컴퓨터 프로그래머는 인공지능으로 대체 가능한 위험군에 속합니다. 이런 위험에서 살아남기 위해서는 인공지능이 대체하기 어려운 암묵지와 직관을 잘 학습하는 사람들이 높은 경쟁력을 가질 것입니다. 이 지점에서 중요한 포인트 역시 관심이라고 생각합니다.

강력 추천

돌이켜보니 작년은 슬럼프였습니다. 성장이 정체되고 잘못된 방법으로 수련했으니 나아지기 어려웠습니다. <함께 자라기> 를 통해 저를 돌아볼 수 있었고 슬럼프에서 벗어날 수 있었습니다. 저와 같은 고민을 하고 계신 분이라면 <함께 자라기> 일독을 추천합니다. 이 리뷰 글에서는 주로 야생 학습과 의도적 수련에 관한 이야기를 중점으로 다뤘으나 팀원들과 함께 성장하는 방법, 애자일 도입 방법에 관한 이야기도 있습니다.

마지막으로 책은 읽을 책을 사는 것이 아니라 산 책중에 읽는 것이라고 합니다 :-)
Thanks to 숨비

참고 할만한 글


  1. 미하이. 미국의 저명한 심리학자로 몰입에 대한 연구로 유명합니다.
  2. 피터 드러커. 미국의 경영학자. 현대 경영학을 창시한 학자로 평가받으며 경제적 제원을 잘 활용하고 관리하면 인간생활의 향상과 사회발전을 이룰 수 있다고 생각했습니다. 그는 이런 신념을 바탕으로 한 경영관리의 방법을 체계화시켜 현대 경영학을 확립하였습니다.