읽은 지는 시간이 꽤 지났으나, 미루어 두었던 책에 대한 생각을 이제야 씁니다.
편하게 작성하려고 하니, 읽으러 오신 분들께서는 어체에 대해서 너그럽게 봐주시길 미리 양해 부탁드립니다.
이 책의 제목에 떡하니 적혀 있는 단어, 실전.
Google에 뜻을 검색해보면 여러 가지가 나오지만, 여기서 말하고 있는 실전이란 아래의 것일 거다.
실전, 實戰
명사
실제의 싸움.
"∼ 경험"
실제로 하는 싸움 혹은 경험을 말하는데, 이 책을 통해서 실제의 싸움을 할 수 있는가? 라고 물으면 아니라고 하고 싶다.
그러나 실제의 싸움을 하기 위한 준비를 하게끔 도와준다. 어떻게? 아주 작고 작은 요구사항부터 시작해서, 그 크기를 점점 키워가면서.
그러니까, 이 책의 이름은 실전 자바 소프트웨어 개발
보다는 실전 준비, 자바 소프트웨어 키우기
정도가 적절한 것 같다는 게 내 생각이다.
물론 혹자는 이 의견에 대해 반박할 수도 있다. 단지 개인의 주장일 뿐이니 그냥 일개 의견 중 하나라고 봐주면 좋을 것 같다.
그렇다면 이 책은 어떤 가치가 있는가?
이 책에선 가상의 사업과 프로덕트가 하나 등장한다. 그리고 그 프로덕트는 그 어떤 저항도 받지 않고 성장만 한다.
다소 비현실적이긴 하나, 앞서 말한 제목처럼, 계속해서 소프트웨어를 키우는 방법을 보여주려면 이러한 설정은 필수적일지도 모르겠다. 대부분의 경우, 사업의 성장이 곧 소프트웨어의 성장 및 확장으로 이어지니까.
각설하고.
일단, 이 책에 기술된 내용은 쉽다.
밥 아저씨가 아니다.
개인적으로, 이 책의 서술 방식은 학창시절의 수학시간을 떠올리게 했다. 중학생때 배우던 어느 수학 공식을 원리부터 시작해서 그 결과까지 도출해내는 과정을 지켜보는 느낌이랄까.
결과는 프로덕트(혹은 기능의 완성)일 것이고, 원리는 그 과정에서 이루어지는 요구사항의 정리와 애플리케이션 코드의 구현이 되겠다.
그리고 그 속을 파고들면, 그들을 구성하는 또 다른 것들이 필연적으로 있기 마련이다(더 이상 쪼갤 수 없는 원자가 아닌 이상에야). 이 책은 이러한 부분들에 대해서도 '적당히' 서술하며 독자에게 알려준다.
언뜻 보면 가볍게 소개하는 느낌이 들기도 하는데, 그게 맞다. 마치 어떤 문제에 대해서, 이 문제는 이렇게 풀면 쉽다고 알려주는 선생님처럼. 물론 그게 편법이 아니란 건 우리 모두가 알고 있다. 그저, 다년간의 경험에서 우러나온 노하우를 알려주는 것이니까.
아무튼. 방대한 내용을 모두 설명하고 알려줄 수는 없으니, 간략하게 필요한 내용만 콕콕 찝어서 알려준다. 그런데 이게 또 나름대로 굉장히 효과적이라, 분량에 비해서는 내용이 알차다고 느껴졌다.
이 책은 중학교 선생님 정도의 느낌이다. 최대한 쉽게, 풀어서 설명해주는 것. 그리고 이러한 것들이 있다고 알려주는 것. 거기에 주안점을 두고 기본에 충실하려는 게 보였다.
다만, '분량에 비해서' 내용이 알차다는 것을 기억해야 한다.
예를 들자면, 테스트에 대한 언급이 있긴 하나 짤막하며 순식간에 지나간다. 이에 대해 좀 더 자세히 파고드는 것은 독자의 몫이다.
이렇게 짤막하게 다룰 거라면 그냥 부록으로 빼거나 아예 다른 챕터를 하나 두는 게 어땠을까, 하는 아쉬움이 조금 든다(물론, 테스트가 중요하지 않다는 것은 아니다. 개발을 진행하면서 테스트는 빠질 수 없는 필수불가결한 요소이다. 다만, 필자가 느낀 이 책의 주안점에 대해서 생각해봤을 때, 이 부분을 따로 챕터를 둬서 분리하면 어떨까? 하는 아쉬움이 들었다는 것이다).
이미 현업에 종사하고 있는, 프로덕트를 만드는 일에 익숙해지신 분들은 내용에 깊이가 부족하다고 느낄 것 같다. 따라서 그런 분들이라면 굳이 읽을 필요는 없을 것 같다.
이 책은 입문 ~ 주니어 개발자 1, 2년 차 정도까지가 적정선의 독자인 것 같다. 읽어보면 단지 자바라는 언어에 국한되는 것이 아닌, 소프트웨어 개발에 적용할 수 있는 범용적인 내용 또한 다루고 있으므로 앞서 말한 적정선의 독자에 해당하는 분이라면 이 책을 추천한다.
마지막으로, 인상 깊었던 구절 한 줄과 함께 마무리 하겠다.
소프트웨어에서 콘텍스트는 매우 중요하다. 같은 결정이라도 콘텍스트에 따라 좋은 결정이 되거나 좋지 않은 결정이 되기 때문이다.