IT 현업개발자가, 별도의 광고료 없이 한빛미디어의 책만 제공받아서 작성한 서평입니다.

이번에 리뷰하게된 책은 멀티패러다임 프로그래밍 - 유인동 입니다. 이 책은 Vanilla JS / TypeScript 환경에서 자료관리, 비동기 상태관리, 함수형 프로그래밍에 대한 저자의 아이디어와 실전예제 코드를 제공하는 책 입니다.

이 책을 선택하게 된 이유는 자바스크립트 및 타입스크립트에 대하여 보다 깊이있는 내용들을 이해하고 실제 프로젝트에 적용하기 싶어서 이 책을 선택하게 되었습니다. 이 책을 다 읽고서 바로 생각난 책이 있었는데 리팩토링 2판 (자바스크립트편) 입니다.

리팩토링 2판

한 때, 클린코드, 리팩토링과 같이 필요한 내용에 가장 적합한 형식 및 내용을 적용함으로써, 다루고 있는 언어들에 대하여 보다 깊이있는 이해도도 높아지고 부가적으로 코드의 가독성도 높아지는 등 여러가지 장점들 때문에 관련 내용들을 익히면 바로 실무에 적용하기가 쉽기도 해서 현재까지도 주요한 관심사 중의 하나 입니다.

이번에 리뷰하게된 책은 언어 개발자의 의도 에서 한 발 더 나아가서, 실제로 현업에서 동작하는데 있어서 해당 언어의 한계 등 여러 이유로 현재는 구현하는데 한계가 있는 기능들을 보완 및 강화하는 내용을 다루는 책 입니다.

앞부분의 1~3장의 내용의 단계적인 전개 내용을 저의 입장에서 요약하자면 다음과 같았습니다.

  1. 이터레이터개념소개 및 활용 실습
  2. LIPS 개념소개 및 이해
  3. typeScript 를 활용하여 LIPS 개념을 이해 및 실습

초급자 분들이, 이 책에서 소개하고 싶은 내용을 이해하기에는 조금은 어렵게 구성되어 있어서 아쉬운 부분이 있었습니다. 특히 앞의 1~3장에서 이러한 부분을 많이 발견할 수 있었습니다. 리팩토링, 클린코드 를 넘어서서 개별 언어들이 지원하지 않는 부분까지도 개발자의 실력으로 보완 및 강화가 가능하다는 이 책의 내용을 이해하기 위해서는 이터레이터LISP 등의 해당언어 개발자 분들에게는 조금은 생소한 개념 및 내용에 대하여 보다 쉽게 접근을 하고 해당 내용들을 먼저 상세하게 알려준 뒤에 본격적인 내용들을 다루었다면 더 좋았을텐데 하는 아쉬움이 있었습니다.

LISP 개념소개 (118 페이지)

이 책은 위 내용에서 보이는 것처럼 관련 내용에 대하여 저자가 어느정도 이야기를 풀어놓은 뒤에 잠시 쉬어가는 시간 으로 해당 개념에 대하여 설명을 하는방식의 구성을 갖고 있습니다.

저자 입장에서 생각을 해 본다면, 개발자들이 실무 개발작업을 진행하면서 뭔가 부족하다고 느끼는 내용, 고객들의 컴플레인 등으로 어려워 하던 내용을 설명한 뒤 해당 내용에 대한 솔루션의 하나로 저자가 그동안 연구한 내용들을 소개하는 구성으로 되어 있기 때문에 이와같은 구성을 갖게 된 것이 아닌가 하는 생각을 하게 되었습니다.

어느정도 이상의 경험치가 쌓인 뒤라면 해당 내용에 대하여 공감을 하고 보다 쉽게 다가설 수 있을지 몰라도, Ctrl + C, Ctrl + V 작업이 50% 이상인 만큼, 해당 내용에 대하여 일정수준 이상의 learning curve 를 도달한 뒤, 고객들과의 소통 및 보완책을 찾기위한 노력을 하기 까지는 생각보다 많은 시간과 경험을 필요로 하기 때문에, 그렇지 못한 분들에게는 이 책의 내용을 이해하고 뒷부분의 내용들 까지 다가서기에는 쉽지 않을 수 있겠다는 생각이 들었습니다.

저 또한, 프론트엔드 부분은 react.js 등의 기존에 작성된 패키지들을 주로 활용하다 보니, Vanilla JS / TypeScript 에 대한 내용들이 대부분이여서 책의 앞부분과 뒷부분을 오고가며 조금은 더디게 내용을 진행할 수 밖에 없었습니다.

# 처음 이 책에서는 개념들이 생소해서 여렵지만
# 책 뒷부분에서 설명이 제공된 내용 정리
- 이터레이터
- 이터러블 이터레이터
- 52 page : 전개연산자(...)
- 70 page : 구조분해 / 구조분해할당
- 72 page : 고차함수
- 76 page : 제너레이터의 `yield*`
- 95 page : 화살표함수 
- 95 page : 타입스크립트의 타입 추론력 `매개변수 타입만 명시해도 충분`

위 내용들은 해당 페이지에서 개념들이 어려워 했지만, 몇페이지 뒤에서 해당 개념에 대하여 설명을 제공하고 있는 내용들을 몇가지 정리해 보았습니다. 개정판에서는 해당 챕터에서 다루게 될 개념들을 소개한 뒤 저자분이 이야기하려는 내용을 전개하는 방식으로 순서만 바꿔도 훨씬 더 많은 분들이 접근하기 용이하지 않을 까 생각 들었습니다.

각 장의 맨 뒷부분에 요약정리 내용을 제공하고 있습니다. 저처럼 어려워 하시는 분들을 해당 챕터를 몇장으로 정리된 내용을 통해서 전체적인 그림을 먼저 그린 뒤 앞부분의 내용들을 접근하신다면 많은 도움이 되어 줄 것입니다.

@fxts/core 패키지 소개

이 책의 뒷부분에서는 타입스크립트를 활용한 함수형 프로그래밍을 도와주는 패키지인 @fxts/core 등을 활용하여 실무에 적용가능한 코드들을 제공하고 있습니다. 예제들이 실제 프론트엔드 작동 보다는, 함수적인 기능부분 중심으로 내용들이 구성되고 있어서 Vanilla JS / TypeScript 를 활용하여 직접 작업하시는 분들에게는 많은 도움이 되어줄 것이고, 저처럼 react.js / Next.js 등의 패키지를 주로 활용하는 개발자 분들에게는 조금은 생소하고 어렵다고 느끼실 수 있는 책이었습니다.

Vanilla JS / TypeScript 환경에서 자료관리, 비동기 상태관리, 함수형 프로그래밍에 대한 저자의 아이디어와 실전예제 코드를 제공하는 책 입니다. 따라서 Vanilla JS / TypeScript 를 활용하여 필요한 기능을 제공하는 NPM 패키지 모듈을 분해하여 직접 수정보완 하시는 분들이라면, 이 책을 통해서 해당 기능이 동작하는데 훨 씬 안정적이면서 경제적으로 동작 할 수 있도록 수정하는데 많은 아이디어 및 실무 예제를 습득하는데 많은 도움이 되어 줄 책 입니다. 하지만 저처럼 작년 12월에 리뷰했던 누구나 시작하는 타입스트립트 책을 소화한 뒤에 바로 접근하기에는 쉽지 않았던 책 이었습니다.

추후 개정판 에서는 앞에서 언급한 것처럼 개념들에 대하여 먼저 설명을 한 뒤 내용들을 진행할 수 있도록 약간의 순서조정만 반영된다면 훨 씬 더 많은 분들에게 도움이 되지 않을 까 생각드는 책이었습니다.