프로그래머의 뇌 | 인지과학을 프로그래밍 공부에 적용하다

뇌를 알면 코드가 보인다고?

이 책은 인지 과학을 활용한 프로그래머의 일머리 개선법에 관련한 책이다. 우리 뇌가 처리하는 방식을 이해하면 프로그래밍에서 마주치는 어려움의 원인을 파악하여 그 해결책을 찾을 수 있다는 내용이다. 일단 인지과학 + 프로그래밍이라니 주제 자체가 독특해 흥미로웠기 때문에 스터디에서 함께 읽기 시작했다. 기존의 관념에서 벗어난 흥미로운 지점도 많았고, 프로그래밍 공부에 대한 예상치 못한 (?) 공부 방법도 알려줘서 재밌게 읽었다.

이 글에서는 이 책에서 내게 도움을 주었거나 인상 깊었던 내용을 정리하며 서평을 작성해보려고 한다. 책에서는 코드를 공부할 때 플래시 카드를 사용할 것을 적극 권장하는데, 이것이 실제로 효과가 있는지 실험해보기도 했다.

책에서 개인적으로 재미있는 부분만 요약했는데, 책 전체 내용은 훨씬 더 풍부하고 재미있으니 읽어보기를 추천한다!

내가 쓴 글이 아닌, 책에서 인용한 글이 대부분이므로 나의 글과 이 책의 글을 구분하기 위해 내 생각은 이텔릭체로 표기하였다.

 

코딩에 영향을 주는 세 가지 인지 과정

이 책에서는 처음부터 끝까지 계속해서 등장하는 용어 3가지가 있다. 이 책의 핵심 내용이자 이 책에서 다루는 모든 내용에 등장하는 용어다.

  • 장기 기억 공간 (long-term memory, LTM)
  • 단기 기억 공간 (short-term memory, STM)
  • 작업 기억 공간 (working memory)

이 세 가지는 코딩 중 겪는 세 가지 혼란과 각각 관련이 있다. 우리가 코딩 중에 겪는 혼란은 세 가지 다른 방식으로 일어난다. 

  1. 프로그래밍 언어나 알고리즘 혹은 업무 영역에 대한 지식이 없는 경우
  2. 코드를 이해하기 위해 필요한 정보를 충분히 가지고 있지 못하는 경우
  3. 코드가 너무 복잡해서 혼란이 생기는 경우 (두뇌의 처리 용량이 부족하기 때문)

각각의 혼란은 서로 다른 종류의 인지 과정과 연관된다.

  • 지식의 부족 = 장기 기억 공간(long-term memory, LTM)의 문제
  • 정보의 부족 = 단기 기억 공간(short-term memory, STM)의 문제
  • 처리 능력의 부족 = 작업 기억 공간(working memory)의 문제

이 세 가지 인지 과정은 코드를 분석할 때뿐만 아니라 코드를 작성하거나 시스템을 설계할 때 혹은 문서를 작성할 때와 같이 모든 종류의 인지 활동에 나타난다. 

장기 기억 공간 (LTM)

  • LTM은 프로그래밍과 관련해서 여러 가지 다른 종류의 정보를 저장한다.
    • 예를 들어 어떤 기술을 성공적으로 적용한 순간, 자바 언어에서 키워드의 의미나 maxint의 값이 2147483647이라는 사실, 혹은 영어 단어의 의미 등이다.
  • LTM은 오랜 시간 동안 저장한다는 점에서 컴퓨터의 하드 드라이브와 비슷하다.

단기 기억 공간 (STM)

  • STM은 들어오는 정보를 잠시 보관하기 위해 사용된다.
  • 값을 일시적으로 저장하는 캐시나 메인 메모리라고 할 수 있다.
STM은 크기에 제한이 있는데, 이 크기에 대한 추정치는 학자마다 다르지만 STM이 기억할 수 있는 항목의 최대치가 12개를 넘지 않는다는 점에는 대부분의 학자가 동의한다.

작업 기억 공간

  • 실제 사고 작용은 LTM이나 STM이 아닌 작업 기억 공간에서 일어난다.
  • 생각, 아이디어, 해결책 같은 것들은 여기에서 만들어진다.
  • LTM은 하드 드라이브, STM은 메인 메모리로 생각한다면, 작업 기억 공간은 두뇌의 프로세서라고 볼 수 있다.

이 그림을 보면 더 이해가 잘 갈 것이다. 우리가 사고할 때는 이 세 가지 인지 과정 모두 어느 정도 활성화된다.

부연 설명
1번 화살표는 두뇌로 들어오는 정보를 표시한다. 2번 화살표는 STM으로 들어오는 정보를 표시한다. 3번 화살표는 STM에서 작업 기억 공간으로 이동하는 정보를 표시한다. 이때 화살표 4와 함께 LTM의 정보가 같이 들어와 합쳐지게 된다. 작업 기억 공간은 우리가 사고할 때 정보가 처리되는 장소다.

생소한 코드를 읽는 것은 왜 어려울까?

가장 결정적인 이유는 STM의 용량에 제한이 있기 때문이다.

  • 시간 제약 : STM은 정보를 짧은 시간 (30초 이내)만 저장한다. 30초 후에 그 정보는 LTM에 저장되거나 잊힌다.
  • 크기 제약 : STM의 용량이 2개 ~ 6개 사이로 적다고 추정한다.

우리는 제한된 기억력으로 어떻게 많은 일을 할 수 있는가

  • STM의 용량이 2개 ~ 6개 사이임에도 우리는 당연히 6개 넘는 문자를 기억하고 처리할 수 있다. 이게 어떻게 가능할까?

단위로 묶는다

청크(chunk)라는 개념이 있다. 이는 몇 개의 그룹으로 묶은 정보를 말한다. 이는 STM의 기억 공간 하나만을 차지 한다.

다음 문장을 5초간 본 후에 어떤 문장이었는지 기억해보자.

abk mrtpi gbar

한 번 더 연습해보자. 5초간 본 후에 어떤 문장이었는지 기억해보자.

cat loves cake

이번 문장은 앞 문장보다 훨씬 더 쉬웠을 것이다. 여러 개의 문자를 한 단위로 묶어서 'cat', 'loves', 'cake'로 기억했기 때문이다. 기억할 항목이 3개면 STM이 최대 용량에 훨씬 못 미치기 때문에 이 문장은 쉽게 기억했던 반면, 앞의 두 예제에서는 기억해야 할 항목이 STM의 한도를 넘어섰다.

특정한 주제에 대해 두뇌가 더 많은 정보를 저장하고 있다면 입력된 정보들을 더 효율적으로 청크로 묶을 수 있다. 즉, LTM에 지식이 많으면 기억을 쉽게 한다. 

앞의 연습 문제에서 문자와 단어를 기억하려 했을 때 생소한 문자로 된 문장보다 우리가 이미 아는 단어로 된 문장이 훨씬 쉬웠던 이유도 LTM에 지식이 이미 있었기 때문이다.

심지어 다른 프로그래밍 언어를 잘 아는 뛰어난 프로그래머조차, LTM에 저장되지 않은 익숙하지 않은 키워드, 구조, 도메인 개념을 기억하는 데 어려움을 겪는다. 새로운 팀원을 교육할 때나 새로운 프로그래밍 언어를 배울 때 이 점을 기억해야 한다.

청크로 묶을 수 있는 코드를 작성하는 방법

디자인 패턴 사용하기

디자인 패턴에 대한 지식을 갖게 되면 청킹 능력이 향상되고 더 빠르게 수정할 수 있게 된다.

주석문 쓰기

이게 무슨 말인가?

주석문을 쓸지 말지는 개발자 사이에서 논쟁을 유발하는 주제다. 하지만 몇 가지 흥미로운 시사점도 발견되었다고 한다. 

  • 연구 결과[1]에 의하면 코드가 주석문을 포함하고 있으면 개발자들이 코드를 읽는 시간이 더 많이 들어간다고 한다.
  • 이는 개발자들이 코드를 읽을 때 주석문 역시 읽는다는 것을 시사한다.
  • 이것은 최소한, 주석문을 작성하는 것이 전혀 의미 없는 일은 아니라는 것을 보여준다.
  • 또한 코드에 주석문이 있으면 새로운 팀원이 코드를 쉽게 이해할 수 있다.
  • 다른 연구[2] 에 따르면 개발자들은 코드를 읽을 때 주석문에 굉장히 많이 의존한다.
    • 특히 '이 함수는 주어진 이진 트리를 중위 순회하며 프린트한다' 같은 고수준 주석문은 청크 단위로 쪼개는 데 도움이 된다.

표식 남기기

  • 코드에 어떤 표식을 남기면 그 코드가 무엇을 하는지 이해하는 데 도움이 된다.
  • 코드를 읽다가 속으로 '아, 이거구나'라는 생각이 들면 그게 바로 표식이다.
예를 들어 이진 트리를 순회하는 파이썬 코드에서 주석문에 단어 '트리'를 사용하거나, roottree라는 변수명을 사용하는 것, 프린트하는 문자열 안에 트리에 관한 문자열이 들어가는 것(print("트리의 내용은 다음과 같다")) 등 또한 표식이다.

필요할 때마다 문법을 찾아보기만 하는 게 도움이 되지 않는 이유

개인적으로 머리가 많이 띵했던 내용이었다. 요즘 챗지피티 의존이 심한(...) 나를 위한 부분이었다.

많은 소프트웨어 개발자는 프로그래밍 언어의 문법을 모르더라도 인터넷에서 검색하면 되고, 따라서 문법에 대한 지식이 그리 중요한 것은 아니라고 생각한다. 모르는 것이 있을 경우, 검색이 그리 좋은 해결책이 되지 못하는 이유는 두 가지가 있다.

  1. 관련 내용을 미리 알고 있는 것이 코드를 효율적으로 읽고 이해하는 데 많은 영향을 미치기 때문이다.
  2. 두뇌가 작업을 하다 업무 중단을 받게 되면, 우리가 생각한 것보다 훨씬 더 좋지 못한 결과를 초래하기 때문이다.

업무 중단이 미치는 나쁜 영향

  • 정보를 검색하기 위해 브라우저를 열면 이메일을 확인해보고 싶을 수도 있고 뉴스를 읽고 싶은 마음이 들 수도 있는데 (ㅠㅠ) 이런 일들은 현재 하고 있는 작업과는 무관하다.
  • 관련 정보를 검색하더라도 프로그래밍에 관련한 웹사이트에서 어떤 주제에 대해 너무 자세히 논의하는 내용에 빠지게 되면 자칫 원래 목적을 잃어버릴 수 있다.
  • 연구[3]에 의하면 프로그래머가 코드 작성 도중 중단이 되면 그 업무로 돌아가는 데 약 15분 정도가 걸리며, 그동안 코드에 대한 중요한 정보를 잊어버린다.

검색을 하고 나서 코드로 다시 돌아오면 "내가 아까 뭘 하고 있었지?"라고 자문할 때가 있다.

그럼 문법 공부를 어떻게 하는 게 좋을까? - 플래시 카드 활용하기

저자는 책 전반에서 플래시 카드를 사용할 것을 적극 권장한다. 어떤 문제든 해결 방법에는 보통 플래시 카드가 등장하곤 한다...

 

 

플래시 카드를 프로그래밍에 활용할 때는 앞면에 개념을 적어놓고 뒷면에 해당하는 코드를 적는다.

플래시 카드를 작성하기 좋은 때는 언제일까?

  • 새로운 프로그래밍 언어나 프레임워크 혹은 라이브러리를 배울 때
  • 어떤 개념을 검색할 때
    • 검색을 한다는 것은 그 내용에 대해 아직 모른다는 뜻이기 때문이다.
    • 한쪽 면에는 개념에 대한 단어나 문구를, 반대쪽에는 검색해서 찾은 코드를 적는다.
물론 어떤 내용을 플래시 카드로 만들지는 스스로 판단해야 한다. 모든 문법을 암기할 필요는 없다. 별로 중요하지 않은 건 그냥 검색해도 문제가 되지 않는다.

정말 도움이 될까? 실제로 적용 해보자

처음에는 책에서 플래시 카드 이야기가 나왔을 때 프로그래밍 공부에 플래시 카드는 영어 공부할 때 사용하는 것 아닌가? 과연 코드에 도움이 될까?라는 생각이 들었다. 이걸로 코드를 외우는 게 도움이 될지를 실제로 실험해 보기 위해 총 22개의 디자인 패턴의 개념과 코드를 플래시 카드로 만들어 이틀 동안 학습해보았다. 

앞면 / 뒷면
앞면 / 뒷면
앞면 / 뒷면

처음에는 보편적인 코딩 공부와 달라서 이질감이 들긴 했지만, 한 달 전에 공부했는데도 글을 쓰는 시점까지 플래시 카드 앞면을 보고 답이 떠오르는 게 많은 것을 보면 암기에 이것만큼 좋은 게 없다는 생각이 들었다.

이미지가 캡처되듯이 저장되어서 코드나 단어를 보면 아 이거! 하고 바로 나오게 된다. 잔상이 남는다고 해야 할까?

결론은, 코드 암기에 도움이 많이 되었다! 앞으로도 외워지지 않는 자료구조나 알고리즘이 있다면 이 방법을 사용해보려고 한다.

추가로, 플래시 카드에 관련한 웹 사이트를 찾아보다가 다음과 같은 프로젝트를 발견했다. 코드 학습을 위해 만들어진 플래시 카드 사이트인데, 이 사이트를 이용해봐도 괜찮을 것 같다. 아이패드가 있다면 굿노트에도 플래시 카드 기능이 있어서 코드 학습용으로 이를 사용해도 괜찮은듯하다. (나는 이를 이용해서 디자인 패턴을 학습했었다.) 저자는 플래시 카드 연습 앱으로 세레고, 안키, 퀴즈렛 앱을 언급했다.

https://github.com/jwasham/computer-science-flash-cards

 

GitHub - jwasham/computer-science-flash-cards: Mini website for testing both general CS knowledge and enforce coding practice an

Mini website for testing both general CS knowledge and enforce coding practice and common algorithm/data structure memorization. - jwasham/computer-science-flash-cards

github.com

어떻게 하면 잊어버리지 않을 수 있을까?

  • 어떻게 하면 잊어버리지 않을까에 대해 말하기 전에 사람들이  잊어버리는지를 살펴볼 필요가 있다.
  • 무엇인가 읽고 듣고 보고 난 후 STM에 저장된 정보는 LTM으로 옮겨진다. 하지만 LTM에 영원히 저장되는 것은 아니다.
  • LTM에 저장된 정보가 없어지는 것은 STM처럼 수 초 이내에 이루어지는 것은 아니지만 생각하는 것보다 훨씬 더 짧다.

기억을 잃어버리는 이유

  • 어떤 것에 대한 기억은 왜 그리 빨리 잊히는지 이해하려면 LTM이 어떻게 작동하는지 살펴봐야 한다.
  • 두뇌가 기억을 저장할 때는 컴퓨터가 디스크에 0과 1로 데이터를 저장하는 것처럼 하지는 않지만, 저장하는 방법을 일컫는 부호화라는 용어는 동일하게 사용한다.
    • 부호화 : 기억이 뉴런에 의해 형성될 때 두뇌에서 일어나는 변화
  • 두뇌의 기억은 네트워크 구조로 되어 있다.
  • 즉 하나의 사실은 다른 많은 사실과 연결되어 있다.

$$ b = 100 \times \frac{1.84}{(log_{10}t)^{1.25} + 1.84} $$

  • 망각 곡선
    • 한 시간 이내에 우리가 알고 있는 것의 반 정도를 잊어버린다.
    • 이틀 후에는 배운 것의 25%만 남는다. 
    • 이는 정보를 아예 다시 학습하지 않아도 사람이 얼마나 많이 기억하는지도 보여준다.

오랜 간격을 두고 학습하라

  • 망각 곡선은 어느 정도 시간이 지나면 잊어버리는지 알려줄 뿐만 아니라 '어떻게 하면 잊어버리지 않을 수 있는지'에 대해서도 시사점을 던져준다.
  • 이 공식을 이끌어낸 에빙하우스의 실험 결과, 오랫동안 학습한 만큼 더 오래 기억한다는 사실이 밝혀졌다.
  • 이것은 더 많은 시간을 학습해야 한다는 게 아니라 더 오랜 간격을 두고 학습해야 한다는 것을 의미한다.
    • 즉 플래시 카드를 하루에 다 외우려고 하기보다 긴 기간에 걸쳐 연습해야 한다.

오랜 간격에 걸쳐 반복해야 해야 오래 기억한다는 이야기는 망각 곡선에 대해 들어봤다면 어느 정도 아는 이야기일 수 있다. 그러나 이후 인출 강도에 대한 이야기가 매우 흥미로웠다.

능동적으로 기억하려고 노력하라

플래시 카드는 단순히 양면을 읽기만 하는 게 아니라 질문이나 단어를 보고 답을 생각해내야 한다.

연구에 의하면 그렇게 무언가를 능동적으로 기억하려고 하는 것이 기억을 강화하는 것으로 알려져 있다.

저장 강도와 인출 강도

LTM으로부터 기억을 가져오는 두 가지 서로 다른 형태가 있다 - 저장 강도인출 강도이다. 

  • 저장 강도 : 무언가를 LTM에 얼마나 잘 저장하고 있는가
  • 인출 강도 : 무언가를 얼마나 쉽게 기억할 수 있는가
잘 알고 있다고 확신하고 있다고 생각했는데 막상 잘 기억이 나지 않는 경험이 있을 것이다. 이것은 그 정보에 대해 
저장 강도는 높지만 인출 강도는 낮다는 것을 의미한다.
  • 저장 강도는 감소하지 않고 늘어나는 반면 인출 강도는 시간이 흐를수록 약해지는 것으로 알려져 있다.
  • 어떤 정보를 반복해서 학습할 때 그 내용의 저장 강도는 강화된다.
  • 자기가 이미 알고 있다고 생각하는 내용을 기억하려고 노력하면 추가 학습 없이도 인출 강도가 강화된다.
기억이 결코 소실되지 않는다는 최근의 연구 결과도 있다.
  • 프로그래밍 언어의 특정 문법을 기억하려고 할 때 문제는 저장 강도가 아닌 인출 강도에 있다.
    • 이전에 여러 번 봤던 코드라고 해도 단지 보기만 하는 것으로 나중에 그 코드를 기억할 수 없다.
    • LTM 어딘가에 정보가 저장되어 있지만 그것을 필요로 할 때는 정작 가져오지 못하는 것이다.

정보를 외우는 것은 기억을 강화한다

  • 우리 삶의 많은 것들이 그렇듯이 인출을 더 쉽게 하기 위해서는 많이 연습해야 한다.
  • 학습을 추가로 하지 않고 정보를 기억하려고 능동적으로 노력하는 것만으로도 배운 것을 많이 기억할 수 있다.
@danger
매번 필요할 때마다 문법을 찾아보기만 하는 게 도움이 안되는 이유가 바로 이것이었다! 너무 쉽게 정보를 찾고 또 그것이 너무 일상적으로 이뤄지다 보니 우리 두뇌는 문법을 기억할 필요가 없다고 느낀다. 따라서 프로그래밍 문법에 대한 인출 강도가 강화되지 않고 계속 약한 상태로 남아 있게 된다.
  • 문법을 기억하지 않는다는 사실은 악순환을 만들어낸다. 기억하지 않기 때문에 그것을 찾아보는 것이다.
  • 기억하려고 애쓰기보다는 찾아보는 것만 계속하기 때문에 이러한 프로그래밍 개념에 대한 인출 강도가 발전하지 않는 것이고 이 인출 강도가 약하기 때문에 외우는 대신 찾아보는 악순환이 이어진다.

그래서 어떻게 해야 하느냐

  • 다음 번에 구글에서 프로그래밍 문법에 대해 검색하려고 할 때 검색 이전에 먼저 그것을 능동적이고 의도적으로 기억하려고 시도해보기 바란다.
  • 당장 기억이 나지 않더라도 이런 기억하려는 노력은 기억을 강화하고 다음번에 기억해내는 데 도움이 될 것이다.
  • 이렇게 해도 기억이 나질 않는다면 플래시카드를 사용해서 적극적으로 연습해보기 바란다.

프랑스어를 배울 수 있다면 파이썬도 배울 수 있다

이 내용은 내가 기존에 갖고 있는 관념에 벗어난 내용이라 가장 재미있게 읽었다.

  • 프로그래머는 평균적으로 자신의 업무 시간의 60%를 코드 작성이 아닌 읽는 것에 할애한다고 한다.
  • 이렇게 많은 양의 코드를 읽어야 함에도 코드 읽는 법을 그다지 많이 연습하지는 않는다.
    • 피터 사이벨은 저서 <Coders at Work(일터에서의 프로그래머)>에 실린 개발자 인터뷰에 따르면, 대부분의 개발자가 코드를 읽는 일이 중요하고 또 그 일을 더 많이 한다고 말했으나 그 대부분은 최근에 읽은 코드가 무엇인지 말하지 못했다.
  • 연습의 부족, 좋은 전략과 훌륭한 스키마의 부재 등으로 개발자들은 코드를 한 줄 한 줄 읽거나 디버거로 코드를 라인 단위로 실행시키곤 하는데 이런 방식은 시간이 많이 소요된다.
  • 이로 인해 코드를 파악해서 재사용하거나 수정하기보다는 자신이 코드를 처음부터 다시 작성하는 것으로 선호하는 상황으로 이어진다.

브로드만 영역

  • 우리 두뇌에는 브로드만 영역이라는 곳이 있다. 브로드만 영역은 두뇌를 52개로 나눈 구역으로, 특정 인지·운동 기능과 연관된 부위를 이해하는 데 사용된다.
  • 프로그램을 이해하려고 할 때 BA6, BA21, BA40, BA44, BA4 이렇게 5개 브로드만 영역이 활성화 된다.
  • BA6, BA40은 작업 기억 공간에 관련이 있기 때문에 놀라운 것은 아니지만 놀라운 것은 BA21, BA44, BA47이 활성화된다는 사실이다.
    • 이 영역들은 인간 언어 이해와 관련이 있다.
  • 이 사실은 작업 기억 공간이 크고 언어 능력이 좋은 사람이 더 뛰어난 프로그래머가 된다는 것을 암시하는 것일까?
  • 흥미로운 연구 : 인지 능력과 프로그래밍 사이의 연관성
    • 코드 아카데미에서 파이썬 수업을 들었던 36명의 학생 실험 참여자들에 대해 프로그래밍 능력 뿐만 아니라 수학, 언어, 추론 등의 영역에서 능력을 평가했다.
    • 결과 : 계산 능력, 즉 수학적 능력을 적용해야 하는 지식과 기술은 프로그래밍 능력에 대한 예측력이 작았다. (2%의 분산 (편차))
    • 언어 능력이 더 나은 예측 요인으로 17% 분산이 나왔다.
  • 이것은 흥미로운 결과다. 개발자들은 보통 수학 능력을 중요시하고, 많은 프로그래머가 자신은 언어에 소질이 없다고 말했기 때문이다.
  • 코드 아카데미의 수업을 얼마나 빨리 마쳤는지에 대한 측도는 언어 능력이 가장 큰 요인이었다.
  • 프로그래밍 언어를 얼마나 잘 배울 수 있는지는 인간이 자연어를 배우는 능력으로 예측 가능하다.
  • 개발자 세계에서는 수학 능력이 유용하거나 심지어 반드시 필요한 것으로 간주된다. 이 연구를 통해 발견한 새로운 사실로 인해 프로그래밍 능력에 대한 우리의 생각을 바꿔야 할지 모르겠다.

마치며

  • 이외에도 새로운 팀원이 왔을 때 어떻게 해야 잘 이해하도록 가르칠 수 있는지, 오늘날 슬랙 등 메시징 앱 사용의 증가로 빈번한 업무 중단이 개발자에게 미치는 영향, 변수명을 너무 구체적이지도 너무 구체적이지 않게 지어주는 프레임워크 등 재미있는 내용들이 많다.
  • 그러나 거창하게 설명하지만 실제로 적용하기는 어려운 방법도 종종 있었다. 그래도 전체적으로 유용한 내용이 정말 많았다. 
  • 특히 인출 강도와 문법과 관련된 이야기가 지금의 내 상황에 가장 큰 도움이 되었다.
  • 검색 (특히 요즘은 챗 지피티)를 쓰면서 내가 실제로 검색이나 AI의 도움을 받지 않고 쓸 수 있는 코드가 얼마나 될까 싶어서 실력에 자신이 없어진 요즘이었다. 
  • 문법도 사실 제대로 모른 채로 그냥 복붙하는 경우가 대다수여서 똑같은 코드 또 검색하고 또 검색하게 되었다.
    • 아니면 프롬프트 하나로 똑같은 코드를 생성하거나
  • 순수하게 공부하는 느낌이 들지 않고 무엇도 내 것이 되지 않는 기분을 많이 받았다.
    • 프로젝트를 하기 때문에 시간에 쫓기는 것도 있고
    • 그냥 공부할 수 있는데 게으른 것도 있고
    • 나보다 더 깔끔하고 예쁘게 코드를 짜주는 AI도 있고…
      • 살짝 무기력해지기도 했다.
  • 무언가 코드를 치는데 기억에 하나도 남지 않는 이유가 인출 강도를 강화하려는 노력을 하지 않고 바로바로 찾아보고 잊었기 때문이었다.
  • 너무나 쉽게 정보를 알아낼 수 있는 환경에서 내가 해야할 것은 인출 강도를 높이는 것. 인출 강도를 높이기 위해서는 이전에 썼던 문법이 기억나지 않는다면 기억하려고 계속해서 시도할 것, 그리고 반복할 것. 그러지 않으면 영원히 내 것으로 만들 수 없다.

주석

[1] 하와이 대학교의 연구원 마사 엘리자베스 크로스비의 연구

[2] 취인 판의 2010년 메릴랜드 대학교 박사 학위 논문

[3] 노스캐롤라이나 주립 대학교의 크리스 파닌 교수의 연구