19. 프로그래머의 뇌
망각 곡선에 대한 올바른 이해
프랑스 단어를 학습하는 실험
1그룹: 2주에 한 번, 26회 반복 -> 총 소요기간 52주
2그룹: 8주에 한 번, 13회 반복 -> 총 소요기간 104주
학습이 끝난 1년 뒤 기억한 단어의 비율
1그룹: 56%
2그룹: 76%
LTM의 문제를 개선하는 방법
20. 1그룹 학습 끝 2그룹 학습 끝
학습 시작
1그룹 1년 뒤 2그룹 1년 뒤
56% 76%
잘 기억하기 위해서는 더 오랜 기간동안 학습해야 한다.
1그룹이 2그룹에 비해 2배 더 많은 반복학습을 했지만
더 오래 학습한 2그룹이 더 잘 기억했다.
24. 프로그래머의 뇌
저장강도
정보를 얼마나 잘 저장하고 있는가
어떤 정보를 반복해서 학습할 때 강화된다. (Input)
인출강도
정보를 얼마나 쉽게 인출할 수 있는가
자기가 알고있는 정보를 인출하려고 노력할 때 강화된다. (Output)
LTM의 문제를 개선하는 방법
34. 프로그래머의 뇌
의미있는 단위 (Chunk) 로 묶으면 더 잘 기억할 수 있다.
STM의 문제를 개선하는 방법
더 잘 기억하면 더 잘 처리할 수 있다.
35. 프로그래머의 뇌
코드를 의미있는 단위 (Chunk) 로 묶으면 더 잘 기억할 수 있다.
더 잘 기억하면 더 잘 처리할 수 있다.
아키텍처
디자인 패턴
STM의 문제를 개선하는 방법
36. 프로그래머의 뇌
디자인 패턴 교육을 듣고나서
해당 디자인 패턴이 사용된 코드를 수정하는 시간이 단축되는 연구결과
Lutz Prechelt: Two controlled experiments assessing
the usefulness of design pattern documentation
in program maintenance(1998)
Marek Vokac: A Controlled Experiment Comparing
the Maintainability of Programs
Designed With And Without Design Patterns
- A Replication In A Real Programming Environment (2004)
STM의 문제를 개선하는 방법
37. 디자인 패턴 교육 전
패턴이 사용되지 않은 코드를 수정하는데 걸린 시간
패턴이 사용된 코드를 수정하는데 걸린 시간
디자인 패턴 교육 후
패턴이 사용되지 않은 코드를 수정하는데 걸린 시간
패턴이 사용된 코드를 수정하는데 걸린 시간
사분위수와 최소, 최대값을 보여주는 상자 수염 그림
48. 프로그래머의 뇌
더 추상적인 정신모델이 좋다 ( X )
더 구체적인 정신모델이 좋다 ( X )
LTM에 있는 여러 층위의 정신모델 중 현재 상황에 적합한 모델을 불러오는 것이 좋다 ( O )
추상화
49. 프로그래머의 뇌
정신 모델의 충돌
새로운 정신모델이 기존에 알던 정신모델과 충돌하는 경우가 있다.
이때 혼란이 발생한다.
발생하는 모순을 인지하고 정신모델을 수정해야함
추상화
50. 프로그래머의 뇌
객체와 클래스에 대한 여러가지 정신모델
"객체는 붕어빵이고 클래스는 붕어빵 틀이다"
함수는 일급객체이다.
그렇다면 함수는 붕어빵인가?
왜 붕어빵이지? 그럼 어떤 붕어빵 틀이 함수를 만들어내지?
객체는 붕어빵이 아니며 클래스는 붕어빵 틀이 아니다.
추상화
51. • 인지적 측면
• 일관성
• 도메인 정보
• LTM
네이밍이 중요한 이유
프로그래머의 뇌
52. 프로그래머의 뇌
이름은 코드베이스 내에서 일관성이 있어야 한다.
뇌가 LTM에 저장된 관련 정보를 더 쉽게 인출할 수 있다.
네이밍이 중요한 이유
53. 프로그래머의 뇌
코드의 도메인에 대한 정보를 잘 나타내야 한다.
LTM에서 연관된 추가정보를 제공한다.
PersonList보다 VisitedCustomerList
네이밍이 중요한 이유
54. 프로그래머의 뇌
LTM에 저장된 규약에 대한 정보
이미 알고있는 내용과 관련지어 생각한다.
Loop Counter i, j, k
3차원 좌표 (x, y, z)
네이밍이 중요한 이유
55. 아, 이 문제는 너무 어려워, 복잡해
아 내가 똑똑하지 않구나
발표의 목적
프로그래머의 뇌
이 문제는 이런 구조이고, 이런 종류의 인지부하를 요구하고 있구나
내 뇌가 지금 너무 많은 인지 부하를 겪고 있구나!
56. 발표의 목적
프로그래머의 뇌
인지 과부화 상황을 인지하고
문제가 요구하는 인지부하의 종류를 판별한다.
해당 인지부하를 낮추는 전략을 사용한다.