한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.
개인 실습
예제 코드를 살펴보는데 좀 오래된 느낌을 받았다. 그래서 최신 환경으로 마이그레이션하고 린트 경고를 해결해봤다. 처음에는 하나만 하려고 했는데, 이 하위 프로젝트들은 서로 연결성이 있어서 어쩌다보니 다 하게 됐다. 좀 더 Best Practice에 가까웠으면 하는 마음에 익숙하지 않은 configTree, Docker secret 등의 기능을 사용하다보니 컨테이너화에서 잠깐 헤맸지만 모두 무사히 완료했다. 현재는 최소한의 수정만 진행했는데, Spring 7.0 환경에서 달라지는 부분들을 참고하여 추가 리팩토링을 진행할 예정이다.
https://github.com/ooMia/spring-template
1️⃣ 환경 설정
새로운 언어를 접했을 때의 기억들을 떠올려보면 프로그래밍보다 그걸 준비하는 과정에서 겪는 어려움이 더 컸다. 자주 접할 기회가 없어 익숙하지 않은 것도 있지만, 가령 시스템 경로와 관련되어 문제가 발생한다고 하면, 개인의 설정이란 결국 정답이 없는 영역이니까. 이런 건 검색해서 누군가의 설정을 똑같이 따라한다고 문제가 해결되리라는 보장도 없다. 그래서 이 책은 개발 환경을 구축하는 방법을 설명하는 것에서 시작한다. 가장 보급률이 높은 OS인 Windows 환경에서, 가장 개발 친화적인 Linux 환경에서 작업하기 위해 WSL2를 활용한다. Docker와 IntelliJ, SDKMAN을 포함하여 최대한 실무에 가까운 환경을 구축한다.
2️⃣ 단계적인 확장과 코드 재사용
일반적으로 배움은 아는 것과 모르는 것을 구분하는 것에서부터 시작한다. 그리고 어떤 언어나 라이브러리, 프레임워크를 처음 사용하면 보통 아는 것보다 모르는 게 더 많다. 그래서 처음부터 너무 복잡한 프로젝트를 진행하면, 문제가 발생했을 때 원인을 식별하는 작업에 어려움을 느끼게 된다. 그래서 이전의 코드 베이스를 그대로 가져와, 내가 아는 것에서 모르는 것을 추가해나가는 구성은 초보자 친화적이다.
단계적으로 확장해나가는 방식은 실제 개발 플로우와도 연관성이 있다. 빠르게 핵심 기능을 완성하고 별도의 계층을 추가하거나 통신 방식을 변경하는 등 요구사항이 변화함에 따라 어떻게 대처해야 하는지에 대한 모습을 확인할 수 있다. 또한 목표로 하는 기능을 추가하면서 필연적으로 기존 코드의 수정/삭제가 이루어진다. 이러한 변화에 직접적인 수정이 필요한 경우 사진처럼 강조 표시를 해두었고, 단순 수정 외에도 API versioning과 deprecated 표시 등 타인과의 협업까지 고려한 것을 보며 실무를 반영하기 위해 노력했다는 인상을 받았다.
3️⃣ 친절한 설명
사용하는 기술의 원리를 알아도, 어떻게 프로그래밍을 해야하는지 모르거나 프레임워크 내에서 어떻게 지원하는지 모르면 헤맬 수 밖에 없다. 이러한 관점에서 이 책은 다양한 관점과 방식으로 설명을 제공한다. 고민 상담소 섹션을 통해 향후의 고도화를 위한 실무적인 조언을 얻을 수 있고, 도식을 통해 프로젝트의 구조와 동작 순서에 대한 정보를 얻을 수 있다. 또한 예제 코드를 통해 모든 단계를 직접 수행하지 않더라도 빠르게 시작할 수 있다. 설명 주석 또한 풍성하게 제공되며, 최초에 저자가 밝힌 집필 의도처럼, 이를 통해 업무에 빠르게 적응할 수 있다.
https://github.com/sean-lab/eog-springboot3-public
이 책의 특징
?♂️ 구현에 집중
Why는 짧고 How가 길다. 빠르게 적용하고 적응하기 위한 성격의 책이다. 기능을 구현하는 방법은 다양하지만, 일단 그 중 하나를 선택해서 그 원리와 어떻게 구현하는지 설명하는 것에 집중한다. 처음 시작하는 이들에게는 고민 없이 따라할 수 있는 시작점이지만, '그래서 내 프로젝트에 맞는 방식이 무엇인지' 고민하는 이들에게는 충분한 인사이트를 제공하지 않는다.
⚠️ 예제는 예제일 뿐이다
예제라고 실무 환경을 그대로 다 가져오면 어렵고 복잡해질 수 밖에 없다. 제공된 코드는 실무적인 느낌을 참고하는 용도로만 사용하고, 온보딩 이후에는 공식 문서 등을 살펴보며 스스로 고도화하는 능력을 갖추어야 한다.



