지난 포스팅에서 개발자가 코드를 보며 혼란을 느끼는 이유 3가지를 정리했다.
1. 지식의 부족
2. 정보의 부족
3. 처리능력의 부족
이번 포스팅에서는 3가지 원인을 사람의 인지과정을 통해서 정리해보려고 한다.
사람의 인지과정
사람의 기억은 장기기억과 단기기억이 있는데 새로운 데이터는 단기기억에 저장된다. 단기기억은 임시로 저장되는 공간으로 저장공간이 적어 RAM과 같다. 반복되는 단기기억은 데이터가 아닌 정보가 되어 장기기억으로 넘어간다. 장기기억은 SSD나 HDD와 같다.
사람은 단기기억과 장기기억에서 데이터와 정보를 인출하여 처리공간에 비교, 추론, 유추와 같은 처리를 한다. 이때의 처리공간은 CPU와 같다.
정리하면 단기기억공간을 STM(Short-term Memory), 장기기억공간을 LTM(Long-Term Memory) 그리고 작업기억공간을 Working Memory라 부른다.
예를들어,
public class BinaryCalculator{
public static void mian (Integer n){
System.out.println(Integer.toBinaryString(n));
}
}
사람이 코드를 읽으면 새로운 데이터들이 단기기억에 저장된다.
클래스명 : BinaryCalculator
메소드명 : mian
하지만 먼가 이상하다.
장기기억에서 인출된 정보에 의하면 public static void로 시작하는 메인함수는 mian이 아니라 main이다. 이처럼 사람은 새로운 정보와 기존정보를 '비교'하여 오류를 찾아낸다.
3가지 원인과 인지과정
1. 지식의 부족 (LTM)
2. 정보의 부족 (STM)
3. 처리능력의 부족 (Working Memory)
지식이 부족하다는 것은 장기기억에서 인출할 정보가 없다는 의미이고 정보의 부족은 단기기억으로 저장할 데이터가 없다는 의미이고 처리능력의 부족의 의미는 코드를 읽고 문맥을 파악하는 능력이 부족하다는 의미이다. 그러므로 코드를 보며 혼란을 일으키는 3가지를 해결하려면 LTM, STM, Working Memory를 상호보완적으로 잘 활용해야한다.
개인적으로 나는 LTM에 집착한다. 블로그를 하며 개념이해를 하여 장기기억으로 지식을 쌓는 일에 몰두한다. 그래서 장기기억에 저장된 내용이 나오면 쉽게 장기기억을 인출하여 일을 처리한다. 하지만 STM과 Working Memory 활용능력이 떨어진다.
문제를 신속히 파악하여 필요한 데이터를 구분하고(STM) 구분된 데이터와 지식으로 조합 및 비교하여 추론 및 유추하는 능력이 떨어진다. 그래서 시간을 두고 신속히 문제를 해결해야하는 상황에 취약하다. 그래서 나는 코드를 읽을때, STM과 Working Memory에서 발생하는 혼란을 자주 겪는다.
이 책을 통해, 새롭게 들어온 정보와 기존 정보를 구분하고 추론, 유추와 같은 사고과정을 회피하지 않고 작업기억공간을 잘 활용하는 두뇌활동 과정을 배우고 실천해봐야겠다.
참고자료
'개발교양도서 > 프로그래머의뇌' 카테고리의 다른 글
코드 청킹 연습하기(1) (0) | 2023.04.06 |
---|---|
코드 청킹 연습 (0) | 2023.04.05 |
코드 표식 파악 연습 (0) | 2023.04.05 |
코드 신속하게 읽는 방법 - 청크(Chunk) (0) | 2023.04.04 |
코드에 혼란을 느끼는 이유(1) (0) | 2023.03.03 |