프로그래밍 개념을 더 잘, 쉽게 외우는 방법들.
프로그래밍 문법에 대한 지식을 갖는 것은 코드를 효율적으로 이해하는데도 도움이 된다. 프로그래밍 개념에 대한 장기기억을 강화하여 코드를 청크로 나누어 읽는 것들 더 잘할 수 있게 해준다.
3.1 문법을 기억하기 위한 팁
많은 개발자는 문법을 모르더라도 검색하면 되기에 중요한 지식이 아니라 생각한다. 하지만 관련 내용을 미리 알고 있으면 코드를 더 효율적으로 읽을 수 있기에 중요한 지식이다.
업무 중단이 미치는 나쁜 영향
또한 두뇌가 작업을 하다 업무 중단이 되면 우리의 생각보다 훨씬 안좋은 결과가 초래된다.
- 검색을 위해 브라우저를 켰다가 메일을 확인
- 어떤 주제에 대해 너무 자세히 논의하는 게시글을 봄
어떤 연구에 따르면 코딩 작성 도중 중단이 되면 다시 업무로 돌아가는데 약 15분이 걸렸다고 한다. 원래 하던 작업이 무엇인지 잊어버리는 경우도 많다.
3.2 플래시카드를 사용해 문법 배우기
플래시카드
- 앞면 : 암기하려는 내용에 대한 프롬프트, 그것을 지칭하는 단어나 질문
- 뒷면 : 그에 대한 내용이나 답
플래시카드는 새로운 언어나 프레임워크, 라이브러리를 배울 때 새로운 개념을 접하면 만들 수 있다. 또 어떤 개념을 검색하였을때, 그 개념에 대한 단어나 문구를 앞면에 쓰고 뒷면에는 검색해서 찾은 코드를 적는다. 별로 사용되지 않는 문법에 대해서는 굳이 진행하지 않아도 된다. (코드 읽기에 도움이 되기 위한 것이니)
플래시카드로 작성한 개념을 얼마나 잘 이해하고 있는지 확인하려면 각 카드에 정답/오답 횟수를 기록할 수 있다. 연속으로 잘 맞히면 그 카드는 제외해도 된다. 나중에 다시 생각이 안나면 추가할 수 있다.
3.3 어떻게 하면 잊어버리지 않을 수 있을까?
무언가를 읽고 STM에 저장된 정보는 LTM으로 옮겨진다. 하지만 LTM에 영원히 저장되지는 않는다. 연구 결과에 따르면 한 시간 이내에 우리가 알고 있는 것의 절반을 망각하고, 이틀 후에는 25%만 남게 된다.
기억을 잃어버리는 이유
LTM에서 기억이 어떻게 동작할까?
두뇌가 기억을 저장할 때는 부호화
라는 용어를 사용한다. 이는 기억이 뉴런에 의해 형성될 때 두뇌에서 일어나는 변화를 의미한다.
두뇌의 기억은 네트워크 구조로 되어있다. 하나의 사실은 다른 여러 사실과 연결되어있다. 이는 우리가 정보를 잊어버리는 이유를 이해하기 위해 중요한 사실이다.
망각 곡선
1880년 헤르만 에빙하우스가 만든 공식으로 기억이 얼마나 오래 지속되는지 추정하기 위한 함수이다. 최근 연구에서 이 공식이 대체로 맞는다는 것을 확인했다.
간격을 두고 반복하기
해리 바릭의 연구 결과에 따르면 더 오랜 간격을 두고 학습해야 기억하는 비율이 높아진다.
플래시카드를 한달에 한번 다시 학습하면 오랫동안 기억하는데 충분하고, 이 정도는 충분히 할 수 있다. 짧은 기간에 여러번 반복하는 것은 오래 기억하는데 비효율 적이다.
3.4 문법을 더 오랫동안 기억하기
기억을 강화하는 두가지 테크닉
- 적극적으로 무언가를 기억해보려는 인출 연습
- 기존 기억에 새로운 지식을 연결하는 정교화
정보를 기억하는 두가지 형태
저장 강도
- 무언가를 LTM에 얼마나 잘 저장하고 있는가.
- 더 많이 학습할수록 기억은 점점 더 강해진다. 인출 강도
- 무언가를 얼마나 쉽게 기억해낼 수 있는지
ex) 전화번호를 알고 있는데 막상 잘 나오진 않는 경우 -> 저장강도는 높지만 인출강도는 낮음
저장 강도는 감소하지 않고, 인출 강도는 시간에 따라 약해지는 것으로 알려져있다. 기억은 결코 소실되지 않는다는 연구 결과도 있다. 따라서 이미 알고 있다고 생각하는 내용을 기억하려고 노력하면 추가 학습 없이도 인출 강도가 강화된다.
단지 보기만 해서는 안된다
프로그래밍 언어의 문법을 기억하려고 할 때 문제는 종종 저장강도가 아닌 인출 강도에 있다. LTM 어딘가에 저장되어있지만, 그것을 꺼내오지 못하는 것이다
정보를 외우는 것은 기억을 강화한다.
정보를 기억하려고 능동적으로 노력하는 것만으로도 배운 것을 많이 기억할 수 있다. 따라서 필요할 때마다 문법을 찾아보는 것은 좋은 방법이 아닌데, 너무 쉽게 정보를 찾기에 두뇌는 굳이 기억할 필요없다고 느끼기 때문이다.
따라서 다음번에 구글에서 문법을 찾기 전에 먼저 그것을 적극적으로 기억해보려고 시도해봐라. 기억이 나지 않더라도 그 노력이 인출 강도를 강화한다.
능동적 사고를 통한 기억력 강화
기억을 강화하는 두번째 방법 : 정보에 대해 능동적으로 생각하고 그것을 반추해본다. -> 정교화.
이 방법은 복잡한 개념을 학습할 때 특별히 효과가 좋다.
스키마타
기억은 다른 기억과 연결되어 네트워크 형태를 이룬다. 이렇게 조직된 방식을 스키마 혹은 스키마타라고 부른다.
새로운 정보를 학습하면 LTM에 저장하기 전에 먼저 스키마의 형태로 만들어진다. 이 스키마는 기존에 있는 스키마와 잘 맞을수록 더 잘 기억할 수 있다. 기억이 서로 연결되어 있으면 인출 강도도 더 높다.
기억이 저장될 때 기존 스키마에 맞추기 위해 기억이 바뀌는 경우도 많다. 이는 LTM에 처음 저장될 때 정보를 빠트리거나 변경할 수도 있다는 것이다.
정교화
기억이 처음 저장될 때 기억의 부호화를 강화할 수 있는 방법. 기억하고자 하는 내용을 기존 기억과 연관 지으면서 생각하고, 이렇게 한 결과 LTM에 이미 저장되어 있는 스키마타에 맞춰서 새로운 기억이 저장된다.
정교화 작업을 통해 연관된 기억의 네트워크가 강화되고, 새로운 기억이 들어왔을때 연관된 기억이 많을수록 기억을 인출하기에 용이해진다.
따라서 새로운 언어를 배울때 아래와 같은 질문에 대답하면서 연습할 수 있다.
- 새로운 개념이 어떤 다른 개념을 떠올리게 하였는가? 관련된 모든 개념을 적어봐라
- 위 개념에 대해 생각하면서 다음 질문들에 답해봐라
- 새로운 개념은 왜 이미 알고 있는 그 개념을 떠올리게 하였는가?
- 문법에 공통점이 있는가?
- 비슷한 환경에서 사용될 수 있는가?
- 이 새로운 개념은 이미 알고 있는 그 개념 대신 사용될 수 있는가?
- 동일한 목적을 달성하는 다른 코드가 있는가?
- 다른 언어에서는 같은 개념이 있으며 어떻게 다른가?
- 이 개념은 어떤 패러다임, 도메인, 라이브러리, 프레임워크와 잘 맞는가?
요약
프로그래밍 개념(문법 등)을 더 많이 기억하면 코드를 읽는데 도움이 된다. 업무가 중단되는 횟수도 줄어들게 된다.
이때는 플래시카드를 사용할 수 있으며, 한번 학습마다 긴 간격을 두고 꾸준히 반복하면 오래 기억할 수 있게 된다.
정보는 또 저장 강도와 인출 강도를 통해 저장된다. 저장 강도는 한번 외우면 약해지지 않는데, 인출 강도는 시간에 따라 약해지므로 적극적으로 무언가를 기억해내려고 노력하는 것이 기억 강화에 도움이 된다.
기억을 강화하는 방법
- 한번 연습마다 긴 간격을 두고 꾸준히 연습하기
- 적극적으로 기억하려고 노력하여 인출 강도를 강화하기
- 새로운 정보를 기존에 알고있는 정보와 연관지어 생각하기 (정교화)