코드 작성 시 "이게 뭐였더라" 하면서 스택오버플로우나 구글을 먼저 검색하는 경우가 많습니다. 동작방식을 알고 있지만 세부적인 내용이 기억나지 않아 그때마다 메뉴얼을 찾아보기도 합니다. 그런데 이런 행동이 장기적으로는 도움이 되지 않는 행동이라고 합니다.
얼마전 @benelog 님이 #책책책 에서 소개시켜주신 "프로그래머의 뇌"라는 책을 보고 있습니다. 아직 초반부만 읽었는데 깨달음과 뉘우침을 줍니다.
저자는 코딩할 때 우리의 뇌가 동작하는 방식을 근거로 왜 이런 것이 도움이 되지 않는지 설명하고 어떻게 개선할 수 있을지 이야기 합니다.
사람도 역시 컴퓨터와 마찬가지로 장기기억(LTM - 하드디스크), 굉장히 제한된 크기의 단기 기억(STM - 메모리) 그리고 작업영역(CPU) 를 사용하는 방식을 갖고 있습니다. 우리가 코드를 읽을 땐 현재 코드를 단기기억(STM)에 저장하고 그 코드와 관련된 내용을 장기기억(LTM)으로부터 불려들여 옵니다. 그리고 작업 영역에서는 한줄 한줄 따라가며 로지컬한 계산을 하게 됩니다.
모르는 문법이 기억나지 않는다고 매번 구글링하는 행동들은 문법이 장기기억(LTM)으로 저장되는 것을 방해합니다. 더불어 개발에서 검색으로 전환하기 위해 개발 컨텍스트를 벗어나게 합니다. 검색을 위해 브라우저를 열고 이메일이나 뉴스를 읽게 되거나 너무 자세한 논의에 빠지게 됩니다. 연구 결과 다시 업무로 복귀하는데 평균 15분정도가 소요된다고 합니다.
저자는 장기기억으로 가게하기 위한 제안으로 단어 암기할 때 사용했던 플래시카드 기법이나 기억의 정교화(eleboration)를 권합니다. 여기서 정교화는 새롭게 기억하고자 하는 내용을 기존에 알고 있던 기억과 연관짓는 것을 의미합니다. 정교화는 인간의 뇌가 기억을 저장하는 방식이 연관된 것들 끼리 줄줄이 비엔나 처럼 엮어서 기억하는 기억 방식 때문에 효용이 있습니다. 더불어 기억을 해보는 시도를 하는 것 역시 기억을 강화하는 방법입니다. 매번 검색으로 얻으려고 하면 뇌는 기억해내려는 힘(인출강도)이 점점 약해집니다. 더 검색에 의존하게 되는 것이죠.
여러분도 한번 검색보단는 기억하는 연습을 해보는 것이 어떨까요? 저도 노력해보도록 하겠습니다.
ps.
이 밖에 저자는 우리가 코드를 볼 때 코드를 읽기 어려운 이유가 LTM 때문인지, STM 때문인지, 작업영역 때문인지를 객관적으로 파악하는 노력을 하는 것을 중요시 여깁니다. 그리고 이를 보완하는 방법에 대해서 설명합니다. 여기서 청킹이나 디자인 패턴의 유용성등이 설명됩니다. 전반적으로 목차는 뭔가 코딩 초보자를 위한 내용이라고 느껴졌다가 그 내용을 보고 감동하게 되는 책인 것 같습니다.
구글링이나 스택오버플로 같은 사이트를 자주 들락 거릴수록 굇수로 가는 길은 요원해진다 봅니다. 조금만 막혀도 검색을 하는 습관은 스트레스 수치를 줄이는 아주 #쉬운길 입니다. 언제나 그렇듯이 쉬운길은 성장을 방해합니다. 또한 열심히 공부하여 암기한 내용을 로딩하는 노력이 귀찮아서 검색하다보면 우리의 뇌는 장기기억에서 삭제해버립니다. 더 자세하게는 연결된 뉴런의 숫자가 줄어들죠. 즉, 그 지식을 로딩하는데 훨씬 어려워 진다는 겁니다.
예로 드신 단기기억을 관장하는 기관이 바로 #해마 라는 곳인데, 검색하여 복붙했을 경우에는 해마는 중요하지 않은 정보로 파악하고 장기기억(대뇌피질)으로 전환하기를 거부하고 버려버립니다. 따라서 암기할 수 없으며 나중에 또 다시 검색하게 되는 악순환에 빠지게 됩니다.
마지막으로 사고에 대한 명언을 하나 소개하며 마무리 하겠습니다.
"암기하지 않으면 사고할 수 없다." - Jim Kwik
스스로 사고하는 굇수가 되려면 암기는 선택이 아니라 필수라 봅니다. 그리고 암기는 기술이기에 역대급 천재를 제외하고는 재능에 큰 차이가 없습니다. "암기력이 좋지 않다" 는 셀프 가스라이팅 A.k.a. 자기합리화룰 하기 위한 핑계를 무기로 구글링에 중독된다면, 매일 꿈꾸던 그 찬란한 꿈을 절대로 이뤄낼 수 없다고 강하게 믿습니다. 🧐