몇 달 전,
나는 한 아티클을 보게 되었다. 이디야에 앉아서 단위 테스트에 대한 공부를 하다가 우연히 보게 된 미디엄 아티클이었다. 아티클의 제목은 “더 이상 배우려 하지 않는 개발자 : Expert Beginner의 등장” 이었다. 가벼운 마음으로 링크를 눌렀고, 무거운 마음으로 아티클 화면에서 2시간동안 벗어나지 못했다. 글에서 말하는 더 이상 배우려 하지 않는 개발자: Expert Beginner가 나같다는 생각이 들었기 때문이다.
아티클에서 설명하는 Expert Beginner에 대해서 설명하려면 기술 습득 5단계에 대해 설명해야 한다. 글에서는 기술 습득 5단계를 이렇게 표현했다.
Novice(초심자) - Advanced Beginner(숙련된 초심자) - Competent(실력을 갖춤) - Proficient(능숙함) - Expert(전문가)
Plain Text
복사
Novice에서 Competent로 올라가는 그 중간 단계 Advaned Beginner에서 Expert Beginner가 발생하게 된다. 우리는 Novice 단계에서 “낮은 곳에 달린 열매”들을 열심히 따면서 빠르게 성장한다. 하지만 성장이 지역적 최고점에 도달하고 나서 완전히 멈추면 “성장의 구속”에 이르게 된다. “성장의 구속”으로 인한 기술 능력 정체에 이르는 두가지 이유는 이러하다. 첫 번째 이유는 재능의 벽이다. 하지만 첫 번째 이유는 Expert Beginner와는 무관하기에 넘어가자. 두 번째 이유는 자발적으로 의미있는 성장을 하려는 시도를 멈추고자 하는 마음가짐이다.
근 1년간 나는 나의 기술적 성장이 멈췄다고 생각했다.
애플 아카데미에 간 이후에 기술적으로 성장을 할 시간이 부족했다. 그 부분이 항상 불만이었기에 아카데미에 간 이후에 주변 지인들에게 기술적으로 성장을 할 수 없어서 아쉽다는 얘기를 많이 했었다. 지금 생각하면 그러한 상황 속에서 내 갈길을 가면 될텐데 내 스스로도 현 상황에 안주한 듯 하다.
오히려 다른 곳에 마음을 줬다. 디자인 공부도 하고, 기획에도 관심을 가졌다. 기술보다는 다른 분야에 공부를 하면서 조금 더 T자형 인재가 되어보려고 했다. 그렇게 마음을 줬던 이유도 내가 다른 러너들보다 Swift 공부를 조금 더 오래했기 때문에 잠깐 기술적인 성장은 멈추어도 괜찮지 않을까 하고 생각했던 거 같다. 다른 러너들이 Swift, UIKit에 대한 질문을 했을 때 대충이라도 알려줄 수 있으니깐, 그정도의 실력은 되니깐 다른 공부를 해도 괜찮지 않을까 생각했다.
하지만, 지금 생각해보면 완벽하게 아는 상태가 아니었다. 그 때, “내가 왜 이렇게 밖에 답변을 해주지 못했을까”를 깨닫고 더 꼼꼼히 지식을 쌓았어야 했다. 하지만, 괜찮다고 생각했었다.
괜찮다고 생각한 첫 번째 이유는 대충이라도 설명할 수 있기 때문이었다. 지금 생각하면 작년으로 돌아가서 등짝 스매싱을 때리고 싶다.
두 번째 이유는 그렇게 밖에 대답을 못하는 나에게 따끔하게 충고를 해주는 사람이 없었다. 대부분 iOS 개발을 처음 하는 입장이라서 심도 깊은 질문보다는 ‘어떻게 구현하는지에 대한 질문이라던지’, ‘오류 해결이라던지’ 가 대부분이었다. 그래서 “내가 왜 이것밖에 대답을 못하지!” 라고 생각을 못했던거 같다. 그 분들도 당장 눈 앞에 있는 문제를 해결하는게 우선이라서 그 이상 묻지 않으셨던 거 같다. 지금 생각하면 그것밖에 대답을 못했기에, 정성스럽게 답변해드리지 못했기에 죄송하다고 말씀드리고 싶다.
마지막 이유는 내가 그냥 현재 상황에 만족했기 때문이다. 성장하지 않지만, 다른 공부를 위한거다, 다른 사람들에게 도움이 되면서 나 스스로도 알게 모르게 공부하고 있는거다 라고 자기 합리화를 하면서 현재 상황에 만족했다. 자발적으로 의미있는 성장을 멈췄기 때문에 나는 Expert Beginner 였다.
특히, 내가 Expert Beginner 였지 않았을까 하는 부분은, “모른다”라는 말 때문이다. 나는 “모른다”는 말을 다른 사람들에게 잘 안했던 거 같다. 했을지도 모르지만 일단 내 생각엔 잘 안했다. 잘 모른다면 조금만 찾아보고 답하겠다고 했다. 모른다고는 잘 안했다. Expert Beginner는 모른다는 말을 안한다고 한다. 왜냐하면, 자신이 다 아는 상태라고 착각하기 때문이다. 물론, 착각하진 않았다. 주변에 잘하는 개발자들이 많기 때문에 내가 얼마나 부족한지는 너———무나도 잘 안다. 근데 모른다고 하는게 뭔가 두려웠던 거 같다. 다른 사람들이 “듀나는 다 알 거야. 듀나한테 물어보면 다 알려준다.” 라고 생각해서 부담감에 뭐라도 알려줘야 한다고 무의식적으로 그랬던 거 같다. 근데 나도 모르는 게 산더미다. 이제라도 얘기한다. 난 말하는 감자다. 같은 감자니깐 답변을 기대하지 말아달라. 나도 모른다.
하지만, 듀나는 성장을 원했다.
“나는 진짜 부족함 덩어리구나” 라는 생각이 든 사건들이 있다. 바로, 2번의 면접 경험이었다. 그렇게 답변하고 있던 나를 당장 내 신성한 줌 화면에서 사라지라고 내치지 않으신게 대단하리만큼 질문에 답변을 못했다. 답변보다 음오아예를 더 많이 했다. 뭐라도 알고 있다고 생각했는데, 그 무엇도 알지 못했다. 근자감이었다.
면접 후 피드백으로 들었던 답변 중에 마음에 새겼던 두 답변이 있다.
첫 번째는 내가 iOS 개발을 해 온 시간에 비해서 실력이 부족하다는 말씀이었다. 그 말을 보고 머리를 맞은 거 같았다. 오랫동안 iOS 개발을 했지만 매일 겉만 핥은 거 같다. 수박 겉만 핥고 나는 수박을 맛봤다고 으스댔다. 아무도 얘기해주지 않았고, 항상 좋은 말만 들었는데 실력이 부족하다는 말을 들으니깐 머리가 띵했다. 생각해보니 내가 공부한 기간보다 내 실력이 좋지 않다는 생각이 들었다. Expert Beginner 아티클에는 이런 말이 있다.
“10년의 경험인가 아니면 같은 경험을 10년동안 한 것인가.” 나는 후자의 길을 걷고 있는 기분이었다. 아카데미에 있는 1년간 내 코딩 스타일이 크게 바뀌지 않았다. 다른 러너들이 아직 실력이 부족하기 때문에 나도 같이 내 기준치를 낮췄다. 다양한 아키텍쳐들보다 그냥 내가 원래 하던거에 맞춰서 잘하기만 했다. 결국, 같은 경험을 다양하게 했다. 같이 도전하고 같이 실력을 늘려갔으면 됐는데, 내 스스로가 기준치를 낮추고 만족했다.
그 상황에서 다양한 분야를 아는 개발자가 되고 싶다는 생각으로 이곳저곳 쑤셔봤다. 개발도 완벽하게 아는 상태가 아닌데 다양한 분야의 겉을 핥고 있었다. 진정한 겉핥기 인간이 되었다. 더이상 겉만 핥으면 안된다는 생각이 들었다.
마음에 새겼던 두 번째 말은 질문에 대한 제대로 된 답변을 할 줄 알아야 한다는 말이었다. 면접에 가서 질문에 대한 제대로 된 답변을 못했던 거 같다. 왜냐하면, 제대로 된 답변을 할 수 있을만큼 잘 알지 못하니깐. 그니깐 일단 가서 관련된 다른 내용이라도 뱉는거다. 잘 모르면 말이 길어지는데, 딱 그 꼴이다. 나는 말이 너무 많았다. 한 마디로 정리할 수가 없으니깐 투머치 토커가 되는거다.
나는 야생형 개발자이기 때문에 일단 기술을 써보고 그 기술에 대한 공부를 하는 편이었다. 하지만 “기술을 써보고” 까지만 했다. 깊게 공부하진 않았지만 써봤기에 해당 기술을 안다고 착각했다. 그렇기에 내가 설명을 하면서도 “그렇다던데”, “그럴걸요?” 라는 애매한 단어를 사용하게 되었다. 즉, 나는 몰랐다. 다시 말하지만 말하는 감자였다.
애매하지 않은 개발자가 되고 싶었다.
나는 이전에 내가 쓴 기술에 대해서 따로 정리하지 않았다. 일단 해당 기술을 사용하고 “음~ 썼으니깐 이젠 아는 기술이야!” 라고 생각했다. 아는 기술이니 정리가 필요없었다. 아는 기술이라도 돌아서면 까먹는게 인간이니깐 나는 그 기술을 언젠가 까먹게 되었다. 알던 기술이 모르는 기술이 되었다. 하지만 내 머릿속에는 아는 기술로 인식이 되기 때문에, 대충이라도 써 본 기억은 있어서 있어 보이게 말할 순 있기에, 더 공부하려고 하지 않았다. 내가 모른다는 사실을 모르고 있었다.
그래서 내가 쓴 기술을 정리했다. 애초에 그 기술을 사용하면서 어떻게 사용했고, 중간에 어떤 문제를 만났고 그걸 어떻게 처리했고를 글은 아니더라도 스크린샷으로라도 남겼다. 그 후에 문제 상황을 정리하고 어떻게 내가 문제를 헤쳐나갔는지 글로 적었다. 그리고 다른 사람들에게 그 글을 공유했다. 그 글을 읽고 다른 사람들이 질문을 해줬고, 나는 그들이 잘 이해할 수 있도록 더 자세하게 공부했다. 그 부분에서 가지로 뻗어나가는 선수 지식들이 있으면 그 부분을 먼저 공부했다. 그래야 내가 왜 그렇게 했는지, 나도 납득이 가고 그들도 납득할 수 있기 때문이다.
단순히 리팩토링을 하기 위해서 아키텍쳐가 뭔지부터 공부했다. 아키텍쳐가 뭔지 이제야 깨닫고 MVC를 영어 블로그, MVC 역사에 관한 페이지를 다 뒤져서 공부했다. 한국어로 써있지 않아서, 불편해서 꼭 한국 블로그로 봤었는데 원문으로 공부하고 나니깐 느껴지는 바가 달랐다. 그리고 MVP 공부도 그렇게 진행했다. 이번엔 논문도 봤다. “이게 그냥 MVP라니깐 이렇게 써” 하고 사용하는 것과 “MVP는 이런 문제를 해결하기 위해서 만들어졌고, 그렇기 때문에 MVP는 이런 모양을 가지게 됐고, 너는 이렇게 사용하면 너가 가진 이런 문제들을 해결할 수 있을거야” 의 관점에서 보는 건 정말 달랐다. 여태까지 뭐했나 싶었다. 전에는 글을 보고 나서 그 글이 없으면 스스로 예시 코드도 짜지 못했다. 하지만 직접 공부하고나니 예시 코드가 없어도 내가 직접 샘플 프로젝트를 만들 수 있었다.
누군가가 “왜 이렇게 했어?”, “왜 그래야 해?” 라고 물어본다면, “그냥 했어” 라고 말하지 않게 공부하고 싶었다. 그래서 내가 왜 이걸 공부하는지를 스스로 항상 물으면서 공부하고 정리했다. 그래서 나는 내가 모르는게 뭔지 알고 있다. 나는 모르는 게 조금 많다. 그 부분에 대해서 “모른다” 라고 답변할 수 있다. 그만큼 내가 아는 건 제대로 알게 되었기 때문이다. 조금 많은 모르는 부분을 조금 많이 아는 걸로 바꿔가는 중이다.
과거의 나와 함께 한 모든 이들에게 사과한다.
내가 Expert Beginner로서 그들의 의견을 무시하진 않았는지, 내 룰만을 고집하지 않았는지.. 그랬다면 미안하고 사랑한다. Expert Beginner는 “내 기술 세트 안에 들어있지 않거나 내가 경험해보지 않은거라면, 딱히 값어치 있는게 아니다”라고 생각한다고 한다. 그리고 새로운 기술을 들고 온 개발자에게 “아냐, 여기선 그렇게 안 해. 내가 어떻게 하고 있는지는 내가 제일 잘 알아. 그리고 너희는 아무 기술이나 다 믿으면 안돼.” 라고 말한다고 한다. 내가 혹시 그렇게 행동했던 건 아닐지. 그랬다면 반성한다.
건강한 겸손함. 지속적인 성장을 위한 노력을 겸비할테니, 나와 계속 팀을 해주길 바란다. “모르겠다”라는 답변을 할 수 있는 팀을 만들어 가겠지만, 같이 모르지말고 같이 알아가면서 성장하자고 말하고 싶다.
같이 팀을 하는 분이 나는 “같이 일하고 싶은 개발자”라고 말씀해주신 적이 있다. 계속 같이 일하고 싶은 개발자일 수 있게 노력하겠다. 팀원들과 의견을 함께 나누고 소통하는 기회도 많이 만들고, 같이 학습하는 시간도 가지고 싶다. 연차에 따라서 팀 전체가 그 의견을 따르는 게 아니라 “증명”된 의견을 따르는 팀을 만들거다. 그리고 주기적으로 우리가 아직 모르는 게 많다는 걸 계속 깨닫고 성장할 수 있게 할 것이다.
다음 달에는 조금 모르는 개발자가 되길 바라며, 회고를 마친다.
그리고 Expert Beginner에 대한 아티클을 아직 읽지 않은 개발자들에게 아티클을 추천해본다. 볼링 비유가 아주 기깔난다.