Review
프로그래머의 뇌 후기

사람의 뇌가 프로그래밍을 어떻게 학습하고 어떻게 코드를 작성하는 지에 대해서 인지심리학적인 방법으로 분석한 책이다. 프로그래밍은 하나의 단순한 작업이 아니라 여러 종류의 작업들이 동시에 이루어지는 복잡한 작업이다. 프로그래머는 항상 복잡한 알고리즘의 코드를 구현하기만 하는 것이 아니라, 코드베이스를 탐색하거나 필요한 API들을 이해하거나 가독성이 좋게 리팩터링하는 등의 다양한 작업들을 한다. 이 책에서는 여러 실험 결과를 통해서 프로그래밍의 각 과정이 이루어지는 동안 뇌의 어떤 기능이 작동하는 지를 분석하고 있다. 이렇게 분석한 내용을 토대로 어떻게 해야 효율적인 프로그래밍이 가능한 지를 설명한다.
책은 프로그래밍의 다양한 요소들을 전반적으로 다루고 있다. 새로운 프로그래밍 언어를 학습하는 과정, 기존의 프로젝트에서 코드를 읽고 이해하는 과정, 문제를 해결하는 코드를 작성하는 과정, 가독성이 좋은 코드를 작성하는 과정, 다른 사람에게 코드를 설명하는 과정, 새로운 팀원이 코드베이스에 적응하도록 돕는 과정 등 여러 종류의 경험들을 하나하나 설명해준다. 이런 내용들을 설명하고 나서는 독자가 직접 체험해볼 수 있는 연습을 제공해줘서 좀 더 실감나게 읽을 수 있다.
이 책을 읽는다고 해서 프로그래밍에 완전히 새롭고 효율적인 방법으로 접근할 수 있는 것은 아니다. 이 책에서 설명하는 대부분의 방법은 대부분의 프로그래머가 이미 사용하고 있을 것이다. 그렇지만 이 책의 설명을 통해서 프로그래머가 자연스럽게 터득한 방법이 왜 실제로 도움이 되는 지를 이해할 수 있다. 나의 경우를 예로 들면, C#에 반복문을 LINQ 구문으로 변경하는 것이 문법도 간단해지고 성능의 측면에서도 효율적이어질 수 있지만, LINQ 구문에 익숙하지 않아서 코드가 이해하기 어려워진다고 느꼈다. 이 책에서는 그런 일이 자연스러운 현상이고 다른 사람들에게도 나타나는 일이라고 설명한다. 필요하다면 비효율적이더라도 LINQ 구문으로 바꾸지 않고 반복문으로 두는 것이 나을 수도 있다고 이야기한다.
‘읽기 좋은 코드’에 대한 기존의 상식을 지적하는 내용도 있다. 변수명, 함수명 등이 그 역할을 최대한 분명하게 표현해야 한다는 상식이 있지만, 그 길이가 너무 길어지면 오히려 이해를 방해한다는 연구 결과도 소개해준다. 다른 예시로는 좋은 코드에는 주석이 필요 없다는 상식이 있지만, 코드에는 담을 수 없는 정신 모델이 있다거나 이후에 작업을 이어가기 위한 메모 등의 역할로 사용할 수 있다는 내용이 있다.
거의 모든 내용이 작가의 체험뿐만 아니라 설문, 실험, 통계를 근거로 하고 있다. 프로그래밍 교육에 대한 연구가 이렇게나 다양하게 이루어지고 있다는 사실이 신기했다. 다만 주제가 매우 특수하기 때문에 연구의 대상이 매우 한정되어 있고 환경도 제한되어 있기 때문에 이런 연구 결과가 충분한지에 대해서는 의문이 든다.
스스로의 프로그래밍 공부 방식을 개선하고 싶은 사람보다는 다른 사람에게 프로그래밍을 가르치거나 새로운 프로젝트에 적응시켜줘야 하는 사람에게 적합한 책이 아닐까 싶다.