소플의 처음 만난 리액트 2판, 이인제 저

“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

이거다! 근래 회사에서 조직 개편이 일어나 원래 3명이서 하던 업무를 혼자 해야 하는 상황이 발생했다. 서버 프로그램과 클라이언트 프로그램을 다 해야 하는 상황인데, 서버 프로그램쪽이야 하던 거라서 큰 문제가 없었지만, 문제는 클라이언트 프로그램이었다.

과거 클라이언트 코드는 리액트의 클래스 컴포넌트를 사용해서 완전히 익숙해져 있던 상황이었는데, 여러 가지 문제도 있고 너무 낡은 버전을 쓰고 있다보니 보안 이슈도 해결이 안 되고, 기술적으로도 낙후될 뿐만 아니라, 점점 비대해지는 코드량을 관리하는 것도 힘들었다.

특히 SPA가 주는 장점(물론 단점도 있겠지만)을 활용하지 못해 발생하는 이슈도 있어서, 이참에 리액트 버전도 올리고, SPA로 만들어서 뭔가 전담 인원이 집중해서 작업할 수 있도록 해왔다.

그런데 이걸 덜컥 혼자 하게 되었다. 최신 기술을 그래도 많이 도입해서 구현한지라, 여기에 익숙지 않은 나로서는 무척 난감한 상황이었다. 그래도 나름 이쪽 업계에서 구르다보니, 기존 클래스 컴포넌트로 된 것도, 수많은 시행착오와 문서를 뒤져서 익힌 상황인지라, 어떻게든 꾸역꾸역 손대고 있었다. 하지만 최신 기술을 많이 사용한 현 클라이언트 프로그램은 관리하기가 쉽지 않아 능률이 너무 떨어졌다.

문제는 최신 기술에 대한 이해도가 떨어지는 것. 이걸 잘 풀어내기 위한 길라잡이가 필요했는데, 이 책을 우연히 접하게 된 것이다. 처음에는 또 기술 나열이랄까, 전형적인 설명투의 기술 서적이겠거니 해서 기대를 하지 않았던 게 사실이다. 게다가 입문서가 아닌가! 많은 부분을 건너뛰게 될 것만 같은 기대(?)가 있었다.

그런데 열어보니 생각했던 그게 아니었다!

무엇보다도 기초에 충실하면서도, 핵심을 찌르는 설명과 전개가 맘에 쏙 들었다. 특히 인상 깊은 몇 가지를 들여다보면, 저자가 저자의 말에서 한 바와 같이,

“나중에 커서 훌륭한 프로그래머가 되어 내가 알고 있는 것을 다른 사람들에게 이해하기 쉽게 가르쳐 주고자 하는 목표가 생겼습니다.”

이 말처럼 입문서지만 그래도 쉽고 필요한 부분만 언급하며 과하지 않은 반복을 사용해 설명해나간다.

분명히 따라해보면 잘 될 코드들을 제안한다. 그러면서 목적에 맞는 적절한 예제를 제공해준다.

특히, 클래스 컴포넌트를 설명하면서도 여러 문제점을 해결한 함수 컴포넌트를 주로 사용하게 하되 알고는 있으라는 식으로 비교해주어 레거시 코드를 보게 되더라도 당황하지 않도록 배려해준다.

덕분에 내 입장에서는 클래스 컴포넌트 방식으로 개발해오다 함수 컴포넌트 방식으로 전환된 현재 클라이언트 프로그램을 분석하고 수정하거나 추가 개발해야 하는 상황에서 무척이나 많은 도움이 된다. 적어도 왜 이렇게 짜야 하는지를 이해할 수 있게 되어서지 싶다.

훅, 이벤트 핸들링, 조건부 렌더링, 합성 vs. 상속, 컨텍스트… 이것들을 대략적으로는 코드를 통해, 그리고 전 직원의 도움으로 조금은 알고 있었지만, 명확하게 머릿속에 그림을 그릴 수 있도록 가이드해줘서 무척이나 도움이 된다.

역설적이게도, 경력이 있을 때, 잘 만들어진 입문서는 어설프게 만들어져 있던 기초를 탄탄하게 만들어준다. 이해가 안 될지 모르겠지만, 잘 만들어진 입문서는 입문자에게 도움이 된다기보다는 오히려 경력자에게 더 도움이 되는 이 역설.

마지막에 덧붙여진 리액트 18 소개는, 나에게 자동으로 현재 프로그램을 어떻게 개선해나가야 할지를 알려줬다.

잘못 이해하거나 과도하게 작성된 부분을 재정립한 지식을 바탕으로 개선하고 이제 리액트 18로 한층 개선된 코드로 만드는 그림을 그려볼 수 있을 것 같다.

입문서는 입문자에게 해당 내용에 흥미를 잃지 않으면서 약도를 제시해주며 궁극적으로 경험자에게 나침반 역할을 해주는 게 좋은 입문서임을 다시 한 번 되새길 수 있는 기회가 됐다.

529 페이지, 양이 많아보여도 안 많아 보이게 만드는 매직.