개발자는 기록이 답이다

F-Lab 4주차 멘토링 회고 - Java backend 1개월 후기 본문

F-Lab

F-Lab 4주차 멘토링 회고 - Java backend 1개월 후기

slow-walker 2024. 2. 19. 16:07

1. F-Lab 4주차 멘토링 시작 전

 

벌써 멘토링을 시작한지 1개월이 되었습니다! 멘토링 내용에 대해 적기 전에 간단하게 한달동안의 회고를 작성해보려고 합니다.

 

F-Lab을 신청한 이유는 내가 제대로 공부하고 있는게 맞는지? 아니라면 이렇게 배울게 많은 개발 세상에서  어떤 걸 공부해야하는지 방향을 알려주면 좋겠다고 생각했기 때문이에요. 1주차때 더 자세한 상황을 적어놨습니다.

 

2024.01.18 - [F-Lab] - F-Lab 1주차 멘토링 회고

 

F-Lab 1주차 멘토링 회고

노션으로 멘토링 후기랑 TIL을 적고 있는데, 멘토링 후기는 블로그에 남겨도 좋을 것 같아서 1주차꺼부터 남겨보려고 한다. 1. F-Lab 멘토링을 시작 전 고민 2023년 퇴사 후 알고리즘 스터디도 4개월

strong-park.tistory.com

 

한달동안 저는 Java에 대해서 배웠습니다. 그것도 아주 자.세.하.게.

 

단순히 입문자들에게 for문 어떻게 사용하는지 알려주는 게 아니라, 정말 Deep 하게 배웠습니다.

 

(누군가에게는 당연히 알아야 하는거 아니야? 라고 생각하겠지만 저는 정말 많이 배웠다고 생각합니다..)

 

  • 자바 직렬화를 왜 하는지? 하는게 좋은지?
  • synchronized의 정확한 의미가 무엇인지?
  • 메모리보다 큰 파일을 읽을 수 있는 방법이 무엇일지?

2024.01.30 - [언어/Java] - 왜 자바 직렬화는 Serializable 인터페이스가 있어야할까?

 

왜 자바 직렬화는 Serializable 인터페이스가 있어야할까?

자바의 신 책에는 DTO에 Serializable를 꼭 구현해야 된다고 되어 있다. 하지만 나는 Spring boot 프로젝트를 했을때 한번도 구현하지 않았는데도, 문제가 없었던것 같다. 어떤 관련이 있는지 "직렬화"라

strong-park.tistory.com

 

이번 기회로 어디서 들은 키워드로 그냥 뇌피셜을 말하는게 아니라, 나름대로의 근거를 가지고 의견을 말할 수 있게 되었어요. 예를 들어, 객체지향 관련해서 스터디 도중, 상속 파트부분에서 Stack대신 ArrayDeque를 써야 하는 이유에 대한 얘기가 나왔어요. 그때 당당히 Vector를 상속받은 Stack이 synchronized를 사용하기 때문이며, 그게 왜 성능이 안좋다는 건지 함께 얘기할 수 있었습니다.

 

모든 코드에는 다 근거가 있고 그 근거를 위해 연결고리를 찾아야 합니다. 이런 연결고리를 찾는 것을 F-Lab 멘토링에서 배우게 되었어요.

 

현재 저는 한달동안 카카오 출신이신 Maverick 멘토님한테서 1:1 멘토링을 받고 있는 중입니다.

사실 멘토님이 해주시는 질문 수준이 너무 높아서 바로 다 이해하진 못합니다..

 

하지만 이럴때 아니면 언제 이런 키워드와 내용들에 대해 내가 알 수 있겠어? 싶어서 오히려 저는 그냥 어려운 질문 해달라고 합니다.

차라리 미리 어렵게 느껴지는 질문들 받아서 알아본 다음에 알맞은 방향으로 가고 있는지 확인 받는 편입니다.

(사실 여태까지 못 알아본것도 많아요... System.gc를 왜 사용하면 안되는지에 대한 근거라던가...)

 

한편으로는 제 스스로 질문이 많은 편이라고 생각이 들어서 아주 작은 사소한 것 까지 질문해도 되나 조심스러워지긴 하지만..

멘토님의 한마디가 다시 저를 질문 폭격기로 만들 수 있게 해줍니다.

 

(심지어 저는 자바 내부 API 디버깅하는 방법을 몰라서 물어보기도 했어요. e.g. step over누르는데 왜 계속 이상한 클래스로 갈까요?😂)

 

자바 nio관련 패키지들도 멘토링 끝나기 전까지 전부 다 파헤쳐보기로 했는데, 앞으로 조금씩 실천해봐야겠습니다!

 

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

 

이번 주차는 자바의 신 마무리 하면서 다음 책으로 볼 책을 선정하고, 프로젝트 주제를 선정해야 했습니다.

 

 

자바의 신 끝난 이후 아래 2개의 책을 읽기 로 했습니다.

  • 자바 성능 튜닝 이야기
  • 스프링 입문을 위한 자바 객체지향의 원리와 이해

프로젝트를 뭘로 정할지가 관건이더라구요. 제가 해보지 못했던 기술스택이나 요즘 트렌드에 맞는 기술 스택을 적용한 프로젝트를 하고 싶었는데, 멘토님이 그런건 경력이 부족한 신입한테는 별로 의미가 없다고 하셨기 때문입니다.

 

오히려 자바 소켓 프로그래밍이나 자바 관점에서의 동시성 이슈(머신간 동시성 이슈가 아닌) 를 해결하는게 더 신입 개발자로서 매력적일 수 있다고 해주셨어요.

 

하지만 저는 websocket stomp만 써봤고, 자바에서의 Socket 프로그래밍은 자바의 신 예제만 따라해봤기 때문에 자신이 없었습니다. 그래서 멘토님이랑 프로젝트 선정할때도 되게 여러번 번복했고, 결국 대용량 트래픽과 동시성 이슈를 해결할 수 있는 프로젝트로 선정했습니다!

 

3. 멘토링 후 느낀점

 

앞으로 프로젝트 시작인데, 과연 제가 생각했던 것 만큼 잘 할 수 있을지 걱정이 됩니다.

그동안 코더로서 복붙을 많이 했었는데, 코더가 아닌 개발자로서 처음부터 다시 배운다는 입장으로 스프링 프로젝트를 만들려고 해요.

특히 왜? 에 집중하면서 프로젝트를 만들고자 하는데, 간단한 프로젝트도 오래 걸릴 것 같아요.

 

그래도 지치지 않고 이번 한달동안 했던 것처럼 새로운거 많이 배울 수 있으면 좋겠습니다.

 

 

 

 

 

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

F-Lab 3주차 멘토링 회고  (0) 2024.02.19
F-Lab 2주차 멘토링 회고  (0) 2024.01.18
F-Lab 1주차 멘토링 회고  (0) 2024.01.18