새해가 되면서, 새로운 TF로 배치되었습니다. 새 TF에서는 Backend와 Frontend를 JavaScript로 가져가기로 협의하였습니다. 저의 꼬심에 다들 넘어온 셈이죠. 그런 팀원들과 같이 일하기 위해서라도, 팀의 bottom-line(최저치)를 맞출 필요가 있었습니다. 적어도, 이 정도의 이해를 바탕으로 개발에 임한다고 할까요? 그렇게 선정된 책이, 바로 닌자책입니다. jQuery를 만든 John Resig이 지은 JavaScript 명저에 속한다고 생각됩니다.

Secrets of the JavaScript Ninja 2nd.

선정의 변

TF에게 이 책을 소개한 가장 큰 이유는 다음과 같습니다.

  • 언어의 특수성을 알려줄 것 - 당연한 이야기입니다만, 개발자에게 가장 필수적인 능력은, 언어가 어떻게 동작할지에 대한 정확한 이해를 가지고 있어야 한다는 점입니다. 우리가 잘못된 가정을 하거나, 프로그램 자체를 이해하지 못하는 경우가 생기는 것은 특수성에 대한 무지로부터 시작됩니다.
  • 영어 책일 것 - 번역서가 나오는 시간에 세상은 저만치 흘러갑니다. 또한, 용어는 통일되어야 합니다. 번역된 용어는 저마다 다른 의미로 혼용되기 쉬우며 구글신도 찾아줄 수가 없습니다.

  • ES6를 바탕으로 할 것 - JavaScript는 오래된 언어입니다. 그 안에는 여러 버전도 존재하고, 많은 책들이 과거에 머물러 있기도 합니다. 언어의 최신 버전에 대한 이해는 같은 일도 훨씬 우아하게 처리하는 방안을 제시합니다.

위의 입장에서 고른 책이, Secrets of the JavaScript Ninja 2nd 였습니다. 2016년 8월에 나온 2판의 경우에는 ES6에 대한 부분도 다루고 있기에 최선의 선택이 되었습니다.

여럿이 같이

팀 내 스터디로 진행하였습니다. 원서를 완독하는 가장 좋은 방법이죠. 일 주일에 2~3번 정도 챕터 단위로 발제를 하여 진행하였습니다. 1월 하순에 시작해서, 3월 중순에 모두 읽었습니다. 거의 2달 정도 시간을 냈죠. 책에 대한 반응은 뜨거웠습니다. 한 동료는 JavaScript를 이전에도 사용했던 적이 많았음에도, 책에서 알려주는 내용은 제대로 이해하지 못하고 지금껏 사용했었다. 이렇게 말하기도 하고, 또 누군가는 매 챕터가 너무 새로워서, 어서 읽고 싶어요라는 말도 하였습니다.

책에 대한 평가

예전에 Eloquent JavaScript를 워낙 재밌게 보았기 때문에, 닌자책에 대한 기대는 크지 않았습니다. 그런 상태에서 읽은 책이라 그런지, John Resig의 접근이나 전달하는 방법은 너무나도 훌륭했습니다. 에제 코드 하나 사소하게 작성하지 않았으며, 그림 도안 또한 주제를 관통하도록 적절하게 그려내고 있었습니다. 책 자체는 JavaScript에 대한 경험이 전무하신 분에게 맞춰있다는 생각은 들지 않습니다. 데니스 리치의 C언어 책과 같이, 언어의 문법적 요소에 초점을 맞추고 있지는 않습니다. 그 보다는 그 안에서 생기는 애매하거나 혼동하기 쉬운 부분을 공략하고 있습니다. 설명, 코드, 그림 등으로 쉬운 접근 방법을 취하고는 있지만, 내용 자체는 가볍지 않기에 조금이라도 경력이 있는 분들이 보기에 좋을 것으로 여겨집니다. 정리하자면 다음과 같습니다.

Pros

  • 꼭 알아야 할 부분은 놓치지 않고 전달하고 있습니다.
  • 최대한 쉽게 전달하려고 하고 있으며, 도식 또한 훌륭합니다.
  • ES6 스펙을 반영하고 있습니다.
  • 모든 예제는 테스트 기반으로 작성되어 있으며, 이 또한 간결하고 쉽게 작성되었습니다.

Cons

  • 연습 문제가 다소 난이도가 있었다면, 더 재밌게 공부할 수 있었을 것 같습니다.
  • ES6가 일부 포함되어 있지만, ES6에 대한 책은 아니라고 볼 수 있습니다.
  • 범위가 넓은 주제에 대해서는 jQuery를 일구어 오면서, 부딪힌 문제로 귀결되는 경향이 있습니다.
  • 중간 중간에 프로젝트 적인 챕터를 통해, 총 복습하는 시간이 있었으면 더욱 좋은 구성이 아닐까 합니다.

PS) 예제는 훌륭하지만, 일본의 역사적 인물이나 닌자에 대한 언급은 다소 부자연스럽게 보였습니다.