프로그래머의 뇌 요약

dasd412·2022년 6월 4일
0

목록 보기
1/6

사람의 두뇌 구성

  1. 장기 기억 공간 (LTM) : 기억하는 내용을 지식으로 반영구적으로 저장하는 공간 (ex : 언어의 문법 지식 등)
  2. 단기 기억 공간 (STM) : 정보를 수집할 때 일시적으로 저장하는 공간
    ( ex: 코드 내의 변수 명이나 변수의 값)
  3. 작업 기억 공간 : 사고나 추론할 때 사용하는 영역 (STM에서 얻은 새로운 정보와 LTM 내에서 검색한 관련 지식을 이용하여 사고한다.)

LTM 내 지식이 풍부할수록 STM 과부하가 적다.

사람의 STM은 정보를 최대 6개까지만 저장이 가능하다.
그런데 LTM 내 지식이 풍부할수록, (코드를 읽는 도중에서 얻는) 많은 정보를 청크라는 하나의 묶음으로 STM에 저장이 가능해진다. 즉, STM 과부하가 적어진다.


긴 간격을 두고 반복하기

실험 결과 가장 긴 간격을 두고 반복했던 그룹이 더 기억하는 비율이 높았다. 즉, 오랜 간격을 두고 학습해야 한다. (연습을 긴 시간에 걸쳐 정기적으로 고르게 하자.)

ex) cs 공부 2달에 1번씩 복습하기


제일 좋은 기억법은 인출 방식

개인 경험 상으로도 cs 면접 대비할 때, 화이트 보드에 직접 설명하는 방식 (두뇌 인출 방식)이 단순히 책이나 그림만 보는 것보다 몇배는 효과적이었다.


코드와 해설에서 배우기

실험 결과 풀이된 예제 (해답, 레시피 등)를 분석해서 학습한 그룹이 스스로 문제를 풀면서 학습한 그룹보다 학업 성과가 좋았다. 전자의 경우는 일반적인 규칙을 새로운 문제에도 적용할 수 있었지만, 후자의 경우는 당면한 문제에 더 집중했다고 한다.

개인적인 경험에서도, 일주일 동안 끙끙 고민해도 안 풀리는 알고리즘 문제는 안풀리더라. 그래서 공부 방식을 바꿔서 고민하는 시간을 30분으로 줄였다. (30분 내로 방향이 안 잡히면 내 지식 커버 범위가 아니라고 봤다.)

예를 들자면, 선형 탐색만 알고 있는 사람은 해당 방법으로만 문제를 풀려고 할 것이다. 그런데 요구 사항이 시간 복잡도 log(n)이라 하자. 과연 이 사람이 계속 끙끙 앓아도 해당 문제를 풀 수 있을까? 대부분은 무리일 것이다. 이 경우엔 이분 탐색이라는 새로운 지식을 학습하는 게 더 효율적이다.

즉, 단순히 생각을 바꾸라는 등의 사고 전환 요구는 비효율, 비현실적인 방식이다. 생각을 바꾸려면 일단 많이 알아야 한다. 많이 알아야만, 알고 있는 여러 가지를 조합해서 새로운 생각을 해낼 수 있는 것이다.


프로그래밍 중 이루어지는 활동들

  1. 검색 : 코드베이스 살피기 + 특정 정보 검색하기 -> STM 부하 초래
    (노트 또는 주석문을 활용하여 코드를 살펴본 이유를 적어 놓으면 도움이 된다.)

  2. 이해 : 코드 읽기 + 이해하기 -> 작업 기억 공간 부하 초래

  3. 전사 : 단순 코딩 -> LTM 부하 초래

  4. 증가 : 검색 + 이해 + 전사 -> 세 곳 모두 부하 초래

  5. 탐구 : 코드 작성 + 실행 + 테스트 수행 + 리팩토링 등 -> 세 곳 모두 부하 초래


업무 중단 대비하기

작업에 몰입하다가 누가 질문하는 등의 일이 생기면, 그 몰입의 흐름이 끊긴다. 이를 중단이라 한다.

이를 대비하는 방법은 다음과 같다.
1. 주석문을 활용하여 코드의 목표, 해당 접근 방식을 선택한 이유와 같이 왜 이런 결정을 하게 됬는 가를 적어 놓자.
2. 나중에 뭐 해야할지 메모하자.
3. 하위 목표를 주석으로 작성해 놓자.

하위 목표를 예를 들면, 다음과 같다.

# 파일 읽기
# 파싱 하기
# 파일 닫기

새로운 팀원의 작업은 한 종류의 프로그래밍 활동으로만 제한

새로운 팀원은 도메인, 코드베이스 등 기존 팀원보다 모르는게 너무나 많다. 그래서 적응하기 어려워하는 사람이 많다. 이 경우엔 검색, 이해, 전사, 증가, 탐구 모두를 새 팀원에게 시키면 멘붕이 온다. 따라서 이 5가지 종류 중 하나를 선택해서 하나씩 해결하게 하자.


별점 : 4.5 / 5

profile
시스템 아키텍쳐 설계에 관심이 많은 백엔드 개발자입니다. (Go/Python/MSA/graphql/Spring)

0개의 댓글