최근 Vue.js를 사용하면서 Vue.js에서 권장하는 ES6를 강제로 도입하게 되었다. 뭔가 굉장히 편리한 문법들이 많이 추가된 모양인데 난 상황이 급한 관계로 Arrow Syntax와 let, const 변수만 학습하고 그 외에는 ES5와 별다를 바 없이 사용해왔다.
항상 헷갈리는 scope의 var 변수를 벗어나고 무수한 콜백들을 깔끔한 Arrow Function으로 표현할 수 있는 것 만으로도 충분히 만족했지만, 더욱 엄청난 것들이 숨겨져있을거란 생각에 ES6를 좀 더 알아보고 싶어졌다.
일단 이 책은 장점이 너무 많기 때문에 별로 아쉽지 않은 단점 몇가지를 빠르게 짚고 장점에 더 많은 시간을 할애하고 싶다.
(그나마) 조금 아쉬운 점
- 이렇게 쉬운 내용까지?
일단 이 책은 프로그래밍을 전혀 하지 못하는 독자가 읽기는 어렵다. 최소한 프로그래밍에 익숙한 사람이 본다는 전제 하에 지나치게 쉬운 내용도 자세히 다루어 다소 지루한 부분이 있다. 하지만 기본을 다시 짚어볼 수 있다는 점에선 오히려 장점이 될 수 도 있다.
2. 너무 많은 것들을 다루려고 한건 아닐까?
함수형 프로그래밍, 제이쿼리, 노드와 같은 부분은 깊이가 다소 아쉬웠다. 어차피 이 주제들을 제대로 다루기엔 지면이 턱없이 모자랐다면, 과감히 빼고 브라우저 자바스크립트의 내용을 좀 더 보완했으면 어땠을까 싶다. 하지만 이제 자바스크립트 생태계에서 빠질 수 없는 내용들인만큼 입문서에 꼭 포함시켜서 향후 학습에 도움을 주는 차원에서 생각해본다면 역시 장점이 될 수도 있다.
(너무나) 좋았던 점
- ES5에서 ES6로의 자연스러운 전환
ES5에서 넘어온 독자들의 마음을 편안하게 해주기 위해 npm, gulp, grunt, babel과 같은 도구들을 이용해 자연스럽게 ES6를 사용하는 환경을 구성한다. 당장 내 ES5 소스들 사이에서도 ES6를 사용할 수 있게 되었다는 생각에 몰입감이 더 높아진다.
단순히 도구의 차원을 넘어서서 ES6의 문법이 ES5와 어떻게 연관되는지 필요한 부분에선 적절히 소개해주기 때문에 여전히 도처에 서식중인 ES5 코드를 이해하고 리팩토링할 포인트를 찾는데에 큰 도움이 될 것이다.
2. 쿡북과 레퍼런스 사이의 절묘한 줄타기
지나치게 쿡북 스타일로 가면 재밌게 읽고 나중에 찾아써보기가 어렵고, 반대로 레퍼런스 스타일로 가면 읽을때 너무 지루하다. 이 둘 사이를 아슬하게 오가는 절묘한 줄타기를 이 책이 해냈다. 필요할 때 언제든 찾아 볼 수도 있고, 근본적 원리를 잘 설명해줘서 면접 대비서로도 손색이 없다.
3. 저자의 물이 흐르는 듯한 필력
글 자체가 재미있어서 술술 읽힌다. 재미있는 글이 유익하기도 하니 더이상 무슨 말이 필요할까 싶다. 그 중에서도 가장 마음에 드는 구절은 다음과 같다.
필자는 자바스크립트 문서가 필요할때는 MDN에서 직접 검색하거나 검색어 앞에 mdn을 붙이곤 합니다. 그렇지 않으면 w3school이 반드시 검색 결과에 나타날 테니까요. 누가 w3school의 SEO를 관리하는지는 알 수 없지만, 그는 천재가 분명합니다. 하지만 w3school의 문서는 읽지 마십시오. 심각하게 함량 미달인 문서를 많이 봤습니다.
이제 난 절대로 w3school의 링크조차 누르지 않게 되었다.
4. JavaScript-ic way
프로그래밍 언어와 관련된 좋은 책을 읽고 나면 해당 언어의 문법, API를 익힐 뿐만 아니라 해당 언어의 철학과 Good Practice를 습득하게 된다. 이 지식들은 내 코드를 짤 때는 물론이거니와 종종 겪게 될 남의 코드를 읽는 일에 어마어마한 도움이 되기 때문에 반드시 좋은 책을 읽어야 하는 것이다. 그리고 이 책이 그러하다. 시종일관 JavaScript로 제대로 코딩하는 방법을 알려주고 있으니까.
이 책을 읽고 바로 내 ES5틱한 소스를 ES6의 클래스를 이용해 리팩토링을 해 보며 큰 재미를 느꼈다. 이런 좋은 책을 만나면 내 일이 재밌어지는 경험을 하기 때문에 항상 좋은 책을 찾아다니게 된다.