서론
https://sprint.codeit.kr/admissions/30
2024년 7월 25일 개강한 코드잇 스프린트 풀스택 트랙 2기에서 멘토를 맡아 멘토링을 하고 있습니다.
총 3번의 프로젝트를 거쳐 2025년 2월 25일에 수료하는데, 중간점검 느낌으로 중간 후기 글을 작성해봅니다.
이 글은 최대한 객관적으로 작성하려고 노력했으며, 비판처럼 보이는 글이 있다면 비판이라기보다는 제 경험에 의거하여 사실을 나타낸것이라고 봐주시면 감사하겠습니다.
저는 2022년 4월 4일부터 7월 22일까지 엘리스 부트캠프 SW트랙 2기를 수료하고 개발자로 일하고 있습니다.
코드잇 부트캠프 풀스택 소개
코드잇 풀스택 트랙은 기간별 파트 4개로 나뉘어져 있으며, 각 파트마다 팀이 정해집니다.
그리고 1개 팀에 1명의 멘토가 배정되어 그 파트동안 멘토링과 코드리뷰를 진행하죠.
파트1때 자바스크립트 기본을 익히고, 파트2는 초급프로젝트, 파트3은 중급프로젝트, 파트4는 고급프로젝트를 진행합니다.
풀스택이기때문에 커리큘럼은 프론트엔드 수업과 백엔드 수업이 기간별로 진행됩니다.
수강생들은 1~2주마다 스프린트 미션을 진행해야되는데, 그 결과물을 깃허브에 PR로 올리면 멘토가 코드리뷰를 해주는 방식입니다.
멘토링은 주 1회 진행합니다.
파트1,2는 5개팀이 있었고, 현재 진행하고 있는 파트3은 3개팀이 있습니다. 멘토도 팀 수만큼 있구요.
파트 1
파트1때는 아래와 같은 것들을 느꼈습니다.
1. 커리큘럼이 제가 부트캠프를 했던 2022년에 좋았던 내용으로 구성되어있습니다.
현재 채용시장에서 현업 개발자분들이 원하는 신입 역량은 아니라고 생각이 됩니다.
2. 7개월동안 열심히 하려는 마음으로 부트캠프를 신청했다고 생각했지만, 그런것같지 않아 보이는 모습을 보이는 수강생이 1/3정도 보였습니다.
개인적으로 생각하는 멘토링의 의미
저는 멘토이기때문에 제가 했던 비효율적인 행동을 하지 않도록 알려주고, 최대한 멘토링 시간에는 강의보다는 멘토링을 하려고 했습니다.
대학생때 교육대학원 선배들과 중학교에서 수학 멘토링을 진행한적이 있습니다. 그 당시 저는 멘토링을 진행했지만, 경험이 있으신 분들은 튜터링을 진행했고 멘토링과 튜터링은 목적과 내용이 많이 달랐습니다. 멘토링은 수업을 하는 것이 아니라 수학에 대한 흥미가 생기도록 도와주는 시간이고, 튜터링은 수학 수업을 하는 시간이였습니다. 이 수업 방식은 교육대학원 선배들이 고안한 것이며 저도 이 방식이 굉장히 좋다고 생각합니다.
따라서 부트캠프에서도 강의는 강사님의 몫이고(역할이 다르다고 생각했습니다.), 저를 비롯한 멘토들은 강의가 아니라 진정 멘토링이라고 부를 수 있는 내용으로 진행해야된다고 생각했습니다. 그리고 저도 부트캠프를 해보았으니 하루종일 수업을 듣고 멘토링 시간에 또 수업을 듣는게 얼마나 괴로울지가 상상됐습니다. (코드잇 풀스택 수업은 9 to 7 로 진행됩니다.)
그래서 공부 방법, 취업 근황, 제가 취업할때 겪었던 일들, 부트캠프하면서 어떻게 공부를 했고 취업하면서는 어떤 방식으로 변하게 됐는지 등을 주요 주제로 삼았습니다. 이렇게 개발과 취업에 도움이 되면서 흥미가 되는 소재로 진행을 하니 소통도 잘 되고, 멘토링을 진행하는데에는 큰 어려움이 없었습니다.
더 나아가 부트캠프에서 알려주기 어려운 개발 키워드, 프로젝트때 적용해보면 좋은 기술들, 채용공고를 같이 보면서 요즘 회사들은 어떤 사람을 원하고 어떤 기술을 쓰는지 등에 대해서도 얘기를 했습니다.
그런데 멘토 채널에서는 다른팀에서 수강생들의 호응이 너무 없어 힘들다는 얘기가 많이 나왔습니다. 처음에는 이해가 안됐는데, 파트 끝날때쯤 멘토링 자료를 각자 공유하는 시간이 있었고, 살펴보니 저를 제외한 모든 멘토들은 강의, 즉 수업을 하고 있었다는걸 알게되어 아쉬웠습니다.
파트1때는 프로젝트가 없어 무난하게 파트2로 넘어갔습니다.
파트 2
파트2는 팀원끼리 초급프로젝트를 진행해야되기때문에 조금 더 빠르게 친해지려고 했고, 멘토링시간에 프로젝트 얘기를 많이 했습니다.
그런데 가만보니 백엔드 수업때 모든 코드를 app.js 에다가 작성하도록 배우고 있었습니다. 아무리 초급프로젝트여도 app.js에다가 모든 코드를 다 적는건 아닌거같아 열심히하는사람들을 위해 3 layered architecture 특강을 열면 어떨까 생각이 들었고, 팀채널에 여쭤보니 대부분 긍정적인 반응이였습니다. 전체 수강생을 대상으로 진행할까도 고민을 했지만, 강사님이 계시고 다른 멘토들에게 부담을 줄 수 있을것같아 파트1, 2 팀원 중에서만 신청자를 받아 진행했습니다. 12명 중 6명이 참여를 했으니 절반이 참여한것입니다.
특강은 멘토링 시간과 별개로 진행되었으며, 멘토링 시간에는 여전히 멘토링을 하고 있습니다.
원래는 특강도 계획에 없었지만 코드잇 커리큘럼만 따라간다면 취업에 너무 불리할것으로 생각되어 어쩔 수 없었습니다.
layred architecture 특강
간단한 DI, Singleton, 3 layred architecture 예제 코드를 복습용으로 미리 만들어놓고 (main branch), 특강에서는 라이브코딩으로 하나씩 설명하는 방식으로 진행했습니다. (lecture branch)
https://github.com/MCprotein/backend-practice/tree/lecture
아이러니하게도 파트1때 같은팀이였던 분이 리드하는 다른 팀에서만 해당 내용을 적용했고, 나머지 4개팀에서는 app.js 하나에 모든 코드를 작성하여 개발을 진행했습니다. 제가 멘토를 맡은 팀에서는 백엔드를 맡은 수강생 두명이 자바스크립트 문법과 서버에 대한 이해도가 부족해 아키텍처를 적용하지 못해서 굉장히 아쉬웠습니다.
파트2를 진행하면서 굉장히 놀라웠던점이 있는데, 부트캠프를 시작한지 한달 반정도가 지난상태에서 node_modules, package.json, spread operator, http method (get, post, patch, put, delete) 등에 대해 잘 모르는 사람들이 있었습니다.
그래서 강의에서 다뤘던 내용임에도 불구하고 제가 설명을 다시 해줘야했고, 그로인해 초반에 프로젝트가 지연되기도 했습니다.
초급 프로젝트
파트2에서 진행하는 초급프로젝트는 2개 주제 중 하나를 선택해야 했으며, 자율주제로 부트캠프를 진행했던 저로서는 당황스러웠습니다.
코드잇 풀스택 한 기수당 20여명인데, 모든 기수 주제가 동일하다고 들었기 때문입니다. 이러면 수십, 수백명의 포트폴리오가 동일할거기때문에 조금이라도 차별화를 하기 위해서는 고도화가 필수라고 생각했고, 이것저것 아이디어를 던져주었습니다.
기본 요구사항은 단순한 CRUD와 localstorage에 잠시 데이터를 저장해놓는것뿐이였는데, 우선 인증/인가가 필요하다고 생각하여 JWT를 사용한 로그인/회원가입을 추가했습니다. 클라이언트에서 데이터 시각화, 서버에서 아키텍처 적용 등도 얘기했지만, 팀원 5명 중 2명만 이해할 수 있어 결국 적용하지는 못했습니다.
제가 엘리스 부트캠프를 할 때 현업 코치님들이 새벽까지 질문 받아주시고, 하나라도 더 알려주려고 하셨던 모습이 기억나 저도 똑같이 도움을 많이 주고 싶었습니다. 그래서 공식적으로는 프로젝트 기간에 코드리뷰가 없지만, 코드리뷰를 진행했습니다. 7개월이라는 기간이 짧지 않은데, 열심히하려고 부트캠프에 신청했을거라 생각하고 이 기간동안 많이 많이 성장하기를 바라는 마음에서 제 시간도 많이 쓰면서까지 도와주고 싶었습니다.
하지만 초급프로젝트가 마무리되고서 그 결정을 후회했고, 열심히 하려는 사람에게만 도와줘야겠다는 생각으로 바꼈습니다.
파트 3
파트2 (초급프로젝트) 이후 파트3이 시작되었는데, 팀이 3개로 변경됨에 따라 멘토도 3명으로 줄었습니다.
다행히 열심히해서 눈여겨보고 있던 수강생들과 같은 팀이 되었고, 현재는 중급프로젝트를 진행하고 있습니다.
파트3을 진행하면서 느낀점이 많습니다.
1. 배운 내용에 집중할 수 없는 환경
수강생들은 스프린트 미션을 1~2주마다 진행해야합니다.
매주 일요일 제출이고, 그다음주 수요일까지 멘토가 코드리뷰를 완료해야합니다.
그러면 코드리뷰 완료 한 주에 수강생은 코드리뷰 내용을 수정해야되고, 그 다음 스프린트 미션을 진행하며 새로운 내용의 강의를 들어야합니다.
예시)
3번째주: 미션 3을 일요일까지 제출
4번째주:
1. 수요일까지 멘토가 미션3 코드리뷰를 완료하면, 그 주 일요일까지 미션3 코드리뷰 내용 수정하여 반영하여 제출
2. 미션 4 진행하여 일요일까지 제출
3. 미션5 내용 강의 수강
이런 환경에서 2/3 정도는 파트2부터 스프린트 미션에서 아예 손을 놓기 시작했습니다.
안하는 사람들 전부에게 물어봐도 별다른 얘기를 하지 않아서 강요하지도 않았습니다.
반대로 열심히 하는사람들한테는 저도 리뷰를 열심히해줬는데요, 멘토가 리뷰를 늦게 해주는 만큼 수강생은 그것을 수정하기가 어려워집니다.
저는 시작부터 이 방식에 대해 의구심을 품었고, 저만 유일하게 수강생이 PR을 올리자마자 리뷰를 해주어 그 주 일요일제출까지 모든 코드리뷰 내용을 수정할 수 있게 진행했습니다. 미션 4를 진행할때 미션3을 신경쓰는것이 옳지 않다고 생각했기때문입니다.
또한, 미션이 계속 있고, 미션과 현재 배우는 내용이 다르다보니 수업 진도를 놓치는 수강생들도 많았습니다. 이 상황에서 아무에게도 도움을 요청하지 않고 이도저도 못하여 놓친 진도가 눈덩이처럼 불어나 더이상 따라갈 수 없는 상태가 되었습니다.
2. 부족한 지원
부트캠프측에서 노션 사용을 추천하는데, 노션을 지원해주지 않아 개인이 워크스페이스를 만들어 사용해야합니다.
제가 예전에 엘리스에서 부트캠프를 진행할때는 기수별 노션 워크스페이스가 있어 다른팀이 뭘 하는지 전부 볼 수 있었고, 다른팀에서 좋은걸 하면 그걸 가져와 적용해볼 수 있었습니다. 그런데 여기서는 멘토링과 팀별 프로젝트를 개인 워크스페이스로 진행하니 다른 팀과 단절되고, 자연스럽게 교류하는 기회도 생길 수 없게 되었습니다. 멘토링도 다른팀에서는 뭘 하는지 알 수가 없으니, 지금 우리팀이 하는것이 최선이라는 생각에 빠지기 쉬운것같았습니다.
3. 포지션을 고려하지 않은 팀 구성
풀스택 트랙이라고는 하나 취업은 일반적으로 프론트엔드 / 백엔드로 나눠서 해야되기때문에 프로젝트할때는 한가지를 정해서 해야된다고 생각합니다. 한가지도 제대로 못하는데 두가지를 공부하는것은 욕심이라고 생각하고, 어차피 풀스택은 강의 듣고 미션 하면서 익힐수 있기때문입니다.
부트캠프 특성상 프론트엔드 작업이 훨씬 오래걸리는데, 각 포지션 별 비율과 잘하는 사람의 비율이 맞지 않아 어려움을 겪는 팀도 있었습니다.
4. 프로젝트 기간에 멘토의 역할
공식적으로 코드리뷰가 없다보니 프로젝트 코드는 수강생들의 판단으로만 작성이 되고, 다른 부트캠프와 비교했을때 퀄리티가 낮은 코드로 되는 경우가 많았습니다. 어떤 팀은 프론트엔드의 각 페이지를 리액트 라우터로 연결하지 못해 시연도 못했습니다.
결과적으로 멘토링이라는 시스템이 프로젝트에는 영향을 주지 못한것입니다.
docker, ts + oop 특강
이런걸 느끼고서 열심히 하는 사람들만이라도 제대로 서포트를 해줘야겠다고 생각했고, typescript + oop의 4개 특성 (추상화, 캡슐화, 상속, 다형성), docker 특강을 진행했습니다.
https://github.com/MCprotein/ts-lecture
https://github.com/MCprotein/docker-lecture
두 특강 각각 5명정도 참여했고, 도커는 특히 어려워했지만 다들 열심히하는 사람들만 모였기때문에 크게 걱정은 하지 않고 있습니다.
보통 부트캠프를 하는 사람들은 커리큘럼과 별개로 스터디를 진행하는 편인데, 코드잇은 스터디를 지원해주긴 하지만 스프린트 미션 하느라고 아무도 스터디를 하지 않습니다.
그리고 커리큘럼이 백엔드보다는 프론트엔드에 더 치중해있어서, 백엔드를 희망하는 사람들을 위해 스터디를 계획하고 있습니다.
7월 말부터 지금까지 저와 같은 팀이였던 수강생들을 물심양면으로 도와줬는데, 이제는 저도 지쳐가는걸 느낍니다.
주된 원인은 많은 수강생들이 보이는 세가지 특징때문입니다.
1. 하라는 거 안하기
2. 수동적인 자세
3. 2번으로 인한 피드백 부재
친해진 수강생 중 잘하는 분이 이런 말씀까지 하셨습니다. "이 부트캠프 하는 사람들 중에 목표가 다른 사람들이 여럿 있는것같아요"
이분의 목표는 보통의 부트캠프 수강생이 그렇듯 열심히 공부해서 좋은 회사에 취업하는 것입니다.
그래서 열심히 하는 사람들만 소수정예로 진행하기 위해 저런 공지를 올렸고, 스터디 부제는 빡공클럽입니다.
저는 부트캠프에서 가르쳐주지 않은 것도 프로젝트에 바로 적용해보며 공부했고, 당연히 이렇게 공부해야된다고 생각합니다.
가르쳐주는 것만 공부하는게 아니라 욕심이 있어 안배운것도 공부하는 자세가 필요하다고 생각하기 때문입니다.
따라서 아직 배우지 않은 타입스크립트를 공부하여 중급프로젝트에 적용해보기를 바랬고, 이것을 신청 조건으로 걸었습니다. (말투도 일부로 거칠게 했습니다.)
현재 저희팀원들과 빡공클럽 회원들은 타입스크립트를 프로젝트에 적용하여 개발중입니다.
아직 중급 프로젝트를 시작한지 일주일이 되지 않았지만, 개발속도가 빨라 고도화작업까지 가능할것으로 보입니다.
https://github.com/2-Docthru-team1
---
최근 부트캠프 수료자들이 신입 채용 시장에서 외면받는다는 얘기를 많이 들었습니다.
개발 채용 시장이 워낙 어려워져 공고 자체가 많이 없어졌고, 그로인해 신입 수준도 전체적으로 올라간것으로 알고 있습니다.
그럼에도 불구하고 어느정도 신입에게 기대하는 수준을 맞춘다면 스타트업 서류합격은 비빌 수 있지 않을까 생각했는데, 서류조차 합격률 한자리수가 일반적인거같아 조금 의아했습니다.
하지만 멘토 활동을 하면서 이유를 알았습니다. 잘하는 사람들은 정말 열심히해서 잘하지만, 그 외에는 그닥 열심히 하지 않습니다.
정보를 많이 얻으려고도 하지 않는것같습니다.
멘토링을 진행하면서 받았던 질문중에 가장 당황스러웠던것이 "cs 지식이 꼭 필요한가요? 개발실력만 좋으면 되는거 아닌가요?" 였습니다.
실제로 빡공클럽 회원 한분은 팀에 백엔드가 그 분 포함 3명인데, 혼자 개발하고 있습니다.
열심히하는 사람들은 취업난임에도 불구하고 취업을 잘 할것으로 생각하는데, 총 인원에 비하면 비율이 낮아 전체 취업률은 낮고, 앞으로도 낮아질것같습니다.
그래도 열심히 하는 사람들이 있고, 그분들은 앞으로 계속 좋은 관계를 유지하려고 합니다.
제가 백엔드 개발자이기때문에 빡공클럽은 백엔드로만 이루어졌으나, 프론트엔드 희망자들중에도 잘하는 사람들이 많기때문에 어떻게 도움을 줄 수 있을지도 고민하고 있습니다.
추가로, 부트캠프 수강생들은 대부분 공통점이 있습니다.
1. 부트캠프에서 알려주는 지식이 충분하다고 생각하고, 그것만 익히려고 합니다.
2. 검색을 해볼 생각을 하기 전에 chatgpt를 먼저 떠올리고 그 결과를 신뢰합니다.
3. 다른사람의 코드에는 크게 관심이 없습니다.
이런점들은 실력과 관계가 없어서 신기할정도였습니다.
그래서 파트1부터 지금까지 아래 내용을 굉장히 강조하고 세뇌까지 시켰습니다.
1. 개발자는 문제를 해결하는 사람이다.
2. 아무 생각 없이 코드를 작성하면 안된다. 내가 작성한 코드에는 그렇게 작성된 이유가 있어야 한다.
3. 문제가 생기면 고민해보되 너무 오랜 시간이 소요되면 팀원들과 상의해보는것이 효율적이다.
4. 다른 사람들의 코드를 많이 보아야 한다. 그래야 같은 기능을 하는 코드임에도 불구하고 다르게 작성할 수 있다는것을 배울 수 있다.
물론 저도 신입때부터 위 내용대로 행동한것은 아닙니다. 일을 하면서 훌륭한 동료분들께 배운것이죠.
다만, 개발에 입문할때부터 알고 있으면 더 좋을것이라고 생각하여 설파했습니다.
다음에는 고급프로젝트까지 마친 후 최종 회고글을 작성해보겠습니다.
'나의 삶' 카테고리의 다른 글
Node.js 기여해보기 (1) | 2024.09.02 |
---|---|
오픈소스 컨트리뷰션 아카데미에서 Node.js 참여형 멘티로 참여하게 되었습니다. (OSSCA) (0) | 2024.07.16 |
2023년을 보내며 (2) | 2023.12.20 |
Node.js에서 Async Await, Try Catch 남발하기 (0) | 2023.10.06 |
개발할 때 코드만 생각하지 않기. 김재호님의 글을 보고. (0) | 2023.03.12 |