책 리뷰: <자바 개발자를 위한 97가지 제안>

김동균·2022년 11월 13일
0

책 리뷰

목록 보기
1/5

이 책은 73인의 소프트웨어 엔지니어가 집필에 참여했는데, 각자 하고 싶은 이야기를 짧은 글로써 소개한다.
저자마다의 이야기는 각자의 독창성이 있고, 서로의 의견을 보완하거나 반박하는 경우도 있다.
그렇기에 책에서 말하듯이 읽어본 내용에 반응하고, 이를 반영하며 서로 연관 짓고, 자기 생각과 지식, 경험에 기반해 어느 것에 더 무게를 둘 것인지를 생각해보며 읽어 보았다.

책의 이름은 '자바 개발자를 위한 97가지 제안이지만, 내용의 반 이상은 Java에 한정되지 않은 소프트웨어 엔지니어링에 대한 전반적인 내용을 담고 있기에, Java를 깊이 있게 다루는 책을 기대한다면 Effective Java를 읽는 것을 추천한다.

기술적인 내용보다는 개발 문화, 제품이 탄생하는 과정, 개발자로서 성장하는 방식에 대한 내용이 특히 좋았는데, 그 내용들은 다음과 같다.

1. 문제와 업무를 더 작은 단위로 나누기

대개 직장에서의 업무와 시스템은 크기 때문에 문제를 해결하는 데 오래 걸리는데, 이런 문제를 해결하는 가장 좋은 방법은 문제를 더 작은 단위로 나누는 것이다.
문제를 작게 나누고 하나를 해결한 뒤, 그 문제를 확인할 자동화된 테스트를 작성한다.
이런 방식으로 업무를 진행하게 되면 자연스럽게 커밋을 자주 하게 되는데, 그로 인한 장점들은 아래와 같다.

  • 문제가 생기는 경우 롤백할 수 있는 지점이 많아진다.
  • 코드 리뷰를 진행할 때 리뷰어들이 어떤 것을 집중해서 리뷰할지 명확해진다.
  • 문제를 작게 나누면서 Task별 due date을 예측할 수 있다.

회사에서도 업무를 진행하기 전에 문제를 분석하여 Task를 작게 나누고 순차적인 문제 해결 과정을 거치는데, 해당 과정에서 생각해보지 못한 문제를 찾거나 문제를 더 쉽게 해결할 좋은 아이디어가 떠오르기도 한다.

2. 코드 복원 전문가

책의 내용 중 '우리가 100년 전에 만들어진 물건을 복원하는 사람을 위해 일하고 있다는 점을 명심해. 이 사람이야말로 우리가 닮고 싶은 사람이야' 라는 말이 있다.
알려진 최신 기법들을 활용하여 코드를 작성해도 5년, 10년이 지나면 결국 그 코드는 '레거시'라는 이름을 갖게 될 것이다.
'레거시 코드'는 회사를 성장할 수 있게 해준 일등 공신이며, 필연적으로 시간이 지남에 따라 발생하게 된다.
이때 중요한 것은, '같은 것을 더 나은 방법으로 다시 만드는 일'이 아니라 '기존 코드를 다듬어 다시 관리할 수 있는 상태로 재창조'하는 일일 것이다.

3. 퍼즐에서 제품까지

개발자로서 성장함에 따라 어떤 역량을 가지고 어떠한 업무를 수행해야 하는지에 대한 글이다.
훌륭한 시니어 소프트웨어 엔지니어로 성장하기 위해, 어떤 역량을 목표로 할지 방향성을 잡아주는 좋은 글이었다.

개발자 경력 초기에는 그저 시스템의 한 부분만을 담당했다. 사용 가능한 수단도 제한적이었다.
몇 년이 지나가 나의 시야가 넓어졌다. 이제 문제 해결은 내 업무의 본질이 아니라 전제조건이 되었다.
내 업무의 본질은 타인에게 유용한 제품을 관리하면서 내가 속한 조직에 새로운 역량을 제공하는 것이었다.
문제에는 해결이라는 상태가 정해져 있다. 경력이 더 쌓이자 나의 시야는 더 넓어졌다.
요구사항을 만족하는 코드를 푸시하는 일은 그저 내 업무의 시작일 뿐이다.
나는 그저 코드를 바꾸는 것 이상을 원한다. 나는 시스템의 변화를 목표한다.
내 앱의 새로운 기능은 내가 담당하는 시스템에 의존하는 현재 시스템에서 동작해야 한다.
'올바른' 제품은 한 가지로 정의할 수 없다. 분명 많은 것이 올바르지 않기에 '오동작'하지 않도록 주의해야 한다. 그 외에는 '더 나은 것'에 초점을 맞춘다.

이외에도 책에서는 클린 코드, 테스트, 지속적인 빌드와 배포에 대해 강조한다.
각 분야에 대해 깊게 다루지는 않지만, 소프트웨어 엔지니어링 분야의 식견을 넓혀주고 앞으로 어떤 마음가짐과 목표를 가지고 개발자로서 성장해 나갈지에 대해 갈피를 잡아준 훌륭한 책이었다.
자바 개발자라면 가벼운 마음으로 읽어보기를 추천한다.

profile
백엔드 개발자

0개의 댓글