1. CTA란?
이 과정을 체계적으로 하는 방법이 있어요. CTA(Cognitive Task Analysis), 전문가의 인지과정을 분석하는 기술이죠.
1980년대, 심리학자 게리 클라인이 소방관들을 연구했어요. 어느 화재 현장이었어요. 지휘관이 갑자기 소리쳤어요. "다들 나가! 지금 당장!" 소방관들이 밖으로 뛰쳐나갔어요. 몇 초 후, 바닥이 무너졌어요.
클라인이 나중에 그 지휘관을 인터뷰했어요.
"어떻게 알았어요?"
"그냥... 뭔가 이상했어요. 느낌으로 알았죠."
클라인은 여기서 멈추지 않았어요. 계속 파고들었죠.
"정확히 뭐가 이상했죠?"
"불이... 너무 조용했어요. 그리고 열기가 이상했어요. 바닥에서 올라오는 느낌이었어요."
지휘관은 "느낌"으로 판단한 게 아니었어요. 소리의 크기, 열기의 분포, 불의 색깔. 이 모든 신호를 0.1초 만에 무의식적으로 종합해서 "이건 지하에서 타는 불이다 → 바닥이 약해졌다" 판단한 거예요. 분석이 아니라 인식이었어요.
시니어 개발자도 똑같아요. "함수 이름이 애매하다", "파라미터가 3개 넘는다", "return 타입이 너무 포괄적이다" 0.5초 만에 여러 신호를 종합해서 "아, 책임이 섞였네" 판단하는 거예요.
CTA는 이 무의식적 판단 과정을 의식으로 끄집어내는 방법이에요. 전문가 본인도 자기가 뭘 보는지 몰라요. 소방관도 처음엔 "그냥 느낌"이라고만 했잖아요. 클라인이 계속 파고들어서 "불이 조용했다", "열기가 바닥에서 올라왔다" 이런 구체적인 신호들을 꺼낼 수 있었던 거죠.
개발에 적용하면? 시니어의 머릿속을 들여다볼 수 있습니다.
[핵심] 우리는 CTA로 무엇을 캐내야 할까요?
바로 1장에서 배운 '코드의 냄새(결합도, 응집도)'를 맡는 후각(Sensor)입니다.
•
시니어는 useEffect를 보자마자 0.5초 만에 미간을 찌푸립니다. (직관)
•
초보자는 "코드가 기네"라고만 생각합니다. (표면)
CTA는 시니어가 "어떤 신호(Cue)를 봤길래 미간을 찌푸렸는지"를 역추적하는 기술입니다. 그들의 '후각'을 이식받는 것이 목표입니다.
2. CTA의 핵심: Progressive Deepening
클라인이 소방관에게 했던 것, 기억하시죠? 단순히 "어떻게 알았어요?"만 묻지 않았어요. 계속 파고들었습니다. 점진적으로 깊이 파고드는 거예요. Progressive Deepening이라고 부릅니다. 쉽게 말하면 “꼬리에 꼬리를 무는 질문(꼬꼬무)” 라고 표현해볼 수도 있겠네요.
첫 질문: "어떻게 알았어요?"
→ "느낌으로요" (표면)
더 파고들기: "정확히 뭐가 이상했죠?"
→ "불이 조용했어요" (신호 등장)
계속 파고들기: "왜 조용한 게 이상했죠?"
→ "보통 이 정도 크기면 훨씬 시끄러워야 하거든요" (판단 기준)
끝까지: "그럼 언제부터 조용하다고 느꼈죠?"
→ "문 열자마자요. 0.5초 만에" (자동화된 인식)
보이시죠? 표면의 "느낌"에서 시작해서, 구체적 신호들을 하나씩 끄집어냈습니다.
CTA 3단계 프로토콜
클라인은 이 과정을 30년 넘게 검증된 프로토콜로 체계화했어요. 소방관뿐 아니라 간호사, 군 지휘관, 항공 관제사... 다양한 분야에서 전문가의 암묵지를 추출하는 데 사용됐죠.
3단계 구조
1단계: Incident Selection (중요한 순간 선택)
"최근에 어려운 판단을 했던 순간을 하나 골라주세요"
중요한 순간을 선택하는 거예요. "최근에 어려운 판단을 했던 순간을 하나 골라주세요." 아무 순간이나 묻는 게 아니라, critical한 순간을 찾는 겁니다.
2단계: Timeline Verification (타임라인 구성)
"그때 어떤 일이 일어났는지 순서대로 말해주세요"
타임라인을 구성해요. "그때 어떤 일이 일어났는지 순서대로 말해주세요." 시간 순서로 재구성하는 거죠.
3단계: Progressive Deepening (점진적 심화)
각 판단 포인트마다 6단계 질문으로 파고들기
여기서 6단계 질문법을 쓰는데, 이게 핵심이에요.
6단계 질문 프레임워크
Progressive Deepening의 핵심은 6단계 질문입니다. 각 단계는 표면에서 깊이로, 행동에서 전문성으로 파고들어가죠.
Level 1: WHAT (무엇을)
가장 기본입니다. 실제로 무엇을 했는지, 무엇을 봤는지를 묻는 거예요. "느낌으로요"라는 막연한 답 대신 구체적인 행동을 끄집어내는 게 목표입니다. 관찰 가능한 행동으로 만드는 거죠.
Q: 정확히 무엇을 했나요?
Q: 무엇을 봤나요?
[예시]
"함수 시그니처를 먼저 봤어요"
"파라미터 개수를 세었어요"
Plain Text
복사
Level 2: WHY (왜)
행동의 이유를 묻습니다. 전문가는 무작위로 움직이지 않아요. 의도가 있죠. "왜 그 순서였나요?"라고 물으면 판단 기준이 나옵니다. 초보자는 이 "왜"에 답하기 어려워요. 그냥 했을 뿐이니까요.
Q: 왜 그것을 먼저 봤나요?
Q: 왜 그 순서였나요?
[예시]
"파라미터가 많으면 책임이 섞였을 가능성이 높거든요"
"시그니처가 함수의 의도를 가장 빨리 알려주니까요"
Plain Text
복사
Level 3: CUES (신호)
️ 가장 중요
여기가 핵심이에요. 전문가는 특정 "신호"를 보고 판단합니다.
소방관이 "불이 조용하다"를 본 것처럼요. 이 신호들이 0.5초 만에 자동으로 인식되는지, 아니면 의식적으로 체크하는지도 물어봐야 해요. 전문가와 초보자의 결정적 차이가 여기서 드러납니다.
Q: 어떤 신호가 그 판단을 촉발했나요?
Q: 그 신호는 어떻게 인식됐나요? (자동 vs 의식적)
Q: 다른 신호들도 있었나요?
[예시]
"return 타입이 any인 걸 보자마자 '어?' 했어요"
"파라미터가 4개 넘으니까 자동으로 의심스러웠어요"
"함수명에 'and'가 들어가면 빨간불이에요"
Plain Text
복사
Level 4: GOALS (목표)
전문가는 작업하면서 목표가 계속 바뀝니다. "이해하기"로 시작했다가 "문제 찾기"로 전환하고, "검증하기"로 또 바뀌죠. 이 목표 전환이 빠르고 유연한 게 전문성이에요.
초보자는 처음 목표에 계속 갇혀있거나, 목표 자체가 없는 경우가 많아요.
Q: 그 순간 목표가 뭐였나요?
Q: 목표가 바뀐 시점이 있었나요?
[예시]
"처음엔 '이해하기'가 목표였는데"
"any 보고 나서 '책임 찾기'로 바뀌었어요"
Plain Text
복사
Level 5: ALTERNATIVES (대안)
전문가는 선택을 합니다. 여러 방법 중에서 하나를 골라요. 왜 그 선택을 했는지, 왜 다른 방법을 배제했는지를 물으면 전문가의 효율성 전략이 드러납니다. 초보자는 대안 자체를 몰라요.
Q: 다른 방법을 고려했나요?
Q: 왜 그 방법을 선택했나요?
Q: 다른 방법은 왜 배제했나요?
[예시]
"변수명부터 볼 수도 있었는데"
"그건 시간이 오래 걸리고 핵심을 놓치기 쉬워서요"
Plain Text
복사
Level 6: EXPERTISE (전문성 마커)
마지막은 메타 질문입니다. "초보자라면 이렇게 했을까요?" "이게 자동화된 계기가 있었나요?" 전문가 본인이 어떻게 전문가가 됐는지를 되돌아보게 하는 거예요. 학습자는 여기서 "아, 나도 의도적으로 연습하면 되는구나"를 깨닫죠.
Q: 초보자라면 이 신호를 봤을까요?
Q: 이 판단이 자동화된 계기가 있었나요?
Q: 몇 년 전의 나라면 어떻게 했을까요?
[예시]
"예전엔 함수 본문부터 읽었는데"
"시그니처부터 보는 게 습관이 된 지 1년쯤 됐어요"
"수백 번 보다 보니 any 보면 자동으로 경계하게 되더라고요"
Plain Text
복사
인지과정 타임라인 만들기
CTA의 핵심 도구는 인지과정 타임라인이에요. "머릿속에서 일어난 일"을 시간 순서로 기록하는 거죠.
템플릿
시간 | 행동 | 판단 | Cue (신호) | 목표 |
0:00 | 함수 시그니처 봄 | - | - | 이해하기 |
0:10 | 파라미터 4개 확인 | 많다 | 개수 4 | 의심하기 |
0:20 | return 타입 any | 책임 섞임! | any 타입 | 책임 찾기 |
0:30 | 함수명 분석 | 동사 여러개 | get+set | 확신 |
1:00 | 본문 스캔 | 두 덩어리 | 빈줄 | 검증 |
1:30 | 쪼개기 시작 | - | - | 분리하기 |
작성 팁
중요: "일어난 일"이 아니라 "머릿속에서 일어난 일"을 적어야 해요.
0:00 | 코드를 봤다
0:10 | 함수를 읽었다
0:20 | 리팩토링했다
Plain Text
복사
0:00 | 함수 시그니처 봄 → "파라미터 4개? 많다..." → 의심
0:10 | "왜 4개지?" 생각 → 책임 의심 → 휴리스틱 작동 → 가설
0:20 | 본문 확인 → 두 덩어리 발견 → 가설 검증 → 확신
Plain Text
복사
3. 실습: 15분 간단 리팩토링
완벽하게 적으려고 하면 오히려 리팩토링 과정 자체에 집중하기 어려워요. 타임라인을 작성하는 게 목적이 아니라, 내 사고 과정을 관찰하는 게 목적이니까요.
핵심 판단 포인트 3-5개만 포착해도 충분해요. "아, 여기서 내가 이걸 봤구나", "이 신호가 판단을 바꿨네" 정도만 알아채면 성공이에요.
그리고 가장 중요한 건 "왜?"를 계속 스스로에게 묻는 거예요. "왜 이걸 먼저 봤지?", "왜 이게 이상하다고 느꼈지?", "왜 이 방법을 선택했지?" 이 질문들이 무의식적 판단을 의식으로 끌어올려요.
준비물
리팩토링할 코드 1개
타이머
CTA 타임라인 템플릿
진행
[0-5분: 코딩하면서 기록]
✓ 타이머 시작
✓ 리팩토링하면서 동시에 타임라인 작성
✓ 판단 포인트마다 Cue 적기
- "지금 뭘 보고 있지?" / "왜 이걸 먼저 보지?"
- "이 판단의 근거는?" / "무슨 신호를 봤지?"
[10-15분: Self-Debrief]
✓ Level 1-6 질문 스스로 답하기
✓ "내가 놓친 신호는?"
✓ "더 나은 순서가 있었나?"
Plain Text
복사
