반응형
연구에 의하면 프로그래머의 시간 중 거의 60%를 코드를 ‘작성’하는 게 아니라 ‘이해’하는 데 사용한다고 한다. 따라서 정확도를 유지하면서 코드를 빨리 이해하도록 향상한다면 프로그래밍 기술이 크게 개선되는 셈이다
1. 코드를 신속하게 읽기
우리는 코드를 읽는 법보다 작성하는 법을 훨씬 더 많이 연습한다. 프로그래밍을 처음 배울 때부터 문제를 어떻게 풀고 그것을 코드로 어떻게 구현하는지를 집중적으로 훈련하지만 코드를 읽는 연습은 전무할 것이다.
- 코드를 신속하게 읽으면 좋은 점
- 코드를 다시 찾아보는 횟수를 줄일 수 있다
- 코드를 찾는 데 허비할 시간에 버그를 고치거나 새로운 기능을 추가할 수 있다.
- 두뇌에서 무슨 일이 일어나는가?
/* 삽입 정렬을 구현한 자바 프로그램 */
public class InsertionSort {
public static void main(String[] args) {
int[] array = {45, 12, 85, 32, 89, 39, 69, 44, 42, 1, 6, 8};
int temp;
for (int i = 1; i < array.length; i++) {
for (int j = i; j > 0; j--) {
if (array[i] < array[j - 1]) {
temp = array[i];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}
- 위 코드를 3분간 본 후 다시 작성하게 되면 변수명이나 변수의 값등은 STM에 저장되고 for루프와 삽입 정렬 알고리즘을 작성할 때는 LTM에 저장된 지식을 사용한다.
- 위 코드는 직관적인 변수명과 의도를 파악하기 쉽기 때문에 코드를 재현할 때 크게 어렵지 않다.
- 생소한 코드를 읽는 것이 어려운 이유
- STM의 용량에 제한이 있기 때문이다. 코드의 정보를 짧은 시간 동안 모두 저장하고 처리하는 것은 물리적으로 불가능하다. 즉, STM은 정보를 저장하는 시간뿐만 아니라 크기 또한 제약된다.
- 사람의 STM 공간은 1바이트도 되지 않으며, 이 작은 용량을 극복하기 위해 LTM과 협업하여, 읽거나 기억 정보를 이해한다.
2. 기억의 크기 제한을 극복하기
- 단위로 묶어라, 청크(chunk)
- 특정한 주제에 대해 두뇌가 더 많은 정보를 저장하고 있다면 입력된 정보를 효율적으로 청크로 묶는 것이 수월해진다.
- 실제 작동 중인 코드를 보여 주면 전문가는 초보자보다 코드를 더 잘 기억하지만 무작위로 섞은 코드는 별 차이가 없다.
3. 읽는 것보다 보는 것이 더 많다
정보는 STM에 도달하기 전에 감각 기억 공간이라는 영역을 통과한다. 감각 기억 공간은 시각, 청각, 미각, 후각, 촉각에 대해 각자의 임시 저장 공간이 있지만 그중 프로그래밍과 관련 있는 영상 기억 공간이라는 시각 관련 기억 공간에 대해서만 다룬다.
- 영상 기억 공간
- 조지 스펄링의 영상 기억 실험을 통해 우리가 무언가 읽을 때 먼저 영상 기억 공간에 저장되지만, 영상 기억 공간에 저장된 모든 정보를 STM이 처리할 수 없다는 것을 알 수 있다.
- 즉, 코드에 대해 STM이 처리할 수 있는 것보다 더 많은 정보를 영상 기억 공간에 저장하는 것이 이론적으로는 가능하다.
- 기억하는 대상이 중요한 것이 아니고 기억하는 방식이 중요하다
- 매키던 연구팀이 실험에 사용했던 키워드들 외워보기를 통해 숙련된 개발자와 초급 개발자가 코드에 대해 생각하는 방식이 다르다는 것을 확인할 수 있다.
Chunk로 묶을 수 있는 코드를 작성하는 방법
- 디자인 패턴의 사용
- 티히의 연구를 통해 디자인 패턴에 대한 교육을 받은 후에 코드를 수정할 때는 패턴을 사용하는 코드에 대해서는 수정 시간이 빨라짐을 알 수 있다
- 또한 패턴의 종류에 따라 시간 단축도 다르다.
- 주석문 쓰기
- ‘이 함수는 주어진 이지 트리를 중위 순회하며 프린트한다’ 같은 고수준 주석문은 코드를 청크 단위로 쪼개는 데 도움이 된다.
- 표식 남기기
- 단순 표식: 변수명 같이 코드의 문법을 통해 의미가 자명한 표식
- 복합 표식: 단순 표식으로 이뤄진 조금 더 큰 단위의 코드
- 의도적 연습!
발제문
- 저도 이 책을 읽기 전까지는 코드를 볼 때 어떤 방식으로 코드를 이해하고 활용하고 있었는지 인식을 못했었는데 책을 읽고 잠시 생각해보니 정말로 코드를 청크 단위로 나눠서 읽고 이해하고 기억하더라고요! 책에서는 코드를 그룹화하는 방법으로 디자인 패턴의 사용, 주석문 쓰기, 표식 남기기가 소개되었는데 자신만의 코드 그룹화의 팁이 있으신가요? 있다면 공유 부탁드립니다 🙇🏻♂️
반응형
'독서 > 2024' 카테고리의 다른 글
[프로그래머의 뇌] CHAPTER6 코딩 문제 해결을 더 잘하려면 (1) | 2023.05.14 |
---|---|
[프로그래머의 뇌] CHAPTER5 코드를 더 깊이 있게 이해하기 (1) | 2023.05.13 |
[프로그래머의 뇌] CHAPTER4 복잡한 코드 읽는 법 (0) | 2023.05.12 |
[프로그래머의 뇌] CHAPTER3 프로그래밍 문법 빠르게 배우기 (0) | 2023.05.11 |
[프로그래머의 뇌] CHAPTER1 코딩 중 겪는 혼란에 대한 이해 (0) | 2023.05.10 |