이 게시글에서는 "자바 객체지향의 원리와 이해"를 읽으면서 얻은 생각들을 기록하려고 한다. 나중에 성장한 후에 현재의 나를 되돌아볼 수 있도록, 두서없이 지금의 생각을 그대로 담아 작성할 예정이다.
최근 내가 작성한 게시글들을 보면, 다양한 기술에 대한 내용을 다루기보다는 기본기와 나의 생각을 정리한 글이 주를 이루고 있다는 것을 알 수 있다. 이렇게 바뀐 이유는 최근 내 사고방식이 달라졌기 때문이다.
개발자로서 더 멀리 나아가기 위해서는 "기본기를 더 쌓아야 한다"는 필요성을 느꼈다. 물론 기술에 대한 공부가 나쁘다는 뜻은 아니다. 하지만 지금 나에게 중요한 것은 기술이 아니라 기본기다. 이 생각을 더 확고히 하게 된 계기는 네이버 웹툰 "오늘만 사는 기사"의 한 장면이었다.
웹툰에서 실력이 좋은 분대원이 수련 중인 분대장을 보며 "처음부터 기본기를 익혔어야 했다"고 말하는 장면이 있었다. 이 장면을 보며, 지금 당장은 다양한 기술을 배워서 "뛰어나 보일 수 있겠지만", 결국 "기본기가 부족하면" 아무리 노력해도 성장에 한계가 올 것이라는 확신을 가졌다.
또한, 개발자는 검사가 당장 전쟁에서 살아남기 위해 기교를 배우는 것과 다르게 "기교를 배우는 것"이 강제성을 가지진 않는다. 진정으로 뛰어난 개발자가 되기 위해서는 지금 시점에서 기본기에 집중할 필요가 있다라고 생각하였고 나는 그 선택을 한 것 뿐이다. 기본기가 튼튼해야 나중에 더 큰 성장을 이룰 수 있다고 생각하기 때문이다.
이러한 생각에 따라 잃어버린 기본기를 보충하기 위해 "자바 객체지향의 원리와 이해"를 읽기로 했다. 기본기를 다루는 여러 책 중에서 이 책을 선택한 이유는 최근 "JPA의 N+1 쿼리 감지 라이브러리"를 제작하면서 객체 지향적인 지식의 부족을 느꼈기 때문이다.
"자바 객체지향의 원리와 이해"는 스프링 입문을 위한 기초를 다지기에 좋은 책이다. 저자도 이 책을 "당신의 두 번째 자바 책", "당신의 첫 번째 스프링 책"으로 소개하고 있다.
이 책은 자바의 탄생 배경과 객체 지향 개념, 자바의 실행 구조 같은 기초적인 내용에서 시작해, 객체지향 개념을 깊이 있게 설명한다. 이후에는 스프링에 적용된 디자인 패턴을 소개하며 스프링에 대한 관심을 유도하고, 마지막에는 스프링으로 프로젝트를 진행하는 과정을 다룬다.
나는 이미 스프링을 이용한 여러 프로젝트를 경험했기 때문에, 후반부보다는 초반부의 기본 개념에 더 흥미가 갔다. 알고 있던 내용이지만, 저자가 쉽고 재미있게 설명해주기 때문에 나의 지식을 점검하며 책을 무난하게 읽어 나갈 수 있었다.
특히 인상 깊었던 부분은, 객체지향의 4대 특성을 요리 도구에 비유하고, SOLID 5원칙을 그 도구를 사용하는 방법으로 설명한 점이다. 그리고 그 사용법을 바탕으로 디자인 패턴이라는 레시피를 이용해 요리를 하는 것이 바로 객체지향 프로그래밍이라는 비유가 참신하게 다가왔다.
"자바 객체지향의 원리와 이해"를 읽으며 기본기를 다지는 과정이 생각보다 즐겁다는 점을 새롭게 느꼈다. 앞으로도 더 나은 개발자가 되기 위해, 그리고 "소드마스터"가 될 가능성을 열기 위해 기본기 공부를 계속해 나갈 생각이다.