'프로그래머의 뇌' 를 읽고
LTM : 장기기억
STM : 단기기억
작업 기억 공간 : 실제 작업이 일어나는 공간.
지식의 부족 = LTM 문제
정보의 부족 = STM 문제
처리 능력의 부족 = 작업 기억 공간의 문제
위 세 개념이 끊임없이 등장한다.
코드를 빠르고 정확하게 읽으려면 세 요소가 협동적으로 동작해야한다. 가령 우리는 코드를 읽을 때 텍스트만 읽지않는다. 그 텍스트의 문법(LTM) 변수(STM) 등을 조합해서 읽고 이 읽는 작업 자체가 작업 기업 공간에서 이루어진다.
연구결과에 따르면 프로그래머는 쓰기보다 읽기를 훨씬 많이 한다. STM의 크기는 2개 ~ 6개 단어밖에 안되기 때문에 소중하게 활용해야한다. 근데 신기한 일이 있다. I Love the Game 이라는 문장을 외우게하면 글자 수는 6개를 훌쩍 뛰어넘지만 대부분의 사람이 잘 외운다. 외냐하면 우리는 Chunk(청크) 단위로 STM 을 활용하기 때문이다. I, Love, the, Game 이라는 네 개의 청크는 STM 크기 한계에 부합한다. 그런데 I Should getting out of this place for more information. 이런 식으로 하면 외우기 힘들다.
즉, 청킹을 잘하면 코드를 더 빨리 읽고 더 잘 인지할 수 있다. 고수준 주석문은 코드를 청킹하는데 큰 도움을 준다.
숙련된 개발자는 코드를 읽고 이해할 때 표식을 많이 이용하지만 초급개발자는 그렇지 않다. 표식은 청크보다는 조금 더 작은 코드의 일부분이다. '
기간을 두고 반복하며 학습할 때 가장 학습 효율이 좋으며, 복잡한 프로그래밍 개념을 학습할 때 정교화를 하면 도움이 된다. 우리 뇌는 무질서하게 정보를 저장하지않고, 어떤 스키마타가 있다. 새로운 정보를 학습할 때 기존 LTM에 저장되어있는 스키마타에 부합될수록 더 잘 학습할 수 있다.
변수 역할에 대한 프레임워크가 있다.
고정값, 스테퍼, 플래그, 워커, 최근값 보유자, 목적값 보유자, 모집자, 컨테이너, 추적자, 조직자, 임시
얼핏 생각하면 수학을 잘하는 사람이 코딩도 잘할 것 같지만, 아니다. 오히려 언어와 관련된 뇌 부분을 많이 사용한다.
우리는 많은 정신 모델을 가지고 있다. 정신모델은 예를 들면 '폴더' 같은 것이다. 폴더든 파일이든 하드웨어적 관점에선 0과 1의 모음일 뿐이지만 우리는 이를 '폴더'와 '파일'이라는 모델로 해석하고 파일은 폴더 안에 있다고 생각한다. 또하나, 눈사람에게 스웨터를 입히면 천천히 녹을까 빠르게 녹을까? 많은 사람이 '빠르게 녹는다.'고 생각한다. 스웨터에 대한 우리의 정신 모델은 '따뜻함'이기 때문이다. 따뜻한 걸 입혔으니 눈사람이 더 빨리 녹을거라 생각하지만 사실은 정반대다. 단열현상이 발생하므로 눈사람은 더 천천히 녹는다. 이 정신 모델이 있으면 코드를 더 빠르게, 잘 이해할 수 있고 구체적인 모델을 만드는 게 추론에 큰 도움이 된다. 구체적인 모델을 만드려면 세부 정보가 많아야 한다.
언어적 안티패턴이 있을 때 우리 뇌는 부하를 많이 받는다. 언어적 안티패턴이란 이름과 다르게 동작하는 것이다. 이름은 isValid 인데 컬렉션을 반환한다는가 하는 식이다. 이런 안티패턴은 두가지 유형으로 나눌 수 있다. 첫번째 언어적 안티패턴 두번째 구조적 불일치.
우리는 뭔가를 이해하려할 때 추상적 레벨에서 학습을 시작해서 구체적 레벨로 심화되었다가 다시 추상적 레벨로 포장한다. '왜', '언제' 사용하느냐 --> '어떻게' 사용하느냐 --> '왜', '언제' 사용하느냐 의 식으로 학습하면 좋다.