Preview



3월부터 시작한 자바 부트캠프 심화 과정이 지난 5일 마무리 됐습니다.
노트북을 늘 안고 다니던 것도 이제 그리워질 듯 합니다.
3개월, 49일, 343시간이 정말 빠르게 지나갔습니다.

왜 부트캠프를 참가했나요?


이전에 이미 백엔드 부트캠프를 6개월이나 마친 상태였어요.

그런데도 취업의 길로 바로 가지 않고 심화 과정을 선택했습니다. 취업이 급했던 상황인데도 말이죠.

솔직히 이전 부트캠프에서 배운 것만으로는 기업에서 제대로 업무를 수행할 자신이 없었고,

무엇보다 제대로 된 협업 프로젝트를 해보지 못한 점이 아쉬웠습니다.

그래서 진짜 열정적인 사람들과 제대로 된 팀 프로젝트를 경험하고 싶었어요.

하지만 또 너무 긴 시간을 투자하거나 긴 공백 기간을 갖고 싶지는 않았습니다.

이런 욕심 많은 조건에 딱 부합했던 것이 바로 자바 심화 과정이었습니다.


'멋쟁이사자처럼'을 선택한 이유는요?


자바 심화 과정을 진행하는 훈련기관이 생각보다 많지 않았습니다.

최종적으로 내일배움캠프와 멋쟁이사자처럼을 고민했어요.

내일배움캠프는 당시 150명이라는 많은 인원을 선발해 온라인으로 진행 중이었고, 

멋쟁이사자처럼은 20명 내외 소규모 인원으로 오프라인 진행을 하고 있었어요.

개인적으로 강제적으로라도 더 잘할 수 있도록 밀어주는 분위기를 원했고, 

적은 인원이라 세심하게 관리받을 수 있다는 생각에 멋쟁이사자처럼 부트캠프를 선택했습니다.


무엇을 배웠나요?


정말 많은 걸 배운 시간이었어요.
강사님이 기존의 부트캠프와는 다른 방식으로 강의를 진행하셔서 더 그랬던 것 같습니다.
수업 자료에 진심인 강사님이었다.
매 수업마다 github 업데이트를 했는데, 매일 브런치 업데이트가 4-5개씩 됐었다.


튜토리얼 식으로 강의하시는게 아니라, 
깃허브에 예제 자료를 다양하게 올려주셔서 직접 보고 학습하도록 유도하셨습니다.



"대부분 이렇게 하면 됩니다! 자 쉽죠!?" 라는 스타일이었지만, 사실 프로젝트를 진행하며 복습하고 보완할 기회를 가질 수 있었습니다.

덕분에 Docker, Kubernetes, Elasticsearch, Websocket, Grafana 같은 다양한 기술을 접할 수 있었어요.
강사님이 딱 맛보기 수준으로 제시해주시고, 제대로 된 학습은 저희가 직접 할 수 있도록 방향을 잡아주신 점이 좋았습니다.

애초부터 강의 자체보다는 프로젝트 진행이 목적이었던 과정이기에, 
실제 프로젝트에서 기술을 숙달하며 익힐 수 있었던 점이 가장 마음에 들었습니다.


더 나은 약품 정보를 위한 약품 검색 플랫폼, YAK+
깃허브: https://github.com/yakplus
배포주소: https://yakplus.techlog.dev

첫 프로젝트는 Elasticsearch를 활용한 의약품 검색 엔진 서비스였습니다. 
운 좋게도 제가 작성한 기획안이 채택돼 ‘약플(YAK+)’을 개발하게 되었어요.

이 프로젝트를 기획한 이유는 사실 다른 개발 영역보다 처음 접하는 Elasticsearch 기술 자체에 집중하고 싶었기 때문이에요. 덕분에 Elasticsearch를 깊이 있게 공부할 수 있었습니다.

그리고 프로젝트에서 구현해야할 기능도 굉장히 명확했기 때문에 기능 개발보다는 협업할 수 있는 팀 구조를 만드는 데 애를 썼어요.
개인적으로는 프로젝트의 완성도 보다는 제대로된 협업을 해보고 싶었거든요.

그런데.. github와 같은 협업 도구를 제대로 활용해본 적이 별로 없어 뜻대로 잘 되진 않았어요.





그래도 데일리 스크럼을 진행하면서 팀원들과 의견을 나누고 협력하는 방법을 점점 익힐 수 있었어요.
코드 컨벤션과 커밋 컨벤션을 정해 ‘코드로 대화하는 방법’을 배운 것도 값진 경험이었습니다.
특히 주석 규칙을 만들어 두었는데, 나중에 협업을 하면서 주석이 얼마나 중요한지도 알게 되었습니다.




아쉬운 점이 참 많았던 프로젝트였는데, 
검색이라는 서비스 본연의 가치에 집중한 점을 인정받아 최우수 프로젝트로 선정된 좋은 성과가 있어 기분이 좋았던 프로젝트였습니다.

처음 부트캠프에 참가할 때 기대했던 것은 다양한 사람들과 협업할 수 있는 기회와 두 개의 다른 팀 프로젝트였는데, 현실적으로는 두 번째 프로젝트 때 기존 팀을 유지하라는 통보를 받아 선택의 여지가 없었습니다. 이 부분은 상당히 아쉬웠어요.

저희가 선택할 수 있었던 건 기존의 YAK+ 프로젝트 고도화 또는 새로운 프로젝트 개발이었는데, 
고도화는 부트캠프 이후에도 충분히 할 수 있다는 생각이 들었어요.

게다가 고도화를 선택하게 되면 개발 과정이 느슨해질 우려가 있었고, 그러면 성장 속도가 떨어질 것이라 생각했어요.
깃허브: https://github.com/talkpick
배포주소: https://talkpick.techlog.dev
기술설명: https://techlog-dev.notion.site/talkpick

그래서 저희 팀은 새로운 서비스를 기획하기로 했고, 그렇게 나온 아이디어가 통합 뉴스 채팅 플랫폼인 TalkPick이었습니다.

새로운 사람과 팀을 구성하지 못한 것은 아쉬웠지만,
현재 팀은 이미 한 차례 협업을 시도해본 경험이 있기에.. 더더욱 팀 프로젝트를 제대로 진행해볼 수 있는 기회였어요.
그래서 팀장으로서 부족한 부분인 github 사용법을 수업이 끝나면 조금씩 학습해서 적용할 수 있었습니다.



Issue로 기능을 정의하고,
Project로 일정 관리도 만들어보고,
Pull Request로 본격적으로 코드 리뷰도 진행했습니다.
코드 리뷰를 진행하면서 개발 속도가 떨어져서 D-n룰과 P-n룰을 적용해보았어요.

팀원분 중 한 분이 나름 '킥'이 될만한 기능을 건의해주셔서 기능상으로도 만족스러운 프로젝트였습니다.

다만 발표에서 저희 팀의 성과를 제대로 전달하지 못해서 아쉬웠어요.

저희는 발표 시간 제한이 25분으로, 저희 팀의 개발 내역을 모두 다 발표할 수 없다고 생각했기에
기술 설명을 적은 노션 페이지를 만들었고 이게 핵심이라고 생각했어요.
나중에 안 사실이지만... 이런 노션 자료가 심사위원에게 전혀 전달되지 않았답니다.
(이전에 제출한 초안을 심사위원이 보고 있었다고 하네요)

덕분에 프로젝트 최종 발표전 심사위원이 보고 있는 자료도 더블 체크해야한다는 점도 교훈으로 얻어갈 수 있었어요...ㅎㅎ

그럼에도.. 저희의 성과를 인정해주셔서 톡픽 프로젝트는 우수상을 받았습니다.

프로젝트 회고


진행했던 두 프로젝트 모두 데이터 수집 과정이 필수적이었고 그 부분을 주로 담당했어서 Spring Batch와 Quartz에 대해 많은 학습을 할 수 있는 기회였습니다.

엘라스틱 서치는 다른 팀원이 대부분 진행해서 나중에 따로 학습을 해야겠어요.

이 두 프로젝트를 진행하면서 팀장으로서 세운 기준이 있었습니다.
1. 팀원간 기술 수준을 맞춘다.
: 다른 팀이 쓰는 기술을 모르게 하면 안된다. 모르는 기술을 쓰면 제대로 정리된 자료로 기술 수준을 따라 올 수 있도록 해야한다.

2. 협업 문화를 갖춘다.
: 읽을 수 있는 코드를 만들고, 그 코드를 리뷰 받아 서로 이해 가능한 코드를 만든다.

이런 면에서는 꽤 저에게는 만족스러운 팀 프로젝트였고,
한 명의 개발자를 넘어 작은 팀을 운영할 수 있는 팀장의 역할을 잘 배울 수 있었습니다.



다음으로..


이제 팀 프로젝트를 마무리하고 이력서를 정리하려고 해요.
취업을 준비 중인데, 아직 어떤 콘셉트로 저를 어필할지 고민이에요.
그리고 앞으로 프론트엔드와 JPA 공부를 병행할 예정이에요.
이 부트캠프에서 알고리즘 스터디도 만들어서, 매주 일요일마다 서울에 가겠네요 ㅎㅎ

블로그 방향성도 어느정도 잡힌 듯 합니다.
부트캠프에서 배운 내용들을 바탕으로 하나씩 정리하며 기술 블로그를 운영하고,
앞으로 부트캠프에 참가할 후배 개발자에게 도움이 될 글을 올려보려 합니다.