개발자는 기록이 답이다

F-Lab 1주차 멘토링 회고 본문

F-Lab

F-Lab 1주차 멘토링 회고

slow-walker 2024. 1. 18. 20:22

노션으로 멘토링 후기랑 TIL을 적고 있는데, 멘토링 후기는 블로그에 남겨도 좋을 것 같아서 1주차꺼부터 남겨보려고 한다.


1. F-Lab 멘토링을 시작 전 고민

 

2023년 퇴사 후 알고리즘 스터디도 4개월 정도 진행했었고, 자바를 어느정도 쓸 줄 안다고 생각했었다.

하지만 정말 내가 자바의 기초를 100%  이해하는가 고민을 해봤을때, 전혀 아니었다.

 

면접 전에 그동안 모아두었던 내용을 달달 외우면서 뻔한 대답을 하는 내 모습을 보면서 아쉬움을 느꼈었다.

 

한샘 2차면접에서도 CTO님께서 자바의 기초적인 부분을 다시 공부해야 한다고 말씀해주셨다.

알고 있다고 생각했던 내용도 정말 Deep하게 다시 파봐야 하고, 다른 언어말고 Java만 일단 다시 공부하라고 해주셨다.

HTTP통신도 간단하게만 알고 있으면 안되고 깊게 다시 파보라고 말씀해주셨다.

(한샘 CTO님이 배달의 민족 기술이사셨던 분이시라서 이런 말씀을 해주신다는것 자체가 너무 감사했다)

 

그래서 Java를 어떻게 공부해야할까 고민하다가 F-Lab이 떠올랐다.

사실 개발을 처음 배우기 시작한 22년도에도 지인을 통해 F-Lab을 추천받았었는데, 금액적인 부분에서 부담이 컸다.

 

자바? 그냥 자바의 신이랑 유튜브에 있는 자바의 정석 보면 되는거 아니야..? 라고 생각했는데,

그냥 내가 개발자로서 마지막으로 시도해볼 수 있는 '부트캠프'다 라고 생각하고 질러버렸다.

(개발에 돈을 너무 많이 썻다. 제로베이스, 항해플러스, 인프런, 유데미, 패스트캠퍼스 등 모두 합치면 700만원 정도 될거고, F-Lab까지 하면 거의 1000만원이 훌쩍 넘는 돈인데.. 특히 제로베이스 같은 경우에는 신청해놓고 회사를 들어가게되서 거의 참여를 못한 상태로 돈만 지불했다.이정도면 방통대가 더 나은 선택이 아니었을까 싶지만..)

 

F-Lab을 선택했던 가장 큰 이유는, 내가 제대로 된 방향성을 갖고 공부를 하고 있는가 의문이 들었다.

이렇게 돈을 많이 쓰고, 계속 공부를 하고 있는데, 왜 자꾸 원하는 회사는 떨어지는거야? 스스로 의문이 많이 들었기 때문이다.

 

게다가 멘토링 과정 자체가 6개월에서 4개월로 기간이 줄어들어서 금액도 절반이 줄었고,

1:1로 진행한다고 해서 나한테 꼭 필요한 것이라고 판단했다.

 

 

 

2. F-Lab 멘토링 첫 번째 시간

책에 나오는게 정답이 아니다.

 

 

그렇게 시작한 1주차에는 자바의 신 1권의 1장부터 10장까지에 나오는 내용들 관련해서 면접처럼 질문이 이뤄졌다.

멘토님이 질문하시는 내용은 '자바의 신'이라는 책 한권을 읽고 대답할 수 있는 내용은 아니었다.

 

예를 들어, 원래의 나는 "int는 32비트이고, long은 64비트이다" 이런 활자가 있다고 가정했을때, 그냥 넘어갔을 것이다.

비트가 중요한가? 싶었다. 그냥 정수형 계산할때 뒤에서 9자리 정도 넘으면 long타입으로 받으면 되는거 아니야..? 

21억 어쩌고저쩌고.. 이런걸 다 어떻게 기억해. 그냥 이정도로만 생각했었다.

 

수포자 입장으로 아래 페이지를 봤을때 머리가 아파지는 내용이었기 때문이다. 지수.. 꼭 알아야해?

이 상태에서 멘토링을 들어갔을때 어떤 상황이 벌어졌을까?

자바의 신 4장 기본 자료형 설명

 

  • 멘토님 질문 : long타입의 변수를 int타입의 변수로 타입 캐스팅을 했을때 어떤 이슈가 발생할까요?
  • 내 답변 : 너무 큰 범위의 값을 작은 범위로 집어넣으면 원하지 않는 값이 나올 수 있습니다.
  • 멘토님 질문 : 원하지 않는 값이라는건 어떤 의미인가요?
  • 내 답변 : ....?
  • 멘토님 : 이럴때는 각 기본 타입의 최솟값과 최대값, 오버플로우 언더플로우라는 개념이 나와야 해요.

 

엥? 자바의 신에는 오버플로우라는 키워드가 안적혀있는데요..? 

122페이지 보면 그냥 "여러분들이 생각지도 못한 값이 나올 수 있다"라고만 나온다구요..

 

너무 당황스러웠다.

왜냐하면 나는 자바의 신 책을 그냥 훑어보는게 아니라, 모든 활자랑 예시코드를 적으면서 1주차 멘토링을 준비했기 때문이다.

 

 

부끄러운 얘기지만, 솔직히 말하면 나는 오버플로우와 오버헤드의 개념도 계속 헷갈려하고 있었다.

어디서 주워들은 키워드는 많은데, 연결고리가 없으니까 계속 기억에서 잊혀지는 것이다.

 

그게 바로 자바의 기초가 부족하다는 얘기다.

 

게다가 한 번 더 혼란스러운 상황이 나온다. 예를 들어 자바의 신 211페이지를 보면 아래처럼 나온다.

 

참조자료형은 Pass by Reference라고?

그런데 내가 면접 준비하려고 찾아봤을때 자바는 모두 Pass by Value라고 했는데...뭐지? 누가 정답인거지?

 

  • 멘토님 질문 :  Pass by Value와 Pass by Reference에 대해서 설명해주세요.
  • 내 답변 : blah~ blah~~ 그래서. 책에서 참조자료형은 Pass by Reference라고 나오지만, 제가 알아본 봐로는 자바는 모두 Pass by Value입니다. 참조자료형을 매개변수로 넘겼을때 주소값이 복사가 되기 때문에..
  • 멘토님 : 자바에는 주소값이라는게 없고 참조값만 있습니다.
  • 내 답변 : ....주소값이 없다고요...? 책에서 주소값이라는게 계속 나오는데요...참조값이 주소값아닌가요..?

 

그래서 책에 나와있는 내용을 그대로 받아들이면 안되고 더 깊고, 넓고 확실한 이론적인 개념을 갖고 접근해야 했다.

 

책은 오래전에 출판된 내용이기도 하고, 자바 버전이 업그레이드 되면서 메소드가 추가되거나 아키텍처가 변경되거나 할 수 있기 때문에 계속 찾아봐야 한다고 하셨다.

 

와우, 개발자는 진짜 뇌에 도파민 터지는 삶이로구나...★

 

3. 멘토링 후 느낀점

 

“책에 나오는 것 말고 본인 생각을 많이 말할 수 있어야 한다”

 

 

책에서 본 거 그대로 적용하고 있으면 앞으로 멘토님이 잡아주실거고, 직접 개발 철학을 세우는게 중요하다고 해주셨다.

책에서 이렇게 나오지만, 난 저렇게 생각한다. 라고 했을때 오히려 그게 정답인 경우가 많다고 한다.

 

그럴려면 많은 배경 지식을 알아야겠다고 생각했고, 앞으로 배울 게 어마무시하다는 생각에 조금 두렵기는 하다.

 

 

이처럼 개발적인 철학이 부족하다는 것을 느꼈던 적이 대표적으로 2가지가 있다.

 

  1. 한샘 2차 면접에서 “책이나 강의에서 배운 내용말고, 본인의 생각을 말해보세요” 라고 질문을 받았다.
     
    • 평소에 나만의 철학이 없었기 때문에, 이 질문에 대한 답변도 “사실 아직 배우고 있는 단계라 강의에서 나오는 내용이 제가 아는 전부이기 때문에 따로 생각해본적이 없다”고 대답했다.
    • 그럼에도 불구하고 스프링을 사용하면 Java개발을 할때 편리한 이유에 대해 책에서 나오는 내용이 아닌 걸 직접 생각해보라고 하셨는데, 결국 AOP로 인한 코드 중복 제거와 가독성 효과를 얘기했다.
  2. 이전 회사에서 근무할때, 익셉션 처리 시 상태코드에 대한 결정이었다.

    • 계속 400코드만 사용하고 있었는데, A개발자분께서 누가 이렇게 하냐, 요청값이 잘 못 들어왔을때는 400, DB에서 못 찾는 경우에는 404를 써야 한다 라고 하셔서 기존 코드를 전부 수정했었다.
    • 이후로 B개발자 선임께서 404는 URI리소스를 제대로 안 적었을때만 사용하는거라고 전부 다 수정하라고 하셨다.
    • 이때 당시에 PR과 코드리뷰가 없이 엉망인 코드로 계속 프로젝트를 만들고 있었어서 처음부터 정해진 거 없이 코드를 계속 수정해야 한다는게 힘들었다.
    • 누구 말을 들어야 할지 답답하기도 했고, 뭔가 맨날 특정 누군가의 말에 의해서 계속 전부 다 수정하고 있는 내 모습이 한심했었는데, 이게 바로 개발 철학이 없어서 그런 것 같다.

앞으로는 자바 기초 개념, 스프링 기초 개념을 쌓고 나만의 철학을 쌓는 과정을 찾을 수 있을 것 같은 느낌이 든다.

그리고 인텔리제이 들어가서 모든 클래스를 다 내부적으로 뜯어봐야 하는 습관을 들이는 것도 중요한 것 같다.

 

문서도 영어라고 도망만 쳤는데, 이렇게 한글로 번역해주는 플러그인을 깔았으니 앞으로 자바 문서 뜯어보기 습관화해보자.

 

 

 

※ 추가적으로 구매할 서적 : 자바 객체 지향의 원리와 이해, 자바 성능 튜닝 이야기

※ 2주차 멘토링까지 자바의 신 11장 ~ 25장 읽어오기

 

 


 

추가적으로 멘토링때 피드백받은 내용을 더 공부하고 슬랙으로 물어보면 이렇게 답변을 받을 수 있어서 너무 좋아요..♥

 

'F-Lab' 카테고리의 다른 글

F-Lab 4주차 멘토링 회고 - Java backend 1개월 후기  (1) 2024.02.19
F-Lab 3주차 멘토링 회고  (0) 2024.02.19
F-Lab 2주차 멘토링 회고  (0) 2024.01.18