프로그래머의 뇌

Do_Doolly·2023년 5월 6일
0

책책책

목록 보기
9/10
post-thumbnail
post-custom-banner

🚥 리뷰 전

사람의 인지능력이 코딩에 미치는 영향은 무엇일까? 코딩은 그저 타고난 사람만이 잘 하는걸까?
이런 의문을 가질 때가 있다. 어떤 사람이 코드를 잘 짜고 이해하는지 혹은 어떻게 해야 코드를 잘 짜고 이해할 수 있는지에 대해 말이다.

마침 독특한 책 하나를 추천 받았다. 개발 추천 도서 리스트에도 있지만, 뇌의 인지과학과 코딩에 대해 연관지어 설명한 프로그래머의 뇌 라는 책이다.

코딩할 때 작업 속도를 변동짓는 요인은 무엇인지, 코드를 볼 때 우리의 뇌는 어떤 동작을 하는지에 대해 조금이나마 이해할 수 있었다.


📚 본격 리뷰

인지과학이란 인지주의적 관점(정보처리적 관점) 하에서, 인간이나 동물, 컴퓨터의 사고과정은 정보를 처리하는 과정으로 볼 수 있으며, 이는 하드웨어에 의존적이면서도 일부는 독립적으로 이루어진다는 관점이다.

  • 나무위키

1. 코드 더 잘 읽기

  • 단위로 묶어서 분석하는 것을 청킹이라고 함
  • 그룹으로 묶기 쉬운 코드를 작성하려면 디자인 패턴을 사용
  • 표식(주석 등)은 개발자가 코드를 읽을 때 그 코드가 무엇을 하는지 이해하는 데 도움을 줌
  • 모르는 정보에 대해 검색하기 이전에 먼저 그것을 능동적이고 의도적으로 기억하려고 시도
  • 리팩터링은 코드가 외부적으로 제공하는 기능은 유지한 채 코드의 내부 구조를 개선하는 것을 의미
    • 딱 한 번 호출되는 메서드는 특별히 주의 (인라인으로 리팩토링 가능)
  • 인지 부하는 작업 기억 공간이 처리할 수 있는 한계를 나타냄. 인지 부하가 너무 크면 두뇌가 코드를 적절하게 처리할 수 없음

2. 코드에 대해 생각하기

  • 프로그래머들은 코드를 읽을 때 일반적으로 코드의 초점을 먼저 찾음
  • 프로그래머는 개발할 때 코드를 작성하는 것 보다 코드를 분석하는데 전체 시간의 60%를 사용
  • 코드를 읽을 때 의식적으로 변수에 주목
  • 정신 모델 이란 문제에 대해 생각할 때 두뇌의 외부에서 만들어지지 않은 모델
    • 눈사람에게 스웨터를 입으면 더 빨리 녹을까?
  • 개념적 기계 는 컴퓨터가 무엇을 하고 있는지에 대한 추상적 표현으로 두뇌가 생각하는 과정에 사용
  • LTM에 저장된 정보를 사용해서 새로운 내용을 쉽게 배우는 과정을 학습 도중 전이 라고 부름
  • 무언가를 알고 있어 새로운 것을 배우거나 새로운 작업을 할 때 도움이 되는 전이를 긍정적 전이라고 함
  • 자신이 옳다고 확신하더라도 여전히 틀릴 수도 있다는 것을 아는 것이 중요

3. 좋은 코드 작성하기

  • 가장 많이 읽는 문서는 코드 내의 주석문과 이름
  • 식별자의 이름을 camelCase로 자주 잓어하다 보면 이름을 청킹하고 의미 파악하는 일을 잘하게 됨
  • 코드 스멜 은 작동은 하지만 개선의 여지가 있는 코드
  • 코드를 명시적으로 연구하고 코드를 작성한 과정을 연구하는 것이 프로그래밍 능력을 강화하는데 도움이 됨
    • 클래스, 함수 분석 및 다이어그램 관계도 작성

4. 코딩에서의 협업

  • 모델의 일부가 코드와 별도로 저장되어 있으면 정신 모델을 빠르게 되찾을 수 있음
  • 미래 기억 은 미래에 무언가를 할 것인가에 대한 기억
    • To-Do 주석
  • 어떤 기술을 충분히 익히고 나면, 그 기술이나 지식을 배우는 것이 얼마나 어려웠는지 잊게 됨
  • 전문가의 뇌는 LTM에 관련 기억을 많이 저장하는데 이 저장된 기억을 작업 기억 공간이 필요로 할 때마다 가져옴
  • 전문가는 코드 및 코드와 관련 있는 모든 사항, 즉 오류 메세지, 테스트, 문제, 해결책 등을 매우 효과적으로 청킹 가능

➰ 리뷰 끝

마냥 코딩을 잘하고 싶다는 생각만 가지고 있었는데, 이 책은 코딩을 잘하기 위해서 가져야할 습관과 생각 방식에 대해 잘 설명해주고 있다. 그렇지만 인지 과학의 영역과 같이 얘기하기 때문에 이해하기 어려운 부분도 많다 🙁

특히 Part 4의 코딩에서의 협업은 실제 팀에서 적용할 내용들이 많이 들어있다. 당장 우리 팀에 새로운 인턴 혹은 업무 인계자가 생길 때, 만들어야 할 매뉴얼과 진행 방식에 대해 고민을 하게 만들었다.

코딩에 대한 기술적인 방법론보다 이런 심리학, 인지적 측면에서의 개발 방법론에 대한 책도 좋은 것 같다!

링크 : 프로그래머의 뇌

profile
생각하면 복잡하니까 일단 해보자
post-custom-banner

0개의 댓글