🚥 리뷰 전
사람의 인지능력이 코딩에 미치는 영향은 무엇일까? 코딩은 그저 타고난 사람만이 잘 하는걸까?
이런 의문을 가질 때가 있다. 어떤 사람이 코드를 잘 짜고 이해하는지 혹은 어떻게 해야 코드를 잘 짜고 이해할 수 있는지에 대해 말이다.
마침 독특한 책 하나를 추천 받았다. 개발 추천 도서 리스트에도 있지만, 뇌의 인지과학과 코딩에 대해 연관지어 설명한 프로그래머의 뇌 라는 책이다.
코딩할 때 작업 속도를 변동짓는 요인은 무엇인지, 코드를 볼 때 우리의 뇌는 어떤 동작을 하는지에 대해 조금이나마 이해할 수 있었다.
📚 본격 리뷰
인지과학이란 인지주의적 관점(정보처리적 관점) 하에서, 인간이나 동물, 컴퓨터의 사고과정은 정보를 처리하는 과정으로 볼 수 있으며, 이는 하드웨어에 의존적이면서도 일부는 독립적으로 이루어진다는 관점이다.
1. 코드 더 잘 읽기
- 단위로 묶어서 분석하는 것을 청킹이라고 함
- 그룹으로 묶기 쉬운 코드를 작성하려면 디자인 패턴을 사용
- 표식(주석 등)은 개발자가 코드를 읽을 때 그 코드가 무엇을 하는지 이해하는 데 도움을 줌
- 모르는 정보에 대해 검색하기 이전에 먼저 그것을 능동적이고 의도적으로 기억하려고 시도
- 리팩터링은 코드가 외부적으로 제공하는 기능은 유지한 채 코드의 내부 구조를 개선하는 것을 의미
- 딱 한 번 호출되는 메서드는 특별히 주의 (인라인으로 리팩토링 가능)
- 인지 부하는 작업 기억 공간이 처리할 수 있는 한계를 나타냄. 인지 부하가 너무 크면 두뇌가 코드를 적절하게 처리할 수 없음
2. 코드에 대해 생각하기
- 프로그래머들은 코드를 읽을 때 일반적으로 코드의 초점을 먼저 찾음
- 프로그래머는 개발할 때 코드를 작성하는 것 보다 코드를 분석하는데 전체 시간의 60%를 사용
- 코드를 읽을 때 의식적으로 변수에 주목
- 정신 모델 이란 문제에 대해 생각할 때 두뇌의 외부에서 만들어지지 않은 모델
- 개념적 기계 는 컴퓨터가 무엇을 하고 있는지에 대한 추상적 표현으로 두뇌가 생각하는 과정에 사용
- LTM에 저장된 정보를 사용해서 새로운 내용을 쉽게 배우는 과정을 학습 도중 전이 라고 부름
- 무언가를 알고 있어 새로운 것을 배우거나 새로운 작업을 할 때 도움이 되는 전이를 긍정적 전이라고 함
- 자신이 옳다고 확신하더라도 여전히 틀릴 수도 있다는 것을 아는 것이 중요
3. 좋은 코드 작성하기
- 가장 많이 읽는 문서는 코드 내의 주석문과 이름
- 식별자의 이름을 camelCase로 자주 잓어하다 보면 이름을 청킹하고 의미 파악하는 일을 잘하게 됨
- 코드 스멜 은 작동은 하지만 개선의 여지가 있는 코드
- 코드를 명시적으로 연구하고 코드를 작성한 과정을 연구하는 것이 프로그래밍 능력을 강화하는데 도움이 됨
- 클래스, 함수 분석 및 다이어그램 관계도 작성
4. 코딩에서의 협업
- 모델의 일부가 코드와 별도로 저장되어 있으면 정신 모델을 빠르게 되찾을 수 있음
- 미래 기억 은 미래에 무언가를 할 것인가에 대한 기억
- 어떤 기술을 충분히 익히고 나면, 그 기술이나 지식을 배우는 것이 얼마나 어려웠는지 잊게 됨
- 전문가의 뇌는 LTM에 관련 기억을 많이 저장하는데 이 저장된 기억을 작업 기억 공간이 필요로 할 때마다 가져옴
- 전문가는 코드 및 코드와 관련 있는 모든 사항, 즉 오류 메세지, 테스트, 문제, 해결책 등을 매우 효과적으로 청킹 가능
➰ 리뷰 끝
마냥 코딩을 잘하고 싶다는 생각만 가지고 있었는데, 이 책은 코딩을 잘하기 위해서 가져야할 습관과 생각 방식에 대해 잘 설명해주고 있다. 그렇지만 인지 과학의 영역과 같이 얘기하기 때문에 이해하기 어려운 부분도 많다 🙁
특히 Part 4의 코딩에서의 협업은 실제 팀에서 적용할 내용들이 많이 들어있다. 당장 우리 팀에 새로운 인턴 혹은 업무 인계자가 생길 때, 만들어야 할 매뉴얼과 진행 방식에 대해 고민을 하게 만들었다.
코딩에 대한 기술적인 방법론보다 이런 심리학, 인지적 측면에서의 개발 방법론에 대한 책도 좋은 것 같다!
링크 : 프로그래머의 뇌