본 글은 네이버 부스트캠프 9기 베이직, 챌린지를 수료한 후 작성한 글입니다.
프로그래밍을 정식으로 시작한 지 3년 정도가 흘렀습니다.
'내가 최고야!'라는 거만함에 취해보기도, '나는 아무것도 모르는구나'라는 구렁텅이에 빠져보기도 했습니다.
스스로 좋아하는 분야를 탐색해보기도 하고, 그 분야에 대해 강도 높은 교육을 받으며 취업의 길도 제안받았습니다.
그러나, 항상 물음이 뒤따랐습니다.
'내가 정말 이 일을 좋아하는가?'
'지금 상태에서 취업하면, 어디까지 성장할 수 있을까?'
첫번째 질문의 대답은 Yes, 두번째 질문의 대답은 '모른다'였습니다.
스스로 학습할 수 있는 방법을 몰랐기 때문입니다.
과거의 어렴풋한 기억에 스스로 흔들릴 때가 많습니다.
'그 때 그 길로 취업했더라면, 지금쯤 모아둔 돈이 많지 않을까?'
'지금도 모르는 게 이렇게나 많은데, 차라리 그 때 취업했으면 조금이나마 아는 게 생기지 않을까?'
하지만 언제나 결론은 '나에겐 스스로 공부하는 방법을 깨우치는 시간이 필요했다'입니다.
취업에 성공했다 한들, 시키는 일만 한다면 성장이 일어나기 힘들 것이라 생각합니다.
스스로 생각하고 판단할 수는 있어도, 학습의 길을 찾고 노력을 쏟는 그 자체는 쉽게 깨우치기 쉽지 않을 것입니다.
작년 9월 이후로, 많은 책을 독파하고 프로젝트를 시도해보며 스스로의 학습을 시도하고 있습니다.
덕분에 잘못된 지식을 바로잡기도 하고, 오픈소스 버그를 발견하여 이슈를 남기기도 하였으며, 자료도 없고 ai도 잘 모르는 내용들을 정리하여 글로 남기기도 하였습니다.
하지만 이것들만으로는 스스로 성장했는지, 성장할 수 있는지의 여부를 알 수 없었습니다.
분명 전보다 지식은 늘었어도, 그 지식을 다루는 방향성 및 동료를 대하는 태도가 전보다 나아졌는지는 확인할 수 없었습니다.
이러한 고민을 타파하고자 부스트캠프를 신청하게 되었습니다.
3년 중 6개월은 python, 5개월은 js, 나머지 2년 정도를 java로 프로그래밍했습니다.
제게 있어 js란 '파이썬보다 어렵고 자바보다 쉬운 문법을 가진, 타이밍 맞추기 까다로운 언어'였습니다.
js와 함께한 5개월은 css, html과 함께 '다시는 돌아보기 싫은 기억'에 가까웠고, 이들을 자유롭게 다루는 FE분들이 항상 신기하게 느껴졌습니다.
그런 의미에서, 부스트캠프는 제게 있어 큰 도전이었습니다.
js로 문제를 해결하는 과정은 '내 취업에 도움이 되는 시간일까?'라는 고민과 'js를 내가 잘 다룰 수 있을까?'하는, 마치 안개가 잔뜩 낀 과정과도 같았습니다.
배움엔 끝이 없습니다.
한번 걸은 길을 다시 걸어 볼 필요가 있습니다.
그러나, 외부에서 봤을 때 저는 같은 길을 세번째 걷는 것으로 보일 수 있습니다.
각각의 학습 의도는 달랐으나, 이를 매번 소명해야 하는 문제가 있습니다.
지금 저는 여러 분야의 인원들로 이루어진 사이드 프로젝트 2개와, 혼자 진행하는 개인 프로젝트 1개를 진행중입니다.
다른 분들의 코드만 보고 의도를 파악하여 리팩터링하거나, 서버를 운영하며 생기는 문제들을 모니터링하기도 하고, 서로의 의견을 나누며 타협점을 찾기도 하며, 하나의 지식에 대해 파고들며 학습하는 등 보다 나은 개발자가 될 수 있도록 노력 중입니다.
지금의 취업 시장은 '가능성 있는 신입' 대신 '바로 투입할 수 있는 신입'을 찾고 있습니다.
어쩌면 베이직 과정의 2주는, 바로 투입 가능토록 변화되는 2주를 늦추는 시간일 수 있었습니다.
저는 '2차 문제 해결력 테스트 대상자'로 선정되었기 때문에, 베이직 과정을 수료하지 않아도 챌린지 과정을 위한 시험에 참여할 수 있었습니다.
따라서 베이직 과정을 아예 시작하지 않아도 되었고, 설령 시작했다 한들 중간부터 참여하지 않았어도 문제가 없었습니다.
그럼에도 불구하고, 베이직 과정에 참여하기로 했습니다.
이는 근본적으로, 부스트캠프를 신청했던 성장의 여부
를 베이직 과정에서도 확인할 수 있으리라고 생각했기 때문입니다.
베이직 과정은 크게 3단계로 나눌 수 있었습니다.
이 중 문제들의 난이도는 천차만별이었으며, 때에 따라 생각할 수 있는 범위가 엄청 넓기도 했고, 좁기도 했습니다.
여기서 중요한 건 '내가 왜 이렇게 코드를 작성했는가'하는 의도 자체를 설명하는 것이었으며, 이 의도를 명확하게 가져가기 위해 시간을 많이 쏟았습니다. 간결하면서도 쉽게 이해가 가능한 코드와 설명을 작성하기 위해서는 그만큼 고민해야 했으며, 고민이 깊어질수록 마음이 편해지는 결과물이 나왔습니다.
또한, 스스로 회고하며 '과연 문제 요구사항을 제대로 수행했는가'를 돌아볼 수 있었습니다.
다른 참여자분들 및 이미 부스트캠프를 마친 수료생분들과 함께 위와 같은 과정을 따랐으며, 링크를 통해 서로의 '생각의 흐름'을 엿볼 수 있었습니다.
해당 과정에서 내가 어느 것을 놓쳤는지, 코드 디테일의 차이는 어떠한지 등을 판단할 수 있었습니다. 이는 '비교를 통한 질투'가 아닌 '차이를 통한 성장'을 이룰 수 있었습니다.
또한 회고를 통해서는 이전의 나와 지금의 나를 객관적으로 바라볼 수 있었습니다. 이로 인해 제 2주는 지금까지의 성장의 여부
뿐만 아니라 앞으로 남은 성장의 길
또한 깨달을 수 있는 기회였다고 생각합니다.
스스로 성장할 수 있는 방법, 그 방법의 좋은 예시를 보여준 게 베이직 과정이라고 보여집니다.
물론 있었습니다. 다른 분들과 비교했을 때 오버 엔지니어링이라고 생각되는 부분이 많았고, 적절한 중심을 찾기가 힘들었습니다. 다만 위에 작성했듯 어디까지나 '의도'를 중점으로 본다면, 스스로 납득할만 한 코드를 작성하게 되었던 것 같습니다.
또한 팀 과제에서 팀원들의 피드백이 없는 부분도 아쉬웠습니다. '내가 너무 의견을 주도한 건 아닐까?', '내 말이 너무 강압적으로 들리지 않았을까?'같은 부분을 확인하고 싶었는데, 팀원들의 회고록을 살펴보며 간접적으로나마 살펴볼 수 있었습니다.
또한 cs 지식을 습득할 수 있는 기회가 보다 적었습니다.
그러나 이러한 부분들은 챌린지 과정에서 많이 해소할 수 있었습니다.
챌린지 과정은 크게 4가지의 항목으로 구성되어 있습니다.
미션마다 요구사항을 구현하기 위해서는 해당하는 cs 지식을 학습해야 합니다.
'이 지식은 알고 있으니까 공부하지 않고 바로 요구사항을 진행해도 되겠다'라고 생각해도, 미션을 진행하다 보면 학습이 필요해지는 순간이 옵니다.
해당 학습 내용을 정리하고, 이를 자신의 지식으로 흡수하는 기회를 얻을 수 있습니다.
미션에서 요구하는 사항들을 하나씩 프로그래밍합니다.
미션마다 난이도가 높기도 했고, 고민하거나 생각할 부분도 굉장히 많았기에 모든 요구사항을 구현한 날이 많지 않습니다.
전날에 구현한 내용들에 대해 같은 팀원들과 이야기를 나눕니다.
이외에도 학습 과정에서 깨달은 내용이나 추가적으로 고려할 부분들에 대해서도 이야기할 수 있었습니다.
월~목은 미션을 구현하지만, 금요일에는 잠시 쉬어간다는 느낌으로 릴레이 노트를 작성합니다.
릴레이 노트에는 지정된 책들을 읽고, 서로 의견을 나눕니다.
해당하는 내용들을 정리하고, 아~주 간단한 미션들을 작성합니다.
다른 릴레이 노트를 통해 일주일간 진행할 미션을 정하고, 한주동안 해당 미션을 수행합니다.
베이직 과정에서 좀 더 심화된 깨달음을 얻을 수 있었습니다.
요구사항만 구현하려고 덤볐다가 배경지식의 부재로 처참히 깨지고 부숴졌으며, 학습을 통해 관련 내용들을 자신의 것으로 만들 수 있었습니다.
그 후 요구사항을 하나씩 해결해 나가며 지식의 필요성에 대해 생각해볼 수 있었습니다. 코드만 열심히 작성한다 한들, 고민하는 과정이 없다면 얻어가는 게 없다는 것도 스스로 깨달을 수 있었습니다.
프로그래머가 될 것인가, 코더로 남을 것인가?
에 대해 생각할 수 있는 시간이었습니다. 따라서 비록 모든 요구사항을 구현하지 못 하더라도, 성장을 위해 고민하고 이를 녹여내려고 노력했습니다.
또한 피어세션을 통해 서로가 얻은 지식에 대해 나누고, 코드 및 사고의 방향성 등에 대해 여러 시야로 탐색할 수 있는 기회가 주어졌습니다.
릴레이 노트에서는 독서시간 및 의견을 나누는 시간을 통해 그동안 미션을 진행하며 쌓였던 피로를 조금이나마 녹일 수 있던 시간이었습니다.
대부분은 스스로에 대한 아쉬움이었습니다.
'내가 안다고 자부했던 것들이, 사실은 하나도 모르는 것이었구나'를 깨닫던가, 혹은 '과연 이게 옳은 방향일까?'를 계속 고민하는 시간이 있었습니다.
하루 안에 많은 지식을 얻고, 이것을 구현하는 것은 쉽지 않았습니다. 미션을 구현하기 위해서는 학습과 프로그래밍의 밸런스를 잘 잡았어야 했는데, '어디까지 학습할 것인가'를 정하는 것도 쉽지 않았습니다.
초기에는 잠을 극도로 줄이고 밤을 새며 코드를 작성했으나, 스스로의 성장에 도움이 되지 않는다는 것을 깨달았습니다. 이후로는 오로지 성장을 위해 '미션을 구현하기 위한 내용이 머릿속에 잘 녹아져 있는가'를 스스로에게 질문했을 때 긍정적인 답변이 나올 때까지 학습을 진행했고, 이후 요구사항을 구현했습니다.
하지만 챌린지 후반부에 와서야 이러한 체계가 잡혀져서, 조금만 더 빨리 깨달았으면 어땠을까 합니다.
슬랙을 통해 많은 분들이 좋은 질문과 답변을 달아 주셔서 정말 많은 도움을 받았습니다. 반면 제가 도움을 많이 드리지 못한 것 같아 아쉽습니다.
정말 감사하게도, 멤버십 과정에 합격이 되었습니다.
비록 멤버십에 가지 못 했더라도 베이직, 챌린지 과정에서 배운 것들을 기반 삼아 학습 -> 설계 -> 구현을 반복하며 스스로 성장할 수 있는 프로그래머가 되고자 했습니다.
멤버십 과정에서 더욱 더 노력하여, 많은 성장을 이뤄낼 수 있도록 하겠습니다.