"한빛미디어 서평단 <나는 리뷰어다> 활동을 위해 책을 협찬 받아 작성된 서평입니다."
한빛미디어의 서평단으로 두 번째 책을 받게 되었습니다. 개인적으로 자바 실무를 하며 코드 품질과 관련된 책을 늘 탐색해왔는데, 이번에 받은 책은 바로 『자바 개발자가 반드시 피해가야 할 100가지 실수』입니다. 두 권 중 랜덤으로 선정된다고 해서 긴장했지만, 기대했던 이 책이 당첨되어 정말 기뻤습니다!
이 책은 단순히 자바 문법을 설명하거나 기능을 나열하는 책이 아닙니다. 자바로 개발을 하다 보면, 분명히 컴파일도 잘 되고 테스트도 통과했는데, 시간이 지나면 이상한 버그가 터지는 경우가 많습니다. 동료가 짠 코드를 리뷰하다 보면 "어? 이거 왜 이렇게 짰지?" 싶은 코드가 나오기도 하고, 내 코드도 누군가에게 그런 반응을 불러일으킨 적이 있을지도 모릅니다.
자바는 강력한 언어이지만, 그만큼 방대한 API와 다양한 기능들 속에서 놓치기 쉬운 디테일이 숨어 있습니다. equals(), hashCode() 구현 실수, Stream API 체인 사용 시의 부수 효과, Optional 남용, 멀티스레드 환경에서의 동기화 누락 등은 모두 '지나고 나면 아차 싶은' 실수들입니다. 그리고 그 실수들은 단순한 실수로 끝나지 않고, 종종 심각한 퍼포먼스 저하나 협업의 문제로까지 번지게 됩니다.
이 책은 그런 실수를 ‘예방하는 법’뿐만 아니라, ‘실수를 통해 배우는 법’을 알려주는 실전형 책입니다. 단순히 하지 말라는 식이 아니라, 왜 그 실수가 생기는지, 어떤 상황에서 자주 나타나는지, 그리고 어떻게 고쳐야 하는지를 차근차근 설명해줍니다. 그래서 실무에서 ‘어제 나도 했던 실수’와 직결되기 때문에, 읽는 내내 공감하면서 정리해갈 수 있습니다.
이 책의 가장 큰 강점 중 하나는 100가지 실수를 주제별로 정리했다는 점입니다. 각 장은 실수를 카테고리별로 묶어 설명하는데, 예를 들어 ‘표현식’, ‘숫자’, ‘예외’, ‘문자열’, ‘컬렉션’, ‘객체 비교’, ‘유닛 테스트’ 등 우리가 실무에서 자주 다루는 주제들로 구성되어 있어요. 단순히 이론적인 설명만 나열하는 것이 아니라, 각 실수마다 코드 예제와 잘못된 예 vs 개선된 예를 비교해주기 때문에 훨씬 이해하기 쉽고 기억에도 잘 남습니다.

각 장에서 특히 인상 깊었던 부분을 몇 가지 소개하자면,
첫째, 코드를 읽는 사람을 배려한 설명 방식이 인상적이었습니다. "맞추어 코드를 수정하라"는 조언이나 "의미 있는 값은 두 번 계산하지 말고 변수로 빼라"는 팁은 단순한 코드 품질의 문제를 넘어, 함께 일하는 동료를 배려하는 마음가짐까지 담겨 있었습니다. 이 책은 '좋은 코드'란 단순히 동작하는 코드가 아니라, '다른 사람이 쉽게 읽고 이해할 수 있는 코드'라고 말합니다.

둘째, 테스트 커버리지, 정적 분석 도구 등 실무에서 꼭 필요한 툴을 함께 소개합니다. 단순히 "null 체크를 하세요" 같은 이야기에 그치지 않고, JaCoCo나 SpotBugs 같은 도구를 통해 어떻게 커버리지를 확인하고, 정적 분석을 통해 어떤 실수를 미리 잡아낼 수 있는지를 알려줍니다. 또한 이러한 도구들이 왜 100% 커버리지를 보장하지 못하는지도 현실적으로 설명해 주며, 도구에 대한 맹신보다 정확한 이해를 중요시합니다.

셋째, 실제 오픈소스에서 발생했던 버그 사례들을 활용해 설명하고 있다는 점도 매우 실용적이었습니다. Apache Avro에서 발생했던 해시 충돌 문제를 예시로 들어, 연산자 우선순위에 대한 오해가 얼마나 심각한 문제를 초래할 수 있는지를 보여줍니다. 컴파일러는 오류를 내지 않지만, 실행 결과는 의도한 바와 전혀 다르게 나올 수 있고, 이런 문제를 방치하면 성능 이슈로 이어질 수 있음을 경고합니다.
넷째, **디버깅 팁과 예외 처리, 유닛 테스트에서의 실수까지 꼼꼼하게 다룬다는 점**도 좋았습니다. assert 문이 갖는 부수 효과, 테스트 메서드가 중간에 조기 종료될 수 있는 구조, 예외 테스트에서 자주 발생하는 실수 등은 유닛 테스트 경험이 있는 사람이라면 누구나 고개를 끄덕일 수밖에 없는 내용이었습니다.
다섯째, 각 장마다 간단한 정리와 요약이 들어 있어 학습 흐름을 이어가기 좋습니다. 단번에 100가지 실수를 모두 기억하긴 어렵지만, 정리 파트를 통해 핵심 포인트만 체크하면 복습도 수월하고 실전에 바로 응용할 수 있겠다는 생각이 들었습니다.
책을 읽으며 느낀 점을 한 문장으로 요약하자면,
“이 책은 실수를 피하는 법을 넘어서, 좋은 코드란 무엇인지에 대한 기준을 심어주는 책이다.”
이 책은 특히 팀 프로젝트를 하거나 코드 리뷰를 주고받는 환경에 있는 개발자에게 매우 유익할 것입니다. 단순히 혼자 코드를 짤 때보다, 팀원과 함께 유지보수 가능한 코드를 만들어가는 상황에서 '좋은 코드'에 대한 합의는 굉장히 중요하니까요. 이 책은 그러한 기준점을 함께 세워주는 역할을 할 수 있습니다.
총평하자면, 『자바 개발자가 반드시 피해가야 할 100가지 실수』는 자바 개발자라면 꼭 한 번은 정독해봐야 할 필독서라고 생각합니다. 실무 감각을 키우고 싶은 주니어 개발자부터, 후배에게 실수를 줄여주고 싶은 리드 개발자까지 모두에게 도움이 될 책입니다.
처음부터 끝까지 깊은 공감과 배움을 주는 책이었고, 저도 앞으로 계속 책상에 꽂아두고 참고하게 될 것 같습니다.