글쓰는 개발자

[회고] F-lab 멘토링(feat.NHN) 본문

회고 & 후기

[회고] F-lab 멘토링(feat.NHN)

개발하자 2022. 2. 17. 09:53
6개월간의 F-lab 멘토링 회고(2021.01 ~ 2021.07)

 

 

2021년 1월부터 7월까지, 조금 더 좋은 개발자가 되고 싶다는 마음에 F-lab 멘토링에 참여하였습니다.

 

멘토링을 받으면서 개발자가 어떤 방향으로 노력해야 하는지 깨달을 수 있었고,

 

그러한 깨달음을 바탕으로 올바른 방향을 잡고 꾸준히 노력하여 

 

멘토링을 시작할 때보다 조금은 더 나은 개발자가 될 수 있었다고 생각합니다.

 

또한 감사하게도, NHN에서 그간의 노력들을 좋게 봐주셔서 현재는 NHN 개발자로 재직 중에 있습니다.

 

저는 멘토링을 하면서 많은 도움을 받았고, 좋은 결과도 얻을 수 있었기에

 

F-lab 멘토링을 고민하고 있을 또 다른 개발자분들께 조금이나마 도움이 되고자, 저의 경험을 공유합니다.

 


목차

  1. 멘토링, 어떤 계기로 신청하게 되었나?
  2. 멘토링 진행 과정
  3. 멘토링 종료 이후
  4. F-Lab 멘토링에서 느낀 점
  5. NHN에 재직하면서

멘토링, 어떤 계기로 신청하게 되었나?

F-lab을 처음 알게 된 것은 대학교 4학년 2학기 직전 방학 때였습니다.

많은 사람들에게, 대학교 4학년 방학은 곧 다가올 취준 기간을 미리 준비하는 기간이기도 하죠.

저 또한, 어떻게 취업을 하면 좋을지 막연하게 고민하고 있었습니다.

 

사실 저는 남들보다 조금 늦게 그런 고민을 시작해서, 이것저것 프로젝트는 많이 해보았지만 정작 취업에 필요한 코딩 테스트나, 제 이력에 대한 정리가 되어 있지 않았습니다.(백엔드 개발자가 되고 싶었지만 프론트엔드 포트폴리오만 쌓여갔던 당시...)

 

그렇게 막연한 고민을 하던 와중에, 인스타그램 광고를 통해 f-lab 홍보 게시물을 발견하였습니다.

정확한 광고 내용은 기억이 나지 않지만, 스프링을 메인 기술 스택으로 하여 깊은 수준까지 공부할 것이라는 문구로 기억합니다.

 

당시에 '대체 좋은 개발자란 무엇일까?'라는 의문과, '취업을 어떻게 하지?'라는 고민을 갖고 있었는데, f-lab의 소개 페이지를 보면서 여기에서 두 문제에 대해 한 번에 도움을 받을 수 있을 것 같았습니다.

 

아래는 제가 처음 봤던 f-lab의 소개 페이지입니다. 그때는 이런 디자인이 아니었는데, 페이지가 많이 이뻐졌네요 ㅎㅎ

 

f-lab 소개 中

 

당시 '좋은 개발자가 되고싶다'는 추상적인 목표가 있었는데, 해당 소개 페이지는 그 목표에 도달하는 방법을 구체적으로 풀어놓은 문장들이라는 생각이 들었고, 글만 보더라도 생각이 비슷한 부분이 많다고 느껴 멘토링을 신청하였습니다.

 

멘토링 진행 과정

이론 공부

 

멘토링을 시작하면, 먼저 책을 정해서 이론을 공부합니다. '자바의 신'이라는 서적으로 시작했는데, 처음부터 프로젝트를 시작하고 거기서 필요한 이론들을 보충하는 형태로 공부할 것이라 예상했던 저로서는 조금 의외였던 기억이 나네요 ㅎㅎ

 

책을 선정하면 매주 일정 분량의 책을 읽고, 주 1회 멘토님과 책의 내용에 대해 기술 면접의 형식으로 내용을 점검합니다. 이런 방식으로 내용을 점검하다 보니, 책을 잘 읽고 이해했는지, 빠뜨린 내용은 없었는지, 보충할 내용은 어떤 것들이 있을지 객관적으로 바라볼 수 있게 되면서 실력이 많이 늘었습니다.

 

자바, JSP, 객체지향 설계, 스프링 등 많은 서적을 읽고 나서 프로젝트를 시작해도 될 기초 체력이 다져지면 드디어 프로젝트용 Github Repository를 생성하게 됩니다. 다음 주에 프로젝트를 시작할 테니 프로젝트 주제를 정해오라고 하셨던 멘토님의 말씀이 되게 설레었던 기억이 나네요 :)

 

프로젝트

 

프로젝트를 시작한다 해도, 이론을 공부하는 것에는 변함이 없습니다. 프로젝트에 필요한 지식과 기술을 공부하면서 그것을 코드에 녹여내야 하고, 코드 스멜이 느껴질 때면 가감 없이 코드 리뷰에서 멘토님께 철퇴를 맞으며 더 좋은 방향으로 코드를 수정해야 했습니다.  😢

 

아래는 Exception을 발생할 때, Exception 메시지를 자세하게 작성해야 한다는 멘토님의 코드 리뷰였습니다.

"예외는 내 메소드를 사용하는 다른 개발자와의 커뮤니케이션이다"라는 말이 개인적으로 기억에 남는 내용이라 사진으로 공유합니다 :)

 

Exception Message 관련 코드 리뷰

 

또한 이론을 공부하면서 배웠던 지식들을 코드 작성 환경에서 마주하면서, 객체지향이나 SOLID, 디자인 패턴 및 다양한 CS 지식과 같은 것들이 필요한 지 피부에 와닿게 느낄 수 있었습니다.

 

작은 라이브러리를 선택하는 순간에서도 그것과 비슷한 기능을 하는 다른 시스템은 어떤 것이 있는지, 왜 지금 꼭 이 기술을 프로젝트에 적용해야만 하는지 기술적인 근거로 설명할 수 없다면 도입할 수 없었습니다. 그래서 저는 버릇처럼, 기술을 선택할 때 가장 먼저 하는 일이 기술의 동작 원리를 파악하여 장단점과 trade-off를 분석하는 것이 되었고, 그것을 분석하는 과정에서 많은 공부가 되었습니다 :)

 

매주 스프린트를 반복하면서, 프로젝트의 크기를 키워 포트폴리오로 제작하고 거기에 담겨있는 기술적인 요소들도 상세하게 숙지할 수 있게 되어 취업에도 유리하게 작용할 수 있는 자료가 됩니다.

 

멘토링 종료 이후

각자 멘토링에 참여하는 상황에 따라 다르겠지만, 저는 6개월 멘토링을 신청했는데 이 시간이 기획했던 프로젝트의 비즈니스적인 요소를 모두 완성하기에는 짧은 시간이라는 생각이 들었습니다. 이론 공부를 약 3개월가량 하고, 나머지 3개월 정도를 프로젝트에 투자했는데 당시가 학기 중이기도 했고 멘토링 외에도 다른 일을 하고 있어서 시간이 부족하더라고요.

 

그래서 멘토링이 종료되는 시점에 멘토링을 연장하고 싶었지만, 신청이 너무 늦어버려서 멘토님과의 스케줄을 맞추지 못해 프로젝트의 중반부쯤 멘토링을 종료하게 되었습니다.

 

하지만, 멘토링을 받으면서 배운 것은 프로그래밍 지식 그 자체가 아니라 어떻게 지식에 접근하고, 그것을 고도화하여 내 것으로 만드는지에 대한 과정이었기 때문에 멘토링이 끝났어도 부족한 부분들을 스스로 채우며 프로젝트를 진행했고, 멘토링 종료 시점보다 더 확장된 애플리케이션을 제작할 수 있었습니다.

 

프로젝트 시스템 구성도

 

F-Lab 멘토링에서 느낀 점

멘토링에 참여하면서, 대표적으로 다음과 같은 부분들을 배우고 느꼈습니다.

 지루하더라도, 이론 공부는 꾸준히 해야 한다

 

이론 공부, 지루하고 힘든 과정이지만 백번 강조해도 지나치지 않을 정도로 중요합니다.

 

특히나 스프링처럼 규모가 큰 프레임워크를 사용하면서는, 그것을 지탱하는 많은 이론들이 기저에 있기 때문에 그것을 정확히 파악하지 않고서는 개발 중에 발생하는 문제를 이해조차 하기 어려웠어요. 처음에 스프링에서 Exception이 발생했을 때, 그 원인을 파악하기가 너무 막막했던 기억이 나네요 ㅎㅎ

 

스프링의 양이 워낙 방대해서 멘토링이 끝나고 다른 스프링 스터디에 한번 더 참여하였는데, 그때 스프링을 밑바닥부터 해체해보면서 더 깊이 공부했더니 스프링을 훨씬 정교하게 사용할 수 있게 되었고, 멘토님이 늘 이론의 중요성을 강조하신 이유를 체감할 수 있었습니다.

 

스프링뿐만 아니라, 프로그램을 구성하는데 필요한 많은 분야의 이론들을 깊이 공부하고 코드에 녹여내기 위해 노력할수록, 퍼포먼스 / 가독성 / 유지보수성 등이 엄청나게 달라지는 것을 체감할 수 있었습니다. 제 코드가 바뀌는 게 보이니까 개발이 더 재밌어지고, 더 노력하고 싶은 기분도 든답니다. 😊

 

기술을 깊이 파악하고, 다른 기술과 비교하여 더 나은 선택할 수 있어야 한다.

 

이론 공부가 프로그램을 작성하기 위한 준비 단계라면, 기술을 선택하는 것은 실전 단계라고 생각합니다.

좋은 프로그램을 구성하기 위해서는, 필요한 기술을 적절히 선택하여 알맞은 곳에 배치할 수 있어야 합니다.

 

프로젝트를 진행하면서, 특정 부분의 문제를 해결할 수 있는 기술의 필요성을 느껴 탐색하고, 그들의 동작 원리를 파악하여 개발 중인 서비스에 최적화된 기술을 선택해야 하는 순간이 많았습니다.

 

또한 기술을 선택만 하고 끝내는 것이 아니라, 정말로 유의미한 선택을 한 것인지를 보여주는 지표를 수집하여, 눈으로 직접 확인하고 증명하면서 그렇게까지 해야 했던 이유를 논리적으로 이해할 수 있었습니다.

 

멘토링에 참여하면서, 개발자는 이러한 부분을 깊은 곳까지 고려할 수 있어야 하고, 수많은 고민으로 하여금 프로그램을 최적화 할 수 있어야 한다는 부분을 크게 느꼈고, 기술자로서 기술을 바라보는 시야를 많이 넓힐 수 있었습니다.

 

NHN에 재직하면서

나름 짧은 취준 기간(3개월)을 거쳐, 2022년 1월부터 NHN에 재직하고 있습니다. 이렇게 짧은 시간에 취업할 수 있었던 이유는 앞서 말씀드린 노력의 과정을 멘토링을 통해 미리 준비했기 때문이 아닐까 생각합니다.

 

아직 신입 교육을 받고 있어 부서 배치를 받기 전이라 이것저것 바쁘게 공부하는 나날을 보내고 있네요 ㅎㅎ

신입 개발자로서의 포부를 나름대로 정해보았습니다.

 

한 줄 한 줄 살아있는 코드를 작성하는 개발자가 될 것

 

 

요즈음 개발을 할 때, 그간 공부한 것들을 최대한 코드에 녹여내기 위해 노력하고 있습니다.

그렇게 하기 위해서는, 코드 한 줄 한 줄을 작성하면서 아주 많은 생각과 고민을 해야 하는 경우가 많더라고요.

 

그렇게 많은 노력이 담긴 코드는, 이전에 많은 고민 없이 작성한 코드와는 확실히 결이 다르다는 것을 느낍니다.

작성한 코드를 읽다 보면, 조금 과장해서 코드가 살아 숨쉬는 느낌을 받는 것 같아요 ㅎㅎ

 

 

그래서, 저는 개발자로 살아가면서 아무 생각없이, 아무런 고민 없이 죽어있는 코드를 만들지 않고 매번 치열하게 고민하면서 살아있는 코드를 작성하는 것이 개발자로서의 포부가 되었습니다 :)

 

꾸준히 노력하는 개발자가 되고 싶다는 마음을 담아 닉네임도 Steady로 정했답니다 ㅎㅎ

 

Steady!

 

마치며

여기까지, 짧은 F-lab 멘토링 후기였습니다.

 

개발자로서 성장하기 위해 노력했던 스스로에게,

 

또 좋은 방향성을 지속적으로 제시해준 F-lab에

 

감사의 말씀을 전합니다 :)


F-lab 소개 페이지를 하단에 첨부합니다.

https://intro.f-lab.kr/?utm_source=graduate&utm_medium=blog&utm_campaign=event&utm_content=10 

 

F-Lab - 상위 1% 개발자들의 멘토링

아마존, 구글, 페이스북, MS, 네카라쿠배 등 상위 1% IT 기업 출신 개발자들이 멘티의 성장을 도와주는 멘토링 서비스

intro.f-lab.kr

 


댓글에 질문이 달리는 경우가 있어, 공유 가능해보이는 내용은 여기에 공유합니다.

 

Q. 회사를 다니는 상태에서 지원하셨나요?
A. 저는 회사를 다니는 상태는 아니었고, 취준생인 상태에서 지원하였습니다. 반면 회사를 다니시면서 참여하신 분들도 계셨던 것으로 아는데, 당시에 새벽까지 공부하시면서 참여하신 것으로 기억합니다. 쉬운 과정은 아니기에, 참여하신다면 충분한 각오로 참여하셔서 많은 성과 얻으시기 바랍니다.


Q. 멘토링 2시간 만으로 일주일간 공부한 분량을 전부 커버할 수 있나요?
A. 멘토링 시간은 일주일 1시간으로 진행됩니다. 공부한 내용들을 기준으로 기술 면접 형태로 진행하기 때문에 '전부'라는 개념은 없습니다. 질문은 끝없이 나올 수 있을테니까요. 다만, 면접이 끝날 때 내가 면접을 잘 봤는가?가 판단 가능한 것처럼, 멘토링 시간이 끝나고 나면 일주일동안 잘 공부했는지 판단이 됩니다.

반응형
Comments