[네이버 부스트캠프] 웹·모바일 9기 멤버십 과정 최종 회고
올해 6월부터 지속된 네이버 부스트캠프 9기 정규 과정이 24. 12. 6 날짜로 막을 내리고, 최종 과정인 멤버십 과정을 수료하게 되었다.
내가 다닌 대학에서는 경험할 수 없었던 많은 경험을 해볼 수 있던 기간이었고, 그동안의 감정과 어떤 과정이 나에게 어떤 도움이 되었는지 등을 적어보겠다.
학습 스프린트
멤버십 초기에는 8주간 학습 스프린트 기간을 가진다.
이 기간에는 챌린지 때와 같이 주어진 미션을 혼자 수행하기도 하고, 배정된 그룹원과 함께 미션을 수행하기도 했다.
챌린지 때와 달랐던 점은 하루마다 미션이 바뀌지 않고 주 단위로 미션이 바뀐다는 점이었다. 아마 이 부분 때문에 많은 후기에서 챌린지보다 멤버십이 더 여유를 가지고 할 수 있었다고 한 것 같다.
멤버십 과정에서 달라진 점은 더 이상 gist가 아닌 GitHub를 사용했고, 저장소를 fork 후 작업하는 과정으로 변경 되었다는 점과, 멘토링이 생겼다는 점이다.
풀스택 스프린트
8주 중 첫 4주는 풀스택으로 프론트 및 백엔드 비중을 반반 가져가는 미션이 주어졌다.
이 기간은 웹 백엔드/프론트엔드의 Request, Response를 직접 경험해보는 것이 가장 큰 목표였다고 생각한다.
이때 백엔드는 express를 처음 써보게 되었고, 프론트엔드는 단순 HTML, CSS, Javscript 파일로 작업했다.
express를 사용해서 미션을 경험해본 지금의 입장에서는 입과 전에 경험했던 Spring Boot에 비해 자유도가 많이 높았다고 생각한다.
그 이유는 IoC 개념이 없다보니, 직접 의존성을 주입해주는 코드가 필요했기 때문이다.
단, 이러한 특징 덕분에 더 코드 작성에 있어서 근거를 가지고 작성하게 됐다고 생각한다.
이 4주 중 후반 2주에는 멘토링이 처음 등장했는데, 하루하루 올리는 PR에 대해 특정 날짜에 리뷰를 달아주셨다.
지금까지의 개발 경험에서 누군가가 리뷰를 달아준 경험이 없었는데, 덕분에 내가 놓치고 있던 것을 다시 생각해볼 수 있는 기회로 사용했었다.
부스트캠프에서는 항상 강조하는 것이 답을 알려주지 않는다는 것이다.
때문에 멘토님들께서도 리뷰 또는 질문에 있어서 답이 아닌 방향성만 제시해주고,
그 방향성을 어떻게 활용할 지에 대해서는 스스로의 몫이었다.
답을 거저얻는 것이 아니고, 멘토님을 통해 어떤 부분이 문제라는 사실만 인지하고, 직접 검색해서 찾다보니 더 기억에 남았었다.
멘토링뿐만 아니라, 4주간 같은 미션을 하다보니, 그룹원들과 진행상황 공유, 문제 공유 등 여러 얘기를 할 수 있었다.
챌린지 때는 매일 미션이 바뀌었기 때문에 이전 미션에 대해 개선할 틈 없이 새로운 미션을 수행했어야 했는데,
이 과정에서는 해당 주의 미션에 대해 팀원들의 이야기를 듣고 나만의 방식대로 개선할 기회가 있었다.
아마도 이 때문에 챌린지때 보다 더 팀원들에 말에 귀를 기울이지 않았나 생각도 든다.
백엔드 스프린트
8주 중 남은 4주는 분야별로 나눠졌다. 나는 이전부터 백엔드를 희망하고 있었기 때문에 백엔드를 선택했다.
이 4주도 마찬가지로 미션이 나왔다. 이 미션에 프론트가 완전히 제거된 것은 아니었다.
나는 그 이유가 백엔드는 결국 프론트와 연결되어 동작하는 것이 중요하기 때문이라고 생각한다.
그래도 지난 4주보다 적은 비중이었다.
이 과정에서는 혼자 미션을 하지 않고 둘이 짝을 이루어 미션을 진행했다.
챌린지 때는 단 하루만 짝과 함께했다면 멤버십 때는 한 주간 짝과 함께 개발했다.
나는 여기서 마찰에 대해 이야기하고싶다. 짝과 함께 개발하면서 많은 마찰이 있었다.
마찰의 종류로는 지식 부족이나 애매한 선택이 있다.
한 쪽이 애매하게 지식이 부족할 때 “그 방식보다 이 방식이 맞지 않나요?”라는 이야기가 많이 나온다.
물론 그 말을 내가 많이 했다.. 지식이 부족해서 내 방식이 맞다고 생각되는 순간이 여러번 있었고,
이 문제를 해결하기 위해 내가 알고있는 내 방식에 대한 장/단점과 짝이 얘기한 방식의 장/단점을 정리하려고 노력했다.
이렇게 했을 때 장점은 내가 잘못알고 있는 사실이 있을 때 짝이 빠르게 캐치하여 빠르게 마찰을 해결할 수 있다는 점이다.
또 다른 경우는 애매한 선택이다.
내가 얘기한 A라는 방식이 5만큼의 장점이 있고, 짝이 얘기한 B라는 방식이 5만큼의 장점이 있다.
결국 어떤 선택을 하든 비슷하다는 의미이다.
나는 이럴때마다 내가 생각한 것과 다른 방식을 경험해보기 위해 스스로의 의견은 잠시 접어두고,
팀원의 의견에 귀기울여 빠르게 마찰을 해결하고자 했다.
챌린지 과정에서의 짝 프로그래밍은 하루가 짧기 때문에 너무 고민하기 보다 양보를 많이 하려고 했다면,
이번에는 이유를 가지고 문제를 해결하고자 노력하는 시간이되었다고 생각한다.
짝 프로그래밍 1주 후 1주는 짝과 만든 프로그램을 리팩토링하는 데 사용했고,
남은 2주는 추가적인 미션을 수행했다.
최종 프로젝트
8주를 학습 스프린트로 보내고 남은 6주는 최종 프로젝트에 들어갔다.
프로젝트 기간 전 한 주가 인터미션 기간이었는데, 팀이 배정되어서 팀원들과 이야기를 나눠볼 수 있었다.
우리팀은 백엔드 3명, 프론트 1명이었다.
프론트가 한 명이었기 때문에 걱정은 있었지만, 프론트 팀원분께서 자신감이 넘치셔서 믿을 수 밖에 없었다.
물론 부스트캠프에서는 프론트 / 백을 나누지 않고 작업하기를 원했다.
주제 선정은 한 팀원분의 지인께 필요한 서비스를 아이디어로 주셨고,
회의 때 나열한 진부한 아이디어들과 달랐기 때문에 해당 주제를 선택하게 되었다.
프로젝트 첫 주차에는 앞으로의 개발을 어떻게 진행할지에 대해 정리하는 시간으로 사용했다.
에픽/스토리/태스크로 나누어 백로그를 작성하기도 하고, 디자인을 구상하기도 하는 등의 시간을 보냈다.
이 기간은 개발을 하지 못하고 기획만 했기 때문에 많은 캠퍼분들이 힘들어했다.
다들 열심히 지난 8주를 코드와 함께 학습하다가 갑자기 코드 없이 기획만 하는 것이 지루했을 것이기 때문이다.
나도 비슷한 이유에서 지루함을 느꼈지만 디자인을 하면서 시각적 즐거움을 채우기도 했다.
첫 주차에 강조한 것이 서버 배포였다.
다른 팀원들과 피어세션을 진행하거나 데모를 할 때 배포된 사이트를 보는 것이 듣는 사람의 입장에서 직관적이기 때문이다.
그렇기 때문에 우리 팀도 빠르게 배포하기 위해 학습하고, 다 같이 배포하기 위해 시간을 사용했다.
모두 처음 해봤기 때문에 어색한 부분이 있었지만 시간을 많이 사용해서 나름의 근거를 가지고 개발할 수 있었다.
나머지 기간은 프로젝트 개발에 치중했다.
개발은 가능하면 태스크를 잘게 나눠서 각 태스크를 맡도록 했으며,
태스크간 의존성이 있을 때는 개발 전에 인터페이스를 만들고 해당 인터페이스대로 개발하여 이후에 맞춰보는 시간을 가져가도록 했다.
분업이 아닌 협업
이 부분도 부스트캠프에서 강조한 부분 중 하나이다.
아까 에픽/스토리/태스크로 나누었다고 얘기했다.
여기서 만약 스토리별로 나누어 작업한다면 그건 협업이 아닌 분업이된다.
그렇기 때문에 이를 지키고자 최대한 태스크 단위로 작업하려고 했으며,
초기엔 인터페이스를 미리 맞춰볼 생각도 못했기 때문에 시간이 많이 들었다.
시간이 지나면서 서로 문제점을 제기하고, 이 과정에서 계속 개선하였다.
어차피 풀스택
부스트캠프 웹은 풀스택 과정이다.
스프린트 기간에 백엔드를 학습했다고 하더라도 프로젝트에서 프론트를 놓을 수 없다..
프로젝트 기간이 1~2주 정도 남은 시점에 백엔드 태스크가 거의 마무리되고,
프론트 태스크가 밀려있어서 맡아서 하게 됐다.
다행히 프론트 팀원분께서 작성하신 코드가 어렵지 않아서 금방 적응할 수 있었고,
프론트 기능도 데드라인에 맞추어 기능을 구현할 수 있었다.
다른 팀을 봤을 때도 한 파트에 집중된 프로젝트가 아니라면 백엔드가 프론트를 하거나, 프론트가 백엔드를 하는 경우가 흔했다.
덕분에 조금이나마 리액트라는 라이브러리를 이해할 수 있었다.
결론
직접적으로 웹을 학습할 수 있는 유일한 과정이었고, 만족스럽게 학습했다고 생각한다.
위 글 내에 포함되어있지 않은 일정이 있었지만, 가장 기억에 남았던 일정들 위주로 작성했다.
베이직, 챌린지 과정에서는 언어에 익숙해지고 학습에만 몰두하는 시간이었다면,
멤버십 14주 기간은 학습도 하고 스스로의 근거를 가지고 개발할 수 있는 습관을 만들었다고 생각한다.
팀원 피드백
부스트캠프에는 팀원 피드백이 존재한다.
최종 프로젝트가 끝난 후에도 팀원들에게 피드백을 받았다.
여기서 내가 개선해야 할 점은 너무 혼자 달린다는 점과, 주요 포인트가 아닌 부수적인 것에 집중한다는 점이다.
아무래도 프로젝트 과정에서 시간이 촉박하다는 느낌을 많이 느꼈고,
그러다보니 공유도 소홀해지고, 점점 혼자 개발하다보니 그렇게 피드백을 주셨다고 생각한다.
또한 부수적인 것에 집중한다는 피드백은 기능 구현이 아닌 세부적인 근거를 가지고 개발하려고 했었기 때문에 그랬다고 생각한다.
8주 학습 스프린트 기간에서 근거를 찾는 것이 가장 중요하다고 생각했었기 때문에 무의식적으로 그렇게 했던 것 같다.
최종 프로젝트가 데드라인이 짧았던 만큼 큰 그림에 신경을 썼어야 했는데, 나 스스로도 그런 부분이 아쉬웠던 것 같다.
위 피드백을 반영하기 위해 앞으로 있을 리팩토링 기간에 대해서는 지속적으로 팀원들을 의식하여 같이 해야 한다는 생각을 통해 습관을 만들어 개선해야겠다.
재미있는 14주였고, 다시할 수 있느냐 물어본다면 그렇다고 대답할 만큼 도움이 되었다고 생각한다.
무언가 알아가고 그 지식을 바탕으로 나만의 근거를 통해 개발한다는 점은 나를 더 단단하게 만들어준다는 만족감을 주었다.
다른 사람들도 근거를 통해 상황에 적합한 기술을 선택하고 개발해봤으면 좋겠다.
누가 질문해도 내 프로젝트에 대해 이유를 설명할 수 있는 그 기분은 말로는 전달할 수 없을 것이다.
물론 지난 14주간의 모든 행위에 근거가 담겨있진 않았다.
학습이 부족한 경우도 있고, 집중을 하지 못했을 때도 있었고.
그럼에도 근거를 만들려고 학습하고 성장해가는 자신을 봤을 때 큰 성취감을 느낄 수 있었다.