항해 플러스 6기 솔직 중간회고

🧑‍💻 회고 시작에 앞서 자기소개

회고를 작성하는 일자를 기준으로 3년 6개월 된 백엔드 개발자이다.

메인으로 삼고 있는 기술 스택은 Java, Kotlin, Spring Boot 이며, 3년 9개월이라는 시간 동안 HR 도메인에서 나름 다양한 서비스를 개발 및 유지보수 해오며 지내왔다. 취업 준비생 지원 서비스, 대학 입학사정관들이 주 고객인 학생부 검토 솔루션, AI 면접 연습 서비스 등 다양한 서비스를 다루면서 자연스럽게 Java 뿐만 아니고 PHP, Python 과 같은 다양한 프로그래밍 언어도 접해왔다.

부트 캠프 출신은 아니고 대학교를 졸업하자마자 취업에 성공한 케이스라서 실무와 관련된 개발 지식은 대부분 회사에서 배우게 되었다.

🤷 왜 항해 플러스 코스에 합류하게 되었나?

평소에도 개발 관련 지식을 학습하는 것에 관심이 있었고 중요하게 생각해왔다. 그러다 회사에 유명 부트 캠프 출신 개발자들이 여럿 합류하게 되었는데, 하나같이 굉장히 많은 인사이트 지식이 있는 분들이었다. 감사하게도 이 분들이 먼저 스터디 제안을 해주셔서 함께 OOP, 테스트 코드, 코드 리뷰 스터디를 하며 조금이나마 그들의 지식을 엿볼 수 있었다.

그러다 이직을 결심하게 된 순간이 왔다. 이제 재직 중인 회사에서 경험해볼 수 있는 건 모두 경험해봤다고 생각했던 것도 있고 다른 조직은 어떻게 일하고 있는지 등 다른 회사의 개발 문화도 경험해보고 싶은 마음이 들었던 것 같다.

그렇게 이직 시도를 하게 되었는데, 여러 면접을 거치고 나니 스스로 연차 대비 아는 게 적다고 느꼈다. 학부생 시절 들었던 이론적인 내용에 대해서도 잘 대답을 못한 것도 있었고, 내가 회사에서 진행했던 프로젝트에서 “왜 이런 설계를 했는지?” 또는 “만약 현재 설계에서 고칠 수 있다면 어느 부분을 고칠건지?”와 같은 심화 질문에 대한 답변의 주장에 논리력이 부족하다고 느꼈다. ‘아는 것이 더 많았다면 각 방법들의 장단점을 얘기해가며 답변할 수 있었을텐데..’ 하는 아쉬움이 들었고, 그럴 때마다 사내의 부트 캠프 출신 개발자분들이 생각나며 그 분들이었다면 분명 잘 대답할 수 있었을 것이라고 생각했다.

그렇게 학습에 대해 갈망했지만 어떤 것부터 학습해야 할지 알지 못했고, 차라리 재직자 대상의 부트 캠프가 있다면 꼭 하고 싶다고 생각하게 되었다. 그러다 팀원분이 항해 플러스에 대해 알려주었고, 커리큘럼과 관련 회고 블로그 글을 보고 내가 원하던 재직자 대상의 부트 캠프와 요즘 백엔드 개발에서 트렌드로 떠오르는 TDD대용량 트래픽 및 데이터 처리를 제대로 배워볼 수 있는 좋은 기회라고 생각하여 합류하게 되었다.

(본격 항해 과정 시작 전 타운홀 스터디 모임. 동그랗게 모여앉아서 이야기하는 모습이 너무 귀엽다 🤣)

🎯 항해 플러스를 시작하며 꼭 해내고 싶었던 목표와 가지고 있던 고민은?

앞에서도 이야기한 것처럼 항해 플러스를 시작하기 전 고민은 연차 대비 지식이 부족하다는 점이었다. 면접을 본 후 면접 회고를 정리하며 분석한 결과 내가 지금까지 사내 프로젝트를 하면서 사용해왔던 기술에 대한 깊은 이해가 부족했던 것 같다. 그 기술 중 가장 대표적인 것이 바로 Kafka였다. 내 블로그 글을 보면 알 수 있겠지만, 나는 실무에서 Kafka를 다루며 업무를 해왔다.

업무를 위해 나름 Kafka에 대한 이론적인 동작 원리와 주요한 설정 등을 학습하여 Kafka를 다루는 데 지장이 없는 수준이라고 생각했다. 하지만 이는 오산이었다. Kafka로 이벤트 드리븐 설계를 구축할 때 주의해야 할 점이나, 신뢰성을 보장하는 이벤트 처리 전략 등 더 고려해볼 만한 내용들이 아직 많이 있었다는 것을 면접을 보면서 알게 되었다.

항해 플러스 커리큘럼에서 가장 눈에 띄었던 부분은 대용량 트래픽과 데이터 처리였다. 이를 보자마자 Kafka를 활용하여 실무에서 경험하기 어려운 시나리오를 경험해보며 지금보다 더 깊게 학습할 수 있을 것이라는 생각이 들었고, 이는 자연스럽게 항해 플러스에서의 목표가 되었다.

Kafka 뿐 아니라 실무 경험을 하기 어려운 대용량 데이터 처리 과정에서도 대용량 데이터를 처리하는 다양한 전략과 Redis 활용 방안 등을 보다 깊게 학습하는 것 또한 세부 목표이다.

🫅 지금까지 가장 기억에 남는 성취

현재 회고를 작성하고 있는 시점에서 진행한 커리큘럼은 대용량 트래픽 및 데이터 처리 과정 전인 TDD와 서버 구축 과정까지 진행했다. 이 과정까지 진행하면서 기억에 남는 성취라고 한다면 동시성에 대해 고민해보고 실제로 이를 제어하기 위한 방안들을 실습해봤다는 점이다.

항해를 하기 전에는 멀티 스레드에 안전한 Concurrency 자료 구조와 DB 락에 대해 어렴풋이나마 알고 있었지 이를 적극적으로 활용해서 동시성 제어를 한 경험은 없었다. 지금 와서 생각해보면 이러한 것들을 활용하지 않고 어떻게 지금까지 서비스가 운영이 되었는지 신기할 따름이다. 실제로 동시성을 고려하지 않고 동시성 테스트를 했을 때 절대 의도한 대로 기능이 동작하지 않았기 때문이다.

특히 DB 락에 대해 자세히 공부해볼 수 있는 기회가 되었고 어떠한 경우에 어떤 락을 적용해야 할지와 같은 응용 능력을 조금이나마 얻을 수 있던 점이 좋았다. 이전에 DB 락에 대해 공부할 때 실습을 해보지 않고 단순히 이론적으로만 학습했을 때는 확실히 이해가 안되었다. 또한 개인적으로 실습을 위한 시나리오도 구현하려고 해도 DB 락에 대해 제대로 이해가 안된 상태라 어떤 상황에서 락을 사용해야 하는지 모호한 상태이기 때문에 어떤 시나리오를 구현해야 할지 어려움이 있었다. 하지만 항해에서는 시나리오가 주어지고 동시성 제어가 필요한 기능을 고려해보며 구현해볼 수 있기 때문에 개인적으로 공부했을 때 필요했던 부분을 충족시켜주었다.

그리고 코틀린에 익숙해진 점도 있다. 항해 플러스를 시작하기 전에는 코틀린 문법 정도만 개인적으로 공부한 정도였고, 실제 프로젝트를 구현하는 정도 수준은 아니었는데, 항해 플러스 과정을 진행하다보니 코틀린 코드를 자연스럽게 작성하고 있는 내 모습을 볼 수 있었다. 물론 코틀린스럽게 코드를 작성하는 것에는 아직 못 미치지만, 마치 처음 프로그래밍을 배우고 어느 순간 자바 코드를 작성하는 것에 익숙해진 것처럼 코틀린 코드를 작성하는 것도 어느 순간 한결 익숙해졌다.

마지막으로 또 다른 성취라고 한다면 같이 공부하며 지식을 공유할 수 있는 동료들이다. 항해 플러스는 교육 특성 상 학습과 역량 강화를 위한 교육 코스이기 때문에 대부분의 참여자분들이 학습에 대한 열의가 상당하다. 그리고 항해 플러스는 다른 사람들과 경쟁하는 방식이 아니고 개별적으로 과제를 수행하는 방식이기 때문에 서로서로 도와주려는 분위기이다.

그 중에서 특히나 팀원들이 모두 담합이 잘 되고 좋은 분들이라 정말 좋았다. 모르거나 어려운 부분이 있을 때 적극적으로 도움을 주려 하고, 과제를 하면서 아이디어 공유도 활발하게 하며 과제 수행에도 열의를 갖고 임하는 팀원들을 만날 수 있었다는 점이 또 하나의 성취라고 할 수 있겠다.

(고맙고 소중한 백엔드 6기 27팀! 👍)

🌓 항해 Before & After

항해 플러스를 하기 전에는 솔직히 스스로의 개발 역량에 대해 의심이 있었다. 생각해보면 주변에 워낙 잘하는 사람들이 많았던 것 같다. (그래서 좋지 않았다는 게 아니다! 너무 운이 좋았다고 생각하며 이 분들을 나의 귀인들이라고 생각한다.) 그러다보니 자연스레 비교하게 되었고, 내가 개발한 부분에서 상대적으로 좋지 않은 부분들이 많이 보였던 것 같다. 지금 와서 생각해보니 이렇게 스스로에 대한 의심으로 자신감이 꽤 낮아진 상태가 되었던 것 같다. 그 상태에서 면접을 보러 다녔으니 아는 것도 대답을 잘 못해 이직이 힘들게 느껴졌을 것이다.

항해 플러스를 진행하고 있는 현재는 그 자신감이 많이 올라갔다. 의심을 했던 내 개발 역량이 잘못되지 않았음을 코치님의 평가로 증명했기 때문이다. 4주차 때 서버 프로젝트를 실제로 구현해보는 과제가 주어졌는데 이 과제가 구현할 게 많았어서 힘들었고, 본격적인 구현 과제이다 보니 “과연 내가 구현한 프로젝트가 패스를 받을 수 있을까?” “어설프게 느껴지지 않을까?” 하는 걱정과 의심으로 자신 있는 상태도 아니었다. 하지만 정말 다행이도 제출한 과제는 패스를 받았고, 레이어드 아키텍처 관점에서 개선할 점과 관련한 피드백을 받았고 구현에 대한 피드백은 받지 않은 것을 보고 내 구현 방식이 결코 틀리지 않았음을 깨닫게 해주었고, 그 때 굉장한 성취감을 얻었다.

나는 항해 플러스를 하기 전과 후는 스스로 굉장한 차이가 있다고 생각한다. 항해 플러스를 하지 않은 지금의 내 모습은 상상도 하기 싫다. 아마 무엇을 학습해야 할지 방향을 잡지 못하고 방황하다 지쳐 쓰러졌을 게 뻔하다. 잃어버렸던 내 자신감을 회복시켜 준 항해 플러스에게 정말 고맙고 다행이라고 생각한다.

⛰️ 아직 이루지 못한 목표

이제 본격적인 대용량 트래픽 및 데이터 처리 커리큘럼 과정 시작이다. 아직 이루지 못한 목표라고 한다면 해당 과정을 경험하고 학습하는 것이 목표이다. 이번 주차부터가 항해 플러스의 핵심이라고 해도 과언이 아니다. 실무에서 경험해보기 어려운 과정을 경험해볼 수 있는 과정이기 때문에 이를 위해 항해 플러스를 신청한 사람들도 분명 많을 것이다.

물론 항해 플러스의 최종적인 목적은 본인의 지식 학습과 기술적 역량 성장이긴 하지만, 욕심이 있다면 이번 커리큘럼 과제를 전부 패스를 받는 것이다. 학습이 제대로 이루어졌다면 패스는 자연스레 따라오겠지만…😅

🧗 앞으로 항해 플러스 과정에서 반드시 성공하고 싶은 목표

앞에서 언급한 아직 이루지 못한 목표를 이루는 것을 꼭 성공하고 싶다. 회고를 작성하는 현 시점이 대용량 트래픽 및 데이터 처리 과정의 첫 번째 과제 주차인데 역시 쉽지 않았다… 이 어려운 과제를 잘 해쳐나가기 위해서는 더 적극적으로 코치님께 질문해 지식을 더 많이 뽑아먹어야 한다.😋 그리고 항해 플러스를 시작하기 전에는 레드 뱃지 (과제 80% 이상 달성) 를 받는 것을 개인적인 목표로 생각하긴 했는데 지금까지 모든 과제를 패스 받으니 괜히 욕심이 생겼다. 이왕 하는 거 블랙 뱃지 (과제 90% 이상 달성) 까지 받아볼 수 있도록 더 열심히 임해보겠다!

(감사하게도 지금까지 진행한 과제는 올패스를 받았다!)

🤝 오프라인 중간 네트워킹 후기

5주차를 마친 후, 오프라인 중간 네트워킹 시간을 가졌다.

이 날에는 같은 시나리오를 선택한 인원들로 랜덤 조를 편성해서 조 내에서 각자 중간 회고를 발표하는 시간을 가졌다. 같은 과제를 겪어 왔지만, 각자 생각도 다르고 항해 플러스를 시작한 목적도 다르기 때문에 과제에 대한 다양한 의견을 들어볼 수 있는 좋은 기회였다. 사실 우리 조는 회고 발표는 금방 끝내고 각자의 배경과 앞으로의 목표 등 개인적인 이야기들을 더 많이 했다. 이러한 얘기들을 들으면서 개발자로 일하는 환경이 정말 다양하다는 점과 성장하고자 하는 개발자들이 역시 많구나 하는 생각이 들었다.

중간 회고 발표 후에는 이전 주차 과제에 대한 코드 리뷰 및 페어 프로그래밍 시간을 가졌다. 우리 조는 코드 리뷰 위주로 진행했다. 이전 주차 과제는 시나리오에서 발생할 수 있는 에러 코드 정의와 에러를 관리하는 체계를 수립해보는 것과 Filter와 Interceptor를 활용하여 기능 관점을 분리하여 개선해보는 것이었다. 확실히 딱 정해진 게 아닌 자유롭게 각자의 방식대로 하는 과제였다 보니, 모두 상당히 다양한 방식으로 과제를 한 점이 재밌었다. 어떤 분은 XSSFilter를 도입하고, 어떤 분은 그 분만의 에러 코드를 만들어 관리하는 등 말이다. 개발이 재밌는 이유는 정답이 없기 때문이다. ‘내가 한 방식이 맞고 너가 틀려!’ 이런 게 없고, ‘아! 이런 식으로도 접근할 수 있구나!’ 하며 다른 개발자에게서 영감을 받는 게 많기 때문에 서로 지식을 공유하는 개발자 문화가 정말 좋은 것 같다.

(아쉽게도 오프라인 네트워킹에서 사진 촬영하는 걸 깜빡했다…😭)

🏅 항해 플러스 백엔드 코스 장점을 꼽아보자면…

지금까지 항해 플러스 과정을 진행하면서 느낀 장점이 워낙 많은데 내가 생각했을 때 가장 크게 느껴졌던 장점을 몇 가지 꼽아봤다.

첫 번째. 하나의 주제에 대해 다양한 시니어 개발자들의 의견을 들어볼 수 있다.

어쩌면 항해 플러스의 가장 큰 장점일 수 있다. 코치님 한 분에게만 코칭을 받는 게 아니고 매 주차마다 멘토링 신청을 하게 되는데 매번 다른 코치님을 선택할 수 있다. 그리고 멘토링은 온라인 ZEP 공간에서 하는데 다른 조의 멘토링 시간에 슬쩍 들어가 같이 들을 수도 있다. (우리는 이것을 도강 청강이라 부르기로 했다) 그러다보니 같은 과제에 대해서도 다른 코치님들의 의견을 들을 수 있어서 다양한 접근 방식을 배울 수 있다.

(1주차 때 하헌우 코치님의 멘토링 시간! 그는 신이야!⭐)

두 번째. 실무에서 경험해보기 어려울 수 있는 시나리오를 경험해볼 수 있다.

이 부분은 많은 사람들이 항해 플러스를 신청한 이유이기도 하고, 나도 신청한 이유에 꽤 크게 작용했던 부분이다. 주니어 연차 때 실무에서 대용량 트래픽과 데이터 처리에 대해 다룰 수 있는 기회를 얻기 쉽지 않다. 개인 프로젝트로 해본다고 해도 과연 제대로 구현한 방식인지 판단하기도 어렵다. 항해 플러스에서는 이러한 경험을 과제로 해결해보고 코치님께 피드백을 받을 수 있으므로 이러한 사람들의 니즈를 충분히 만족시켜 줄 것이라 생각한다.

세 번째. 팀 프로젝트가 아닌 개별 프로젝트로 과제를 진행한다.

물론 팀 프로젝트를 더 원하고 필요로 하는 사람들도 있다. 하지만 팀 프로젝트의 치명적인 단점은 팀원이 중간에 이탈하게 될 경우 진행이 어려워질 수 있다는 점이다. 항해 플러스에도 물론 팀이 존재한다. 하지만 프로젝트를 팀 단위로 하는 게 아닌 개인 프로젝트로 수행하면서, 팀은 코드 리뷰와 아이디어 공유, 멘토링 수강을 위한 조직이다. 그래서 팀원이 중간에 이탈을 해도 과제를 수행하는 데 있어 치명적인 영향을 미치지 않고, 개인 프로젝트이기 때문에 팀원들에게 부담 없이 모르는 부분을 물어볼 수 있는 것 같다. 그러다보니 자연스레 팀원들끼리 다 같이 으쌰으쌰 하는 분위기가 형성되어서 혼자 하는 과제이지만 혼자가 아닌 느낌을 받을 수 있어, 나는 이 부분을 장점으로 꼽았다.

🩺 현재까지의 자가진단

이번 주차로 TDD와 서버 구축 과정 커리큘럼이 모두 완료되었다. 무려 두 챕터가 끝나게 된 현재, 코스 시작 전과 후 어떤 부분을 얼마나 알게 되었는지 자가진단을 가져보았다.

먼저 완료한 커리큘럼에서의 목표는 단위 테스트와 통합 테스트를 작성할 수 있게 되는 것, 동시성 문제에 대해 고민할 수 있게 되는 것, 에러코드 관리와 에러 핸들러를 다룰 수 있게 되는 것, Filter와 Interceptor에 대해 알고 응용할 수 있게 되는 것이었다. 나의 자가진단 표는 다음과 같다.

모든 항목이 전반적으로 점수가 올랐다! 그만큼 커리큘럼에서 목표했던 점들에 대해 많이 배워갔다는 것을 점수로 보여주는 것 같아 뿌듯하다.

그래프로 보면 어떤 점들이 달라졌는지 확실히 더 잘 볼 수 있었다. 항해 플러스를 시작하기 전에 가장 이해도가 낮았던 영역이 Filter와 Interceptor로 나타났다. 가장 이해도가 낮아서 항해 후 가장 큰 성장을 한 영역 역시 Filter와 Interceptor로 나타났다. 그 다음으로는 에러 핸들러와 에러 코드 관리 영역으로 나타난 것을 볼 수 있다. 스스로 생각했을 때는 가장 큰 성장을 보인 영역이 동시성 부분이라고 생각했는데, 조금이나마 아는 부분도 있어서일까 항해 전 점수가 그렇게 낮지는 않았다. 생각해보면 확실히 다른 개념들은 어느 정도 들어보거나 아는 부분이 있었는데, Filter와 Interceptor는 이를 활용하는 과제를 하면서 처음 다뤄보기도 하는 등 새롭게 알게 된 게 더 많았던 것 같다.

전체 성장률이 50%를 보며 ‘상당히 많은 변화가 있었고, 많이 배웠구나.’ 하는 것을 다시 한 번 느끼게 되었던 것 같다. 이제 10주 과정에서 절반인, 5주가 지났지만 짧다고 하면 짧을 수 있는 시간에 정말 다양한 과제로 많은 성장을 할 수 있어서 항해 플러스를 시작한 것에 전혀 후회가 없다!

🤩 다음 수료생 추천 할인 혜택!

혹시라도 항해 플러스에 합류하고 싶은데 비싼 수강료 때문에 망설여진다면…? 🤔

수료생 추천 할인 혜택으로 20만 원을 할인받으실 수 있다는 사실! 💡

결제페이지 → 할인 코드 → 수료생 할인 코드에 tJQjYK 입력하면 추가로 20만 원을 할인받는 혜택 꼭 챙겨가시길 바란다🚀🚀🌟



#항해플러스후기 #항해솔직후기 #항해플러스백엔드6기 #항해플러스 #항해99 #추천인: tJQjYK