노트

청킹과 코드 읽기

Chunking

개발 문화#learning · 연결된 개념 9개

쉽게 말하면

청킹은 전화번호 열한 자리를 숫자 열한 개가 아니라 세 덩어리로 외우는 것과 같아요. 머릿속에 한 번에 붙잡을 수 있는 칸이 적어서, 크게 묶을수록 코드를 더 많이 들고 읽을 수 있어요.

비유가 깨지는 곳 전화번호는 하이픈이 경계를 알려 주지만 코드는 읽는 사람의 지식이 경계를 정해요. 버블 정렬을 아는 사람만 그 반복문을 덩어리 하나로 보듯, 아는 패턴이 많아야 크게 묶여요.

단기 기억(Short-Term Memory)은 한 번에 몇 개(대략 2~6개)의 항목만 붙잡을 수 있다. 뇌는 이 한계를 넘기 위해 여러 정보를 의미 있는 덩어리, 곧 청크(chunk)로 묶는다(Chunking). 무엇을 하나의 덩어리로 볼 수 있는지는 장기 기억(Long-Term Memory)에 쌓인 지식이 정한다.

코드에서

for i in range(len(xs)):
    for j in range(len(xs) - 1 - i):
        if xs[j] > xs[j + 1]:
            xs[j], xs[j + 1] = xs[j + 1], xs[j]
  • 초보자는 for, range, 인덱스, 비교, 교환을 하나하나 따로 붙잡아야 해서 금방 단기 기억이 찬다
  • 경험자는 "버블 정렬"이라는 덩어리 하나로 기억한다

읽기 쉬운 코드가 돕는 것

  • 익숙한 디자인 패턴과 관용구는 그 자체로 큰 청크가 된다. 이름만 보고 구조를 짐작할 수 있다
  • 주석과 일관된 표식(이름 규칙, 파일 구조)은 덩어리의 경계를 알려 준다
  • 반대로 거의 같지만 조금씩 다른 중복 코드는 묶기 어렵게 만든다 → DRY 원칙

자기 진단

낯선 코드를 몇 분 보고 덮은 뒤 기억나는 대로 다시 써 본다. 잘 떠오르는 부분은 내가 이미 아는 패턴이고, 떠오르지 않는 부분이 공부할 곳이다. 문법을 외워 두면 청킹이 쉬워지는 이유도 여기에 있다 → 인출 연습과 간격 반복

덩어리가 크게 묶일수록 작업 기억의 부담이 줄어든다 → 인지 부하. 전문가가 코드를 도메인 개념 단위로 생각하는 방식은 상호 참조 전략와 이어진다.

출처: 『프로그래머의 뇌』 펠리너 헤르만스 (원서 The Programmer's Brain)

연결된 개념

이 노트를 가리키는 문서

뜻이 가까운 노트

  • 코드 냄새

    당장 버그는 아니지만 이해나 변경 비용을 높이는 구조적 신호. 리팩터링을 언제 시작하고 멈출지에 정확한 공식은 없어서, 냄새라는 어휘로 직관을 공유한다.

  • 정리(Tidying)

    동작을 바꾸지 않는 아주 작은 구조 변경. 켄트 벡은 리팩터링이라는 말이 "기능 개발 중간의 긴 공사"처럼 쓰이며 동작 보존 원칙이 흐려지자, 더 작고 겁나지 않는 단위를 정리라는 이름으로 따로 불렀다. refactoring의 부분집합이다.

  • 구성요소 줄이기

    셀 수 있는 모든 구성요소(파일, 폴더 깊이, 클래스, 함수, 분기, 변수, 테이블, 필드, 테스트 케이스…)는 비용이라는 관점. 심플 디자인의 네 번째 규칙을 실무 기준으로 풀어낸 것이다.

  • 변경하기 쉬운 프런트엔드 코드

    Frontend Fundamentals는 "좋은 프런트엔드 코드 = 변경하기 쉬운 코드"라는 관점에서 가독성(Readability)·예측 가능성(Predictability)·응집도(Cohesion)·결합도(Coupling) 네 기준과 구체적인 기법을 정리한 공개 가이드다. 네 기준은 서로 부딪치기도 해서 상황에 맞게 무엇을 우선할지 고르는 것이 핵심이다.

  • LLM 사용 습관

    LLM이 어떻게 만들어지는지 알고, 컨텍스트를 깨끗하게 관리하고, 모델과 도구를 골라 쓰고, 답은 초안으로 보고 검증하는 습관.

보기 옵션