graph TB
subgraph MAT["행동 = M × A × T"]
M["M (Motivation)<br/>동기:<br/>양가감정 극복"]
A["A (Ability)<br/>능력:<br/>장기기억 자동화"]
T["T (Trigger)<br/>트리거:<br/>매일의 시스템"]
end
subgraph CoreProblem["능력(A)의 핵심"]
STM["단기기억 7±2<br/>기초적인 부분에 소진됨"]
Fragment["지식의 조각<br/>vs<br/>전문가 사고방식"]
Search["검색으로<br/>해결 안 됨"]
end
subgraph Solution["해법"]
LTM["장기기억에<br/>자동화"]
Mental["정신표상<br/>복사"]
Free["단기기억을<br/>고차원 사고에"]
end
A --> CoreProblem
STM --> LTM
Fragment --> Mental
Search --> LTM
LTM --> Free
Mental --> Free
Mermaid
복사
1. 동기(M): 양가감정과 그 너머의 병목
준호에게 동기(Motivation)는 있습니다. 그런데 동기가 있는데도 행동이 나오지 않는 경우가 있습니다. 마음속에 두 가지 대화가 동시에 존재하기 때문입니다.
"제대로 공부해야지"
"근데 지금도 일할 수는 있잖아?"
이를 양가감정이라고 합니다. 변화를 원하면서도 동시에 주저하는 것입니다. 담배를 끊고 싶으면서도 피우고 싶어하는 것처럼 말입니다. 이것은 자연스럽습니다. 문제는, 이 양가감정을 어떻게 다루느냐입니다.
전통적 접근은 설득입니다. "당장 공부해야 해요!" "안 하면 뒤쳐져요!"
그런데 역설적이게도, 더 설득할수록 저항이 커집니다. 이를 "교정 반사(righting reflex)"라고 합니다. 외부에서 압력을 가할수록, 내부의 저항이 강해지는 겁니다.
이때 '동기면담(Motivational Interviewing)'이 유용할 수 있습니다. 동기면담이란 내담자의 동기를 끌어내어 변화를 만들어내는 대화 방식입니다.
•
"왜 공부하지 않나요?" 
•
"당신에게 공부가 도움이 될 이유를 몇 가지 떠올려볼 수 있을 거 같아요." 
답을 주는 게 아니라, 스스로 이유를 찾게 하는 겁니다. 전자는 방어적으로 만들고, 후자는 생각하게 만듭니다. 변화의 이유를 외부가 아닌 내부에서 찾을 때, 동기가 지속됩니다.
그런데 동기면담을 하다 보면, 흥미로운 일이 생깁니다. 대부분의 상황에서 내담자는 변화하고 싶다고 합니다. 그런데 동시에 이런 말도 합니다.
"공부하고 싶긴 한데... 시간이 없어요"
"시도해봤는데... 잘 안 되더라고요"
"혼자 하려니까 막막해요"
이것을 유지대화라고 합니다. 변화하지 않으려는 이유를 말하는 것입니다. 변화를 막는 병목의 신호입니다. 내담자의 변화를 막는 핵심이 여기에 있습니다.
병목을 타고 내려가봅시다. 내담자는 왜 변화하고 싶으면서도 "시도해봤는데 안 되더라고요"라고 할까요?
준호의 경우, 성격상 신경성(Neuroticism)이 다소 높습니다. 새로운 것을 배울 때 불안해하고, 실수를 두려워하고, 혼자 고민하다 포기하는 패턴이 있습니다.
단순히 "용기가 없다"고 치부할 문제가 아닙니다. 불안은 단기기억을 잡아먹고, 실제로 학습을 방해합니다.
준호가 새로운 개념을 배울 때, 머릿속에서 두 가지가 동시에 돌아갑니다:
"이 개념을 이해하자"
"이해 못하면 어쩌지"
우리의 단기기억은 7±2개밖에 담지 못합니다. 그런데 불안 때문에 정작 학습에 쓸 단기기억이 남아있지 않게 됩니다. 이 상태에서 준호에게 ‘리액트 배우는 법’만 알려주면 될까요? 안 됩니다. 준호의 불안이 학습을 막고 있으니까요.
지식만 전달하는 것에 한계가 있는 이유입니다. 동기면담의 원리로 대화하면서, 학습자의 병목을 코치와 함께 제거해나가야 합니다. 스스로 "하고 싶다"는 이유를 찾을 때, 그리고 "해도 괜찮다"는 안전감을 느낄 때, 학습자는 변화를 향해 움직일 수 있습니다.
혼자 2시간 vs 도움 5초 + 이해 2시간
어떤 사람들은 ‘학습자가 마음을 굳게 먹으면 될일 아닌가?’ 생각할 수도 있습니다. 하지만 그렇지 않습니다.
예를 들어보겠습니다. 준호는 막히면 혼자 끙끙 앓습니다. 2시간 동안 구글링하고, 스택오버플로우를 뒤지고, GPT에게 물어보다가 결국 포기합니다.
문제는 2시간 동안 "뭐가 문젠지 찾는 데" 썼다는 겁니다. 의존성 배열을 빼먹어서 무한 루프가 생겼는데, 준호는 "왜 무한 루프가 생기는가"를 2시간 동안 고민합니다. 실제 문제는 5번째 줄에 []를 안 쓴 것뿐인데요.
코치에게 5초만 보여주면? "의존성 배열 빠졌네요" 끝입니다. 그럼 준호는 나머지 1시간 59분 55초를 더 중요한 주제인 "왜 의존성 배열이 필요한가"를 학습하는데 쓸 수 있습니다.
A. "어디가 틀렸지?" (2시간)
•
코드를 100번 읽고
•
구글링하고
•
다른 코드와 비교하고
•
하나하나 지워가면서 테스트하고
•
지쳐서 포기
B. "왜 이게 필요하지?" (5초 진단 + 2시간 이해)
•
코치가 5초 만에 "여기"
•
아, 그럼 "왜 의존성 배열이 필요한가?"
•
"의존성 배열이 없으면 왜 무한 루프가 생기는가?"
•
"그럼 의존성 배열에 무엇을 넣어야 하는가?"
•
"아, 이것이 리액트의 렌더링 모델과 어떻게 연결되는가?"
A는 시간을 "문제 찾기"에 소진합니다. B는 "이해하기"에 씁니다. A는 헤매다 끝. B는 똑똑해집니다.
준호는 도움 청하는 것을 두려워합니다. ‘멍청해 보이면 어쩌지’ 하는 걱정에 혼자 머리를 싸매고 시간과 에너지를 모두 낭비합니다. 결국 혼자 2시간 끙끙대고도 배운 것이 없게 되었습니다.
편하게 도움을 청할 수 있는 학습 분위기를 조성하는 게 중요한 이유입니다.
2. 능력(A): 자동화 된 패턴인식 시스템을 가지려면?
그렇다면 구체적으로 무엇을 배워야 할지 얘기해볼 차례입니다. 무엇이 준호의 머릿속에 쌓여야 할까요?
준호와 시니어 개발자를 비교해봅시다. 준호는 리액트 기초를 압니다. useState, useEffect, props... 다 써봤습니다. 그런데 둘은 같은 코드를 다르게 봅니다. 준호는 "useState가 있고, useEffect가 있고..." 하나하나 읽습니다. 반면 시니어는 "아, data fetching 패턴이네" 하고 3초 만에 파악합니다.
차이가 뭘까요? 바로 패턴으로 인식되는 덩어리의 크기에 비밀이 숨어 있습니다.
전문성의 본질: 자동화가 만드는 여유
체스 마스터는 체스판을 볼 때, "이 말은 여기 있고, 저 말은 저기 있고..."를 세지 않습니다. "시실리안 디펜스"라는 패턴이 자동으로 보입니다. 이것이 장기기억에 있기 때문입니다. 그래서 단기기억은 "다음 세 수를 어떻게 둘까"에 온전히 집중할 수 있습니다.
의사가 환자를 진찰할 때, "심장은 왼쪽에 있고, 폐는 이렇게 생겼고..."를 매번 떠올리지 않습니다. 해부학이 장기기억에 자동화되어 있습니다. 그래서 단기기억은 "이 증상들의 조합은 무엇을 의미하는가"에 집중할 수 있습니다.
준호에게 필요한 것도 바로 이 능력입니다. useState나 useEffect 같은 기본 개념을 장기기억에 자동화시켜서, 단기기억을 "더 나은 설계", "더 나은 추상화"를 생각하는 데 쓸 수 있게 되는 것입니다.
전문가는 기본 패턴을 장기기억에 자동화함으로써, 단기기억을 고차원 사고에 쓸 수 있게 된 사람입니다.
왜 자동화가 능력인가: 단기기억의 한계
이는 인간 뇌의 근본적 작동 원리와 연관되어 있습니다. 인간의 단기기억 용량은 7±2개에 불과합니다. 전화번호 조차 외우기가 어려운 이유입니다.
준호가 코드를 볼 때, 머릿속에서는 이런 일이 벌어집니다:
•
useState의 의미 (1)
•
useEffect의 동작 (2)
•
의존성 배열 (3)
•
props의 흐름 (4)
•
리렌더링 타이밍 (5)
•
...
하나하나 읽는 동안 앞에서 본 걸 잊어버립니다. 세부적인 내용을 하나하나 인식하기 때문에 단기기억의 용량을 초과하기 십상입니다. 머리가 복잡하고 금방 피로해집니다.
시니어 머릿속에는 "data fetching 패턴"이 저장되어 있습니다. 수백 번 써본 경험이 장기기억에 쌓인거에요. 그래서 새로운 코드를 보면 자동으로 “아, 이거”라고 인식합니다.
그리고 이 패턴 단위로 단기기억 슬롯 1개만 사용합니다. 나머지 6개로 "이 패턴이 적절한가?", "확장 가능한가?" 같은 똑똑한 질문을 처리합니다.
더 복잡한 사고를 하면서도 초보자보다 인지적 자원을 덜 쓰는 겁니다. 거꾸로 생각해보면, 내가 무언가를 할 때 머리가 바쁘고 버겁게 느껴진다면 그 일이 내게 충분히 숙련되지 않은 거라고 생각해 볼 수도 있습니다.
모든 문제를 검색으로 해결할 수 없는 이유
장기기억이라고 하면 흔히 암기를 떠올립니다. 많은 사람이 암기를 싫어합니다. "검색하면 되지 않나요?"라고 물을 수 있습니다.
물론 단어 하나하나 검색하고, 문법을 확인하고, 생각하면서 쓸 수 있습니다. 그러면 무슨 일이 일어날까요?
영어로 글을 쓴다고 가정해봅시다. "나는 어제 친구와 영화를 봤다"를 영어로 쓰려는데, 'yesterday'를 모르면 어떻게 될까요? 사전을 찾아야 합니다. 'friend'도 모르면? 또 찾아야 합니다. 'movie'도, 'watched'도 모르면?
•
단기기억의 용량이 단어 찾기에 소진됩니다. 'yesterday'를 찾았는데, 'friend'를 찾는 동안 'yesterday'를 잊어버립니다. 다시 찾습니다. 7±2개의 슬롯이 단어 찾기에 다 쓰이는 겁니다.
•
시간이 과도하게 걸립니다. 한 문장에 10분. 에세이를 쓰려면 하루가 모자랍니다.
•
정작 중요한 것을 생각할 여유가 없습니다. 단어 찾기에 정신이 팔려서, "이 문장이 전체 논지와 어떻게 연결되는가", "독자가 이해하기 쉬운 구조인가" 같은 고차원적인 생각을 할 수 없습니다.
단어를 이해하느라 바쁘면, 문장 단위로 사고할 수 없습니다. 문장 단위로 사고할 수 없다면, 더 높은 단위인 ‘문단’ 단위로 사고하는 것도 불가능합니다. 모국어로 쓰인 글을 볼 때 원어민들은 거의 문단 단위로 정보를 받아들이면서 그 사실을 의식하지도 못합니다. 반면 제2외국어는 더 작은 단위로 이해하는 것조차 버겁습니다.
코딩도 마찬가지입니다.
준호가 useState가 뭔지, useEffect가 뭔지 매번 검색해야 한다면? 단기기억의 모든 슬롯이 "기본 개념 이해하기"에 소진됩니다. 정작 "이 컴포넌트를 어떻게 설계해야 유지보수가 쉬울까", "이 상태 구조가 나중에 확장 가능할까" 같은 똑똑한 질문을 생각할 여유가 없습니다.
그렇다면 어떻게 전문가처럼 생각을 자동화할 수 있을까요? 어떻게 매일 조금씩 똑똑해질 수 있을까요?
3. 트리거(T): 습관이 없으면 시작도 없다
준호는 가끔 튜토리얼을 봅니다. 그런데 "가끔"입니다. 습관이 아니라 이벤트입니다.
습관의 핵심은 "언제"가 명확한 것입니다. "공부해야지"가 아니라 "점심 먹고 나서 PR 볼 때 3분"처럼요. 제프리 포그는 이를 "기존 루틴에 붙이기(Anchoring)"라고 합니다. 이미 하고 있는 행동 뒤에 새 습관을 붙이는 겁니다.
•
"아침에 출근하면" → PR 보면서 3분 생각하기
•
"점심 먹고 나서" → 아침에 본 패턴 적용해보기
•
"퇴근 전 5분" → 오늘 배운 것 정리하기
준호에게는 이런 트리거가 없습니다. 그래서 "다음에 시간 날 때"가 영영 오지 않는 겁니다.
더 큰 문제는, 별도의 거창한 시간을 만들려고 한다는 것입니다. "이번 주말에 4시간 공부해야지." 그런데 주말이 오면 피곤합니다. 그래서 미룹니다. 다음 주말에도 똑같습니다.
포그(Fogg)의 법칙: 작게 시작하라. "주말 4시간 공부"가 아니라 "PR 볼 때 3분만 생각하기"처럼요. 그리고 그것이 일상의 루틴 안에 녹아있어야 합니다.
준호에게 필요한 것은 매일 조금씩 똑똑해지는 시스템입니다.
