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