프로그래머가 알아두면 좋은 인지과학들을 쉽게 설명한 책에 대해 리뷰해본다.

프로그래머의 뇌

책을 읽게된 계기

개발을 하게 되면 여러가지로 글을 접하게 되는 경우가 많다. 예를 들어 어떤 오픈소스를 사용하기 전에 읽어보거나 새로운 언어를 익히기 위해서 공식 문서를 읽어보는 경우가 생기기 마련인 것 같다. 물론 최근 chatGPT와 같은 인공지능이 러닝커브를 많이 줄여주고 있지만 깊이있는 이해도를 얻기에는 좋은 방식이 아니라고 느껴졌다.
또한 오픈소스를 알아보기 위해서는 개발자들이 적어놓은 Readme를 읽어보기 마련인데 최근들어 그러한 긴 글을 읽는데 오래걸리고 집중도 잘 안되는 문제가 생겼다. 예전처럼 책을 통해서 여러 사람들의 이야기를 글로 접하기를 효과적으로 하기 위해서는 독서가 필요하다고 생각했다.
물론 읽는 것 이외에도 내가 글을 적어야 하는 경우도 많이 생길꺼라고 생각했다. 여러가지의 생각을 정리하는 블로그를 포함해서 내가 개발한 프로젝트에 대한 설명과 이용방법들을 읽기 좋게 글을 적는 것도 개발자가 갖추고 있으면 좋은 능력이라고 생각하기 때문이다.

왜 “프로그래머의 뇌” 였나?

이 책을 처음 접하게 된 건 친구가 스터디로 이 책을 읽어보는 것을 권유했었다. 그때 책을 처음 찾아보게 되었고, 그당시에 구름톤 프로젝트 기간이라 책보다는 하나의 프로젝트에 집중하고 싶은 생각이 커서 제안을 거절하게 되었다. 그이후 구름톤이 끝나고 한참이 지나고 나서야 이책을 꺼내 읽어보게 되었다. 개발자로 살아가기 위해 노력하고 있지만 어떤 개념을 배우고 깊게 생각하기 어려운 상황을 이 책을 통해서 어느정도 해결할 수 있을까 라고 생각해서 밤에 1, 2챕터씩 읽게 되었다. 개발자, 프로그래머로 살아가기 위해서는 여러가지에 대한 공부를 계속해나가야 하고 그러한 내용을 공부하기 위한 방식을 정리해 두었을 것을 기대하고 책을 읽기 시작했던 것 같다.

생각해보아야 할 것들

이 책은 프로그래밍을 진행하거나 개발을 진행할 때 우리의 뇌에서 진행되는 과정을 연구한 여러가지 연구 결과들을 통해서 해석하는 경향이 있었다. 정말 여러가지의 내용이 있었지만, 인상깊었던 내용이나 읽다가 고민을 해보게 되는 내용들에 대해서 정리해보고자 한다.

기억력?

처음부터 저자는 코드를 읽을 때 우리의 뇌에서 진행되는 과정을 설명하면서 2가지의 기억에 대해서 설명했다. STM(Short Term Mamory), LTM(Long Term Mamory) 직역하면 순간 기억력, 장기 기억력 정도가 되지 않을까 생각한다. 코드를 읽을때 잠시 기억해두는 기억과 장기 기억력에서 끌어다 쓰는 방식을 나누어서 설명하고 있었다.

모든 개발자가 어떨지 모르겠지만 나는 코드를 읽거나 리뷰할 때 읽었던 내용들이 오래가지 못한다고 느꼇고, 연구에서도 코드를 읽을때 사용되는 STM는 오래가지 못한다고 설명하고 있다. 그럼에도 STM는 뇌에 부화를 많이 주는 방식으로 LTM에 많은 기억이 있는 경우에 코드를 읽고 해석하는데 적은 부하가 걸린다고 이야기했다. 이것을 확실하게 내가 체감했던 상황은 내가 아는 언어로 작성된 코드를 읽을 때와 모르는 언어로 읽을 때의 피로감을 생각해보면서 공감했다.

그렇다면 이러한 피고감을 줄일 수 있는 방법은 연구결과에서도 나와있다 싶이 LTM를 활용하는 빈도수를 높이면 된다… 그만큼 많이 아는 개발자가 될 수록 개발이 쉬워진다는 당연한 이야기지만 이 책에서는 좀 더 디테일한 부분들을 짚어주고 있었다. 그냥 공부하는 것보다 이미지를 연관지어서 공부하거나 블럭 단위로 기억을 해놓으면 기억력을 높일 수 있다고 이야기한다. 이때 가장 기억에 남았던 방식은 플래시 카드였다. 흔히 어렸을때 단어를 외울때 썻던 카드로 영단어를 외울때도 잘 활용되는 방식이다. 이방식이 암기에도 좋지만 LTM에서 필요한 내용을 인출하는 능력을 기르는데에도 좋은 영향을 미칠 수 있다고 설명했다. 뇌에서 LTM에 들어간 내용은 잘 잊혀지지 않지만 자주 인출하지 않으면 결국에 필요할 때 인출하는 능력이 떨어진다는 연구결과를 보여주었다.

그래서 공부를 한내용을 자주 봐주는 것도 좋은 공부방법이라고 설명하고 있었다. 이 부분이 책의 앞부분에 대한 내용이었는데 개인적으로는 정말 도움이 되는 공부방법인 것 같다. 어떤 개념이나 언어를 익히고 프로젝트를 진행했음에도 시간이 지나면 이 내용을 떠올리는게 좀 오래걸리는 경향을 느꼈다. 한 번 익힌 개념이라고 다시 안보는 것이 아니라 가끔씩이라도 리뷰하면 이를 통해서 얻어가는 것이 많을 것 같다.

협업과 개발시에 주의할 점들

어느정도 개발에 진심인 사람들이 읽어본 책 클린코드나 코드 컴플리트와 같은 개발시에 주의해야 할 점들 변수이름을 짓는 방식이나 프로젝트 구조를 설계하는 방식들을 인지과학적으로 풀어낸 부분도 있었지만 너무 당연한 이야기이다보니 흥미가 좀 떨어지는 부분이 중간에 포함되어있었다. 그리고 마지막 부분에서 정말 감명깊었던 부분은 협업에 대한 내용이었다.

대다수의 개발 프로젝트는 다수와 같이 작업하게 되고 모든 사람이 같은 생각을 가지고 있거나 같은 지식을 가지고 있기는 불가능하다고 나는 생각한다. 이에 프로젝트의 흥망은 사실 프로젝트 내부에서의 사소한 의사소통 또는 공감이라고 생각한다. 좀 더 상세하게는 프로젝트 내부에서 각기 다른 사람들이 동일하게 생각하고, 다른 사람들의 생각에 동의와 공감을 통해서 비슷한 생각을 가지게 되는 것이 중요하다.

그런데 그런 상황을 만들기가 매우 어렵다는 것도 인정할 수 밖에 없었다. 최근 진행한 프로젝트에서도 내가 원한 방향성으로 이끌어 나가기가 어려웠다. 정말 어려웠던 부분은 팀원들 간의 격차였고, 이를 해결하는 것은 단기간에 되기 어려웠던 것 같다.

이러한 부분에 대해서도 저자가 이야기 하고 있었는데 회사에서 새로운 개발자가 들어왔을때는 당연하게 어려움이 있을 것이고 이러한 어려움을 인정해주는 것이 중요하다고 설명하고 있다. 이 때 자주 하기 쉬운 실수가 전문가의 저주라는 것인데 이는 내가 처음 익힐때의 어려움을 고려하지 못하고 설명하면서 쉽다고 이야기하는 경향을 이야기한다. 이 내용을 읽었을때 나뿐만 아니라 모든 개발자가 어려움을 겪는 부분이구나라고 생각했다.

이러한 오류를 법하지 않고 가르치는 방법은 정말 상세하게 어느 수준인지를 고려해서 가르쳐야 한다고 이야기 하고 있었다. 이방식이 오래 걸릴것 같지만 생각보다 이방식으로 가르치는 것이 적은 시간이 걸릴 수도 있다고 설명하고 있었다.

마무리

“프로그래머의 뇌”는 언뜻 생각하면 당연한 부분들을 인지과학적으로 설명하고 좀 더 나은 방향성을 제공하주는 책이었다. 그리고 개발을 진행함에 있어서 어려움을 겪거나 좀 더 신경써야 하는 부분들을 좀 짚어주는 내용도 있었다. 중간에 당연한 내용이 나오는 부분은 조금 지루할 수 있지만 이책의 초반에서 나왔던 이야기처럼 내가 아는 내용이더라도 다시 상기한다는 생각으로 읽다보니 금방 읽을 수 있었다. 뇌과학에 관심이 있으면 재밌고 가볍게 읽기 좋은 책인 것 같다.

개인 평점: ⭐️⭐️⭐️⭐️☆
한줄평: 기억의 중요성과 암기의 중요성을 다시 생각해볼 수 있는 책!

댓글남기기