현상문제 나무 예제로 배우기 (Current Reality Tree by Example)
"문제의 뿌리를 찾는 가장 강력한 방법은 증상들 사이의 인과관계를 그려보는 것이다."
수민이의 번아웃
수민이는 2년차 개발자다. 요즘 월요일 아침마다 출근하기가 두렵다. 주말에도 일 생각을 하면 속이 답답하다. 무엇보다 답답한 건, 왜 이렇게 힘든지 명확하지 않다는 것이다.
"나는 왜 이렇게 힘들까?"
수민이가 떠올린 문제들은 이렇다:
밤 10시까지 야근이 잦다
업무가 자꾸 끊긴다 - 회의와 긴급 요청 때문에 집중할 수 없다
내 코드가 자주 롤백된다 - 버그가 발견되어 되돌려진다
기획이 자주 바뀐다 - 다 만들어놓으면 "이건 아닌 것 같아요"라는 말을 듣는다
문서화할 시간이 없다 - 급하게 만들고 넘어가니 나중에 또 물어본다
이 문제들은 각각 독립적일까, 아니면 연결되어 있을까?
Current Reality Tree (CRT)란?
현상문제 나무(Current Reality Tree, CRT)는 Theory of Constraints의 핵심 도구로, 지금 겪고 있는 여러 문제들(UDE: Undesirable Effects) 사이의 인과관계를 시각화하여 근본 원인(Root Cause)을 찾는 방법이다.
왜 필요한가?
우리가 겪는 문제들은 대부분 독립적이지 않다. 하나의 근본 원인이 여러 증상을 만들어낸다. 하지만 우리는 보이는 증상만 보고 각각을 해결하려다 지친다.
CRT는 이렇게 질문한다:
- "이 문제들은 왜 일어나는가?"
- "이 문제들 사이에 어떤 관계가 있는가?"
- "만약 하나의 근본 원인을 해결하면, 여러 문제가 동시에 해결될 수 있지 않을까?"
CRT 구성 요소
1. UDE (Undesirable Effect) - 바람직하지 않은 결과
"지금 내가 겪고 있는, 바꾸고 싶은 현상"
예시:
- 밤 10시까지 야근한다
- 업무가 자꾸 끊긴다
- 코드가 자주 롤백된다
2. 인과관계 화살표 (If-Then)
"만약 A가 일어나면, 그래서 B가 일어난다"
A → B
"만약 A라면, 그래서(Therefore) B다"
3. 근본 원인 (Root Cause)
"화살표를 따라 올라갔을 때, 가장 아래에 있는 원인"
여러 증상을 만들어내는 뿌리가 되는 문제.
예제: 수민이의 CRT 만들기
Step 1: UDE 나열하기
먼저 바꾸고 싶은 현상들을 있는 그대로 적는다. 판단하지 말고, 지금 겪고 있는 것들을 나열한다.
수민이의 UDE 목록: 1. 밤 10시까지 야근한다 2. 업무가 자주 끊긴다 (회의, 긴급 요청) 3. 내 코드가 자주 롤백된다 4. 기획이 자주 바뀐다 5. 문서화할 시간이 없다 6. 번아웃 느낌이 든다
Step 2: 인과관계 찾기 - "왜?"를 반복하라
각 UDE에 대해 "왜 이런 일이 일어나는가?"를 질문한다.
UDE: 밤 10시까지 야근한다
- 왜? → 작업이 예상보다 오래 걸린다
- 왜? → 업무가 자주 끊긴다 (UDE #2)
- 왜? → 긴급 요청과 회의가 많다
UDE: 내 코드가 자주 롤백된다
- 왜? → 버그가 발견된다
- 왜? → 충분히 테스트할 시간이 없다
- 왜? → 빨리 배포하라는 압박이 있다
UDE: 기획이 자주 바뀐다
- 왜? → 초기에 충분히 검증되지 않았다
- 왜? → 빨리 만들어서 보여달라는 요구가 있다
Step 3: 연결하기 - 나무 그리기
이제 인과관계를 화살표로 연결한다. 아래에서 위로 읽으면 "만약 A라면, 그래서 B다"가 된다.
[번아웃 느낌]
↑
|
+----------+----------+
| |
[야근이 잦다] [성취감이 없다]
↑ ↑
| |
+---------+---------+ [코드가 자주 롤백]
| | ↑
[업무가 끊긴다] [재작업이 많다] |
↑ ↑ [테스트 시간 부족]
| | ↑
| [기획이 바뀐다] |
| ↑ |
| | |
+-------------------+-----------+
|
[빨리 결과를 내야 한다는 압박]
Step 4: 근본 원인 찾기
나무의 가장 아래를 보라. 여러 가지들로 화살표가 나가지만, 들어오는 화살표가 없거나 적은 것이 근본 원인이다.
수민이의 근본 원인:
"빨리 결과를 내야 한다는 압박"
이 하나의 원인이:
- 충분한 검증 없이 기획을 시작하게 만들고 (→ 기획 변경)
- 테스트 시간을 줄이게 만들고 (→ 버그 → 롤백)
- 긴급 요청을 만들어내고 (→ 업무 단절)
- 결과적으로 야근과 번아웃으로 이어진다
CRT의 힘: 증상이 아닌 원인을 다루라
Before CRT: 증상 치료
수민이가 CRT 없이 문제를 해결하려 했다면:
- 야근을 줄이자 → 일찍 퇴근하면 눈치가 보인다
- 업무 끊김을 줄이자 → 회의를 거부할 수 없다
- 버그를 줄이자 → 테스트할 시간이 없는데?
- 기획 변경을 막자 → 기획자를 설득할 근거가 없다
각 증상을 개별적으로 해결하려 하면 힘들고, 효과도 적다.
After CRT: 근본 원인 해결
근본 원인을 알면 대화가 달라진다:
수민이 → 팀장님:
- "팀장님, 요즘 야근이 잦고 번아웃이 느껴집니다. 제가 생각해봤는데, 근본적인 문제는 '빨리 결과를 내야 한다는 압박' 같습니다.
>
- 이 압박 때문에: - 기획 검증이 부족해서 나중에 변경이 생기고 - 테스트를 제대로 못 해서 롤백이 생기고 - 긴급 요청이 생겨서 집중이 안 됩니다
>
- 만약 초기에 2-3일만 더 기획 검증 시간을 주신다면, 전체 일정은 오히려 단축될 것 같습니다."
근본 원인 하나를 해결하면, 여러 증상이 동시에 개선된다.
CRT 작성 실전 가이드
1. UDE는 구체적으로
❌ "스트레스가 많다" ✅ "주 3회 이상 밤 10시 넘게 야근한다"
❌ "팀 분위기가 안 좋다" ✅ "회의에서 서로 비난하는 말이 나온다"
2. 인과관계는 명확하게
화살표를 그릴 때는 항상 읽어보라:
"만약 [하위 박스]라면, 그래서 [상위 박스]다"
만약 이 문장이 자연스럽지 않다면, 중간 단계가 빠졌거나 관계가 잘못된 것이다.
3. 가정(Assumption)을 적어라
때로는 명확하지 않은 연결이 있다. 그럴 때는 옆에 가정을 적는다.
[기획이 바뀐다]
↑
| (가정: 초기 검증이 부족하면 나중에 문제가 발견된다)
|
[빨리 결과를 내야 한다는 압박]
4. 여러 원인이 합쳐질 때 (AND)
때로는 A와 B가 동시에 있어야 C가 일어난다:
[테스트 시간 부족] ─┐
├─→ [버그 발생]
[복잡한 코드베이스] ─┘
5. 순환 구조 조심
가끔 A → B → C → A처럼 순환이 생긴다. 이것은 악순환(Vicious Cycle)이다. 이런 경우 순환을 끊을 지점을 찾아야 한다.
[야근] → [피로] → [버그 증가] → [재작업] → [야근]
↑__________________________|
실전 연습: 당신의 문제로 CRT 그리기
Exercise 1: 개인 문제
1단계: 지금 당신이 겪고 있는 바람직하지 않은 현상 5-7개를 적으세요.
2단계: 각 현상에 대해 "왜?"를 3번 이상 물어보세요.
3단계: 인과관계를 화살표로 연결하세요.
4단계: 가장 아래에 있는 근본 원인을 찾으세요.
Exercise 2: 팀 문제
팀에서 겪는 반복적인 문제들을 나열하고, CRT를 그려보세요:
- 배포가 자주 실패한다
- 코드 리뷰가 형식적이다
- 기술 부채가 쌓인다
- 일정이 항상 밀린다
- 팀원들이 자주 퇴사한다
이 문제들의 근본 원인은 무엇일까요?
CRT 이후: Future Reality Tree
CRT로 근본 원인을 찾았다면, 다음 단계는 미래현실 나무(Future Reality Tree, FRT)입니다.
FRT는 질문합니다: "만약 이 근본 원인을 해결하면, 어떤 긍정적 결과들이 나타날까?"
CRT와 FRT를 함께 사용하면: 1. CRT: 지금의 문제들이 왜 일어나는지 이해 2. FRT: 해결책이 어떤 변화를 가져올지 예측
이것이 Theory of Constraints의 핵심 사고 프로세스입니다.
핵심 통찰
"증상을 치료하지 말고, 원인을 다루라."
우리는 보이는 문제들을 하나씩 해결하려다 지친다. 하지만 문제들은 독립적이지 않다. 하나의 뿌리에서 여러 증상이 나온다.
CRT는 이렇게 말한다:
- 문제들 사이의 관계를 보라
- 근본 원인을 찾아라
- 하나를 바꿔서 여러 개를 해결하라
"레버리지를 찾는 것이 TOC의 본질이다."
참고 자료
TOC 핵심 도구들
분석 도구 (현재):
Current Reality Tree (CRT) - 현재 문제의 근본 원인 찾기
Evaporating Cloud - 대립하는 요구사항 해소하기
설계 도구 (미래):
Future Reality Tree (FRT) - 해결책의 효과 예측하기
Prerequisite Tree (PRT) - 장애물 제거 계획
Transition Tree (TRT) - 실행 단계별 계획
더 배우기
TheoryOfConstraints - TOC 전체 개요
EvaporatingCloud - 대립 해소 기법
책/ItsNotLuck - TOC 사고 프로세스를 소설로 배우기
"문제를 해결하는 가장 좋은 방법은, 문제를 이해하는 것이다."
