작년에 백엔드 개발자로 취업하고 나서부터 주로 사용하는 언어인 Java에 대한 공부가 더 필요하다고 생각해서 가장 많이 알려진 서적 중 하나인 이펙티브 자바를 전자책으로 읽게 되었다.
이 책은 총 11개의 주제와 그 주제 내부의 다양한 아이템으로 구성되어 있으며, 아이템은 주제와 관련된 기능보다는 해당 주제와 관련되어 <~~하라, ~~하지 말라> 는 가이드를 예제 코드와 함께 설명하고 있다.
이 책을 읽기 전 많이 봤던 이야기 중 하나가 Java에 대한 심화 학습을 하려면 이 책을 꼭 읽고 가라는 것이었는데 그래서 그런지 책을 직접 보기 전까지는 이 책에 Java 기본 서적에서 다루지 않았던 API나 고급 문법이 담겨있는 것인가 하는, 즉 Java 언어 자체의 심화적인 기능을 위주로 다루는 책인가 하는 착각을 했었다.
하지만 실제로 보니 문법 자체보다는 각종 프레임워크 / 라이브러리, API 개발 및 실무에 있어서 해서는 안 될 행동이나 개선을 하는 방법이 많이 소개가 되어 있었다. (정말 '효과적인' 자바 사용법을 다루는 느낌)
개중에는 인터넷 강의를 보며 독학을 하고 사이드 프로젝트를 하면서 이유를 모른 채 알게 모르게 썼던 문법이나 설계, 또는 Spring Framework 내부 API에서 자주 보이던 것들이 많이 나왔었는데 보면서 흠칫 놀란 적이 많았다.
나는 그저 강의에서 시키는 대로, 또는 인터넷에서 보이는 대로 썼던 코드들을 내 나름대로 문법이나 흐름 정도만 이해하고 넘어갔었는데 그러한 많은 코드들이 이펙티브 자바에서 다루는 내용을 비롯해 선배 개발자들의 경험과 지혜에서 나왔다는 사실을 실감하고는 '어떻게 쓰느냐' 보다 '왜 쓰느냐'를 알아야 한다는 것을 많이 느끼게 되었다.
11장 동시성, 12장 직렬화의 경우 실무에서 아직 제대로 사용해본 적도, 공부해본 적이 없어서 크게 와닿지 않았었는데 이러한 내용 뿐만 아니라 프레임워크에서 기본적으로 제공했던 기능들이라 직접 구현해봤거나 다뤄본 적이 없었던 기능들이 있어서 빠르게 넘긴 부분도 없지 않다.
그러한 내용들을 비롯해 아이템마다 깊게 파고들만한 주제가 좀 더 있어서 추후 이러한 아이템들을 모아서 공식 문서와 각종 자료들을 통해 세부 학습을 해볼 생각이다.