11장 코드를 작성하는 행위
1. 프로그래밍 중 이루어지는 다양한 활동
- 검색
- 코드베이스를 살펴보고 특정 정보를 검색하는 작업
- 검색하는 동안 코드를 읽고 실행하는 것이 주된 일이지만, 중단점과 디버거를 사용할 수도 있고, 코드를 실행해보며 출력문으로 확인하기도 한다.
- 검색은 STM에 무리를 가한다.
- 이해
- 코드를 읽고 실행해봄으로써 그 기능을 이해하게 된다.
- 개발자는 평균적으로 기존 소스 코드를 이해하는 데 최대 60%의 시간을 소비한다.
- 이해는 작업 기억 공간에 부담을 주는 활동이기 때문에 코드를 이해하기 쉽게 리팩토링하는 것이 도움이 된다.
- 이해활동을 위한 가장 좋은 전략은 작업 기억 공간을 지원하는 것이다.
- 코드에 대한 모델을 만들어보고 새로운 정보를 인출할 때마다 그 모델을 갱신해보라.
- 전사
- 증가
- 검색, 이해, 전사가 합쳐진 활동. 새 기능을 추가하거는 것은 코드가 늘어나는 것이다.
- 증가는 여러 활동을 동반하기 때문에 3가지 기억 체계에 모두 부하를 초래할 수 있다.
- 어느 기억 공간이 가장 영향을 많이 받을지는 개인적 경험에 따라 달라진다.
- 프로그래밍 언어를 잘 알고 있다면 문법을 기억하기 위한 LTM의 노력이 많이 필요하지 않을 수 있다.
- 반면 코드베이스를 잘 알고 있다면 코드를 검색하고 이해할 때 작업 기억 공간과 STM에 가하는 부하가 크지 않을 수 있다.
- 탐구
- 코드를 탐구하는 것.
- 무엇을 해야 할지 분명한 생각이 떠오르지 않을 때, 프로그래밍을 통해 문제의 도메인과 사용해야 하는 프로그래밍 구성 요소를 명확히 알 수 있다.
2. 프로그래머의 업무 중단
- 프로그래밍 작업에는 워밍업이 필요하다.
- 프로그래밍에서 일종의 워밍업 및 냉각 단계가 있으며 그 중간에 가장 힘든 작업이 수행된다.
- 전문 프로그래머들은 코드의 정신 모델을 구축하고 전사 작업을 시작할 준비를 하는 이 워밍업 시간이 있다.
- 중단 후에는 어떻게 되는가?
- 업무가 중단된 후 코드 작성 작업을 다시 시작하는 데 약 25분이 소요됐다.
- 개발자들은 원래 하던 코딩 작업으로 돌아갈 때 작업 기억 공간이 원래 작업하던 코드에 대한 중요한 정보를 잃어버린다.
- 원래 작업 상황으로 돌아가기 위해서는 의도적인 노력이 필요했다.
- 중단에 잘 대비하는 방법
- 정신 모델 저장
- 정신 모델의 일부가 코드와 별도로 저장되어 있으면 정신 모델을 빠르게 되찾을 수 있다.
- 일부 개발자들은 주석문을 광범위하게 사용하는 것을 꺼린다. 코드 그 자체가 문서이며, 주석문은 불필요하다는 것이다.
- 그러나 코드는 프로그래머의 사고 과정을 거의 설명하지 못하므로 대부분 작성자의 정신 모델을 적절하게 표현하지 못한다.
- 우리는 코드에 특정 접근 방식은 선택한 이유, 코드의 목표 또는 구현을 위해 고려한 다른 대안 같은 내용을 코드에 기록해놓는 것에 익숙하지 않다.
- 이런 종류의 내용이 어디에도 기록되지 않는다면, 기껏해야 암묵적으로 발견될 수밖에 없는데, 이것은 분명히 시간이 오래 걸리는 과정이다.
- 미래 기억 향상
- 미래기억은 미래에 무언가를 할 것에 대한 기억이다.
- 개발자들은 미래에 해야 할 것을 잊어버리지 않기 위해 작업 중인 코드에 TODO 주석을 달곤 한다.
- 하위 목표 라벨 붙이기
- 문제를 어떤 작은 단계로 나눌 수 있는지 명시적으로 기록한다.
- 멀티태스킹에 대한 고찰
- 멀티태스킹은 오히려 더 비효율적이다.
- 잘 아는 내용이니 넘어가겠음.