2019년 8월 9일, 부스트캠프 챌린지 4주간의 일정이 수료식과 함께 종료됐다.

캠프는 매 주 월요일~금요일 진행됐고, 하루 10시간 이상의 상당히 바쁜 일정 일정으로 진행됐다. 게다가 배우는 내용 역시, Web에 대한 지식이 많지 않은 (나같은) 사람에게는 상당히 까다로운 부분이 많았다.

정말 캠프 이름처럼 여러모로 도전적인 커리큘럼이었고, 지치는 한 달 이었다. 그렇게 갈 듯, 안갈 듯 했던 4주가 어느새 훌쩍 흘렀고 수료식 날이 다가왔다.

그런데 막상 수료증을 건네받고 떠날 짐들을 정리하려고 하니, 기대했던 후련함보다는 뭔가 아쉬운 기분이 들었던 것 같다. 많은 생각이 오고갔겠지만, 아마 더 잘하지 못했던 것에 대한 후회와 이대로 끝이라는 것에 대한 아쉬움이 가장 컸던 것 같다.

그렇기 때문에, 이번 글에선 캠프에서 배웠던 기술적인 부분에 대한 정리는 잠시 미루고, 4주간의 교육을 거치며 개인적으로 느낀점과 좋았던 점들에 대해서 먼저 정리해보려고 한다.


(+) 잘했던 것, 좋았던 것, 계속할 것.

다양한 분야에 대한 경험

R1280x0-3.png

이번 부스트캠프의 주제는 기본적으로 Web이었지만, 실제 과제에서는 그외에도 꽤나 다양한 분야의 CS지식을 다뤘다.

물론 그렇다고 아예 생소한 개념들만 가르치지는 않는다. Git, 비동기 프로그래밍, 네트워크 Docker, Canvas, 등 사실 대부분의 전공자는 물론, 어느정도 개발에 관심있는 사람들이라면 한번 쯤 배워봤을 법한 개념들일 것이다.

하지만 여타 학생들이 그러하듯, 시간이 지나고, 특히 자주 사용하지 않는 개념들은 퇴화된다. 개인적으로는 실제 개발에서 쉽게 넘어가기 쉬운 CS기초지식에 대한 부분들이 특히 그랬던 것 같다.

부스트 캠프에선 이러한 부분들에 대해, 처음 배우는 사람은 배경지식을 통해 기초를 쌓을 수 있도록, 이미 아는 사람은 더 나아가 실제 코드로 구현할 수 있도록 기회를 제공한다.

학습하는 방법에 대한 학습

내가 느낀 부스트캠프의 가장 큰 장점 중 하나는, 단순 지식, 개념에 대해서만 학습하는 것이 아니라, 해당 지식을 찾아보고 익혀가는 과정에 대해 방법론을 제시하고, 그것을 습관화 시킨다는 점이다.

실제로 제공되는 과제를 보면, 표면적으로는 매일, 매 주마다 다른 개념을 배우지만, 자세히 들여다보면 연관 없어보이는 문제들도 상당히 비슷한 구조를 띄고 있다는 걸 알 수 있다.

다음은 간단하게 평일 부스트캠프의 하루를 요약한 것이다.

매일 12시가 되면, 먼저 캠프에서 제공해주는 키워드들에 대해, 혼자 구글링해가며 학습한다. 당연한 얘기지만, 아무리 삼라만상 진리의 보고인 구글이라고 해도 언제나 원하는 내용이 바로 나오지는 않는다.

계속 검색 키워드를 바꿔가면서 찾아보고, 한글 자료가 없을땐 외국 사이트나 블로그에서 자료를 찾는 일도 비일비재하다.
심한 날에는 이러한 초기 구글링 작업에서만 두 세시간을 훌쩍 넘겨버리기도 한다.

이후 문제 풀이에 있어서도 부스트 캠프는 직접 구현할 수 있을 것 같은건 일단 다 구현해보자라는 주의다. 실제로 자바스크립트의 배열 함수, 논리게이트에 이어 마지막에는 간단한 웹브라우저의 역할을 하는 파일까지 코드로 하나하나, 직접 구현해야 했다.

이러다보니 관련 Api를 사용한다면, 몇 줄이면 끝날 코드가 실제로는 몇 배이상 길고 복잡해지고 시간은 그 이상이 많이 들게 된다.

R1280x0-4.png

중요한 것은 이러한 과정에서 절대로 답안지를 주지 않는다는 것이다. 코스에선 목적지에 대한 추상적인 이정표만 제시할 뿐, 절대로 구체적인 해결방법을 제시해주지 않는다.

정답에 대한 조건 역시 모호하기 짝이 없다. 가끔씩 문제에서 주어지지 않는 조건들에 대해 Slack으로 질문하면, 문제에 주어지지 않는 조건은 스스로 생각해보세요그럼 다른 학생들은 어떻게 생각하시나요?와 같은 답변이 돌아오는 것도 자주 볼 수 있다.

결과적으로, 같은 기능을 구현하는데도, 효율적인 코드 vs 비효율적인 코드 가독성이 좋은 코드 vs 안좋은 코드각 개인마다 다양한 스타일이 나오게 된다.
(이 부분에서 개인적으로 놀랐는데, 당연히 비슷할 줄 알았던 코드도, 사람마다 짜는방법이 제각각이었다)

이러한 점들을 보완하기 위해 다음날 오전 12시까지는 피어세션이라는 시간이 주어진다. 이 시간엔, 각자 어떠한 방식으로 코드를 구현했는지 서로 공유하고, 또 서로의 코드를 보며 자신의 코드에 대해 스스로 개선점을 찾아간다.

R1280x0-5.png

난 이런 과정이 지속가능한 개발자가 되기 위한 하나의 방법론을 제시하고 있다는 생각이 들었다.

아직 현직 개발자는 아니지만, 결국 개발자로 살아가게 된다면, 낯선 개념이나, 새로운 기술을 상대해야할 날은 필연적으로 다가올 수 밖에 없다. 그러한 난적을 상대하게 된다면 과연 어떻게 대처하는 것이 정답일까?
부스트 캠프는 적어도 이 질문에 대하여 나름의 해답을 내놓고 있다.

개인적으로 고해성사를 하자면, 예전 급하게 프로젝트를 진행할 때, 모르는 개념을 사용해야할 때면, 해당 라이브러리의 동작을 이해하려고 하기 보다는, 필요한 부분, 당장에 써야할 함수 등만 빠르게 읽고 적용한 적이 많다.
(혹자는 이러한 유형의 개발자를, 코더(coder)혹은 코드 몽키(Code Monkey)라고 비하한다고 한다.)

결론적으로 캠프의 커리큘럼은 이러한 방식을 극도로 지양하고있다. 대신 모르는 개념을 찾아보고, 내부 동작을 직접 구현해보고, 그러한 내용들에 대해서 주변 동료들과 얘기해보는 방법을 반복적으로 권하고 학습시킨다.

이 방법이 개발을 가르치는데에 있어 진정 옳은 방향인가? 에 대한 논의는 여기선 생략하려고 한다. 실제로 이러한 방법에 대해 회의적인 의견을 내비친 학생들도 역시 분명히 봐왔다.

하지만 개인적으로 경험했을 때, 굉장히 효과적인 교육방법이었고, 캠프를 설계한 사람의 노력과 고민이 충분히 느껴질 정도의 커리큘럼이였다고 생각한다.

사실 지원하기 전부터 지속가능한 개발자를 양성하겠다는 문구와 설명이 굉장히 인상적이었고, 그 방식이 기대됐었다. 결과적으로 코스를 마치고 나니, 이 문구는 단순히 눈길을 끌기위함이 아니라, 정말 부스트캠프의 교육철학을 관통하는 키워드였다는 걸 새삼 느낄 수 있었던 것 같다.

자율 / 협력지향적인 환경

R1280x0.jpeg

필자는 개인적으로 책상 앞에서, 칠판을 보며 경청하는 수업형식을 굉장히 싫어한다. 그보다는 차라리 직접 과제나 실습을 통해서 학습하는 걸 선호하는 편이다.

이번 부스트캠프의 자율적인 교육과정이 맞지 않는 사람들도 분명 많겠지만, 개인적인 선호도로 봤을 때 취향맞춤이었다고 생각한다.

하루 주요일정은 철저하게 개인과제 중심으로 이루어져 있지만, 팀 적인 교류와, 의견나눔을 권장한다. 사실 첫 주에는 분위기도, 모르는 사람에게 다짜고짜 질문을 던진다는게 굉장히 어색했지만 몇 주가 흘러가다 보니까 이러한 과정이 굉장히 자연스러워졌다.

(-) 잘못했던것, 아쉬운것, 부족한 것

피어세션의 맹점

낯선 4명이서 모여 각자의 코드를 냉정하게 평가한다 이것 자체에 사실 모순이 있다고 생각한다. 얼핏보면 제대로 동작할 것 같지만, 실상은 동작은 하되 완전하지는 않았다.

2박 3일짜리라곤 해도 팀은 팀이다. 오늘 피어세션이 끝나고 오후에 다시 모여서 함께 문제를 풀어야 하고, 그 날이 아니더라도, 다음주, 다다음주 언제든 다시 팀이 될 수도 있는 사람들이다. (만약 이후 멤버십 과정까지 포함하면 앞으로 5달 이상 한솥밥을 먹을 수도 있다.)

이런 사람들 앞에서, 냉철하게 오류를 지적하고, 쉽게 체크박스를 해제할 수 있는 사람이 흔할까? 아쉽게도 내가 겪은 팀에서는 흔하지 않았다. 대부분의 팀에서, 코드실수가 나와도 어지간하면 봐주자라는 뉘앙스의 이야기가 나온다.

한 명의 입에서 이런 말이 나오면, 다른 두 명의 입장에서 이를 거스르는건 더욱 불편한 행동이 된다. 결과적으로 각자의 코드에 대한 객관적인 평가가 어려워지게 된다.

이렇게 될 바에 차라리, 최소한 체크박스에 대한 평가만이라도, 다른 팀, 혹은 다른 지역에 있는 학생이 코드를 다운로드해서 평가해주는 방식이었다면 어땠을까? 라는 생각이 든다.

물론 어디까지나 개인적인 생각이고, 나 역시도 기존 방식을 통해 많은 수혜를 받긴 했다.
(그래도 아쉬운건 아쉬운거니까....🐤)

그래도 너무 설명이 부족하다

학생의 자율에 맡긴다.

스스로 검색하고 동료들과 함께 해결하자.

필요한 조건에 대해선 스스로 생각해보자!

다 좋다. 심지어 위에 이 방법의 장점에 대해서도 충분히 길게 서술했다.

하지만 그럼에도 가끔 너무 설명이 부족한게 아닌가 싶을 때가 있다. 필요한 기능을 직접 찾아가며 구현하는 방식에 대해서는 충분히 동의하지만, 문제의 핵심 개념에서 벗어난 툴 사용법이라던가, 주의할 점에 관해서는 조금의 친절을 베풀었어도 좋았을 것 같다.


끝으로

최고의 복지는 최고의 개발자와 일할 수 있다는 것이다.

최근 N사의 채용설명회에서 들었던 말이다.

나는 비전공자로 시작했고, 그렇기에 개발에 관해선 혼자 공부할 수 밖에 없었던 경우가 많았다. 그러다보니 항상 같이 개발하고, 물어볼 수 있는 커뮤니티에 대한 갈증이 있었다. 심지어 앞으로 개발자로 취업할 것인지에 대해서 확신을 갖기도 힘든적도 많았다.

그래서일까, 개인적으로 이번 부스트 캠프는 단순 교육의 의미보단 진로에 대해 한번 더 고민할 수 있게 도와준 좋은 기회이자 체험이었다. 그리고 무엇보다, 좋은 사람들, 열정적인 예비개발자들과 모여서 학습할 수 있었던 경험만으로 큰 선물이었다고 생각한다.

만약 나와 생각이 비슷하거나 같은 고민을 하고있는 학생이 있다면, 혹은 단기적인 실력상승보단, 지속가능한 개발자에 대해 관심이 있다면, 앞으로 다시 열릴 부스트캠프를 적극 추천해주고 싶다.

UNADJUSTEDNONRAW_thumb_f2e.jpg