# 우리 백로그를 쪼개보기

> **이 장에서 배우는 것**
> 읽는 장이 아니라 **하는 장**입니다. 지금 진행 중인 일감 하나를 원자 단위까지
> 쪼개고, 그것들이 **의존성 때문에 한 줄로 서 있는지** 직접 확인합니다.

## 준비물

```
□ 40분
□ 종이 한 장 또는 화이트보드
□ 지금 진행 중인 일감 1개 — 끝난 것 말고 지금 하는 것
   · 며칠에서 몇 주 걸리는 크기
   · 나만 아는 일 말고 팀이 아는 것
□ 되도록 그 일을 실제로 하는 사람과 함께
```

**세 번째 줄의 "끝난 것 말고"가 중요합니다.** 끝난 일은 결과를 알기 때문에
깔끔하게 나뉩니다. 지금 하는 일이라야 진짜 의존성이 보입니다.

> 마땅한 일감이 없다면 이걸 쓰세요 — **"회원 탈퇴 기능 개선: 탈퇴 사유를 받고,
> 개인정보를 마스킹하고, 관리자 화면에 탈퇴 통계를 보여준다."**

---

## 1단계 — 한 문장으로 적기 (5분)

고른 일감을 **한 문장**으로 적으세요. 제목이 아니라 문장입니다.

```
✗ "회원 관리 개선"                              ← 제목
✓ "탈퇴할 때 사유를 받고 개인정보를 마스킹한다"    ← 문장
```

### 무엇을 보나

```
□ "그리고" 또는 "및"이 들어갔나
□ 쉼표로 여러 동작이 이어졌나
```

**하나라도 해당하면 이미 두 개 이상입니다.** 그게 2단계의 재료입니다.

---

## 2단계 — 접속사로 자르기 (10분)

접속사를 기준으로 잘라 목록으로 만드세요. **네 줄 이상 나와야 합니다.**

| # | 원자 단위 | 한 문장으로 되나 |
|---|---|---|
| 1 | | |
| 2 | | |
| 3 | | |
| 4 | | |
| 5 | | |

```
예시 일감을 쪼개면:
  1. 탈퇴 화면에 사유 선택 항목을 추가한다
  2. 탈퇴 시 이름·연락처를 마스킹한다
  3. 탈퇴 사유를 저장할 자리를 만든다
  4. 관리자 화면에 탈퇴 사유 통계를 보여준다
  5. 탈퇴 완료 메일을 보낸다
```

**여기까지는 대부분 쉽게 합니다.** 문제는 다음 단계입니다.

---

## 3단계 — 화살표 그리기 (10분)

**이게 이 실습의 핵심입니다.** 줄 사이에 "이게 끝나야 저걸 시작할 수 있다"는
화살표를 그으세요.

```
3 ──→ 1     (저장할 자리가 있어야 화면에서 고르게 할 수 있음)
3 ──→ 4     (저장된 것이 있어야 통계를 냄)
2           (혼자 감)
5           (혼자 감)
```

### 무엇을 보나

| 그려보니 | 뜻 |
|---|---|
| 화살표가 하나도 없다 | 이미 독립적입니다. 흔하지 않습니다 |
| **한 줄로 쭉 이어진다** | **쪼갠 의미가 없습니다.** 4단계로 |
| 한두 개만 묶여 있다 | 정상입니다. 그 묶음만 4단계로 |

**가운데 줄이 나오면 그게 정상입니다.** 대부분의 팀이 여기서 "우리는 나눴다고
생각했는데 사실 한 줄이었다"를 봅니다. [쪼개는 것만으로는
부족하다](/guide/ha-micro-sprint)는 말을 종이 위에서 확인한 것입니다.

---

## 4단계 — 세로로 다시 자르기 (10분)

화살표로 묶인 것들을 **층이 아니라 기능으로** 다시 자릅니다.

```
[층으로 자른 것 — 화살표가 생깁니다]
  3. 저장할 자리 만들기 → 1. 화면에서 고르게 하기 → 4. 통계 보여주기

[기능으로 다시 자른 것 — 각자 끝까지 갑니다]
  A. 탈퇴 사유 받기   : 저장 자리 + 화면 + 저장까지 한 덩어리
  B. 탈퇴 통계 보기   : A가 만든 자리를 읽어 화면에 표시
```

A와 B 사이에는 아직 화살표가 남습니다. 그럴 때는 **계약을 먼저 고정**하세요.

```
0단계 (5분): 탈퇴 사유를 어디에 어떤 형태로 저장할지만 먼저 정한다
그다음   : A와 B를 동시에
```

**형식만 먼저 정하면 나머지가 병렬이 됩니다.** 이 5분이 며칠을 벌어줍니다.

---

## 5단계 — 배포 기준으로 판정 (5분)

마지막 관문입니다. 각 조각에 이것만 물어보세요.

```
□ 이것만 따로 내보내도 아무것도 안 깨지나?
```

| 답 | 판정 |
|---|---|
| 예 | ✓ 원자 단위입니다 |
| "다른 게 먼저 나가야 한다" | 아직 묶여 있습니다. 4단계로 |
| "나가긴 하는데 화면에 반쪽만 보인다" | **스위치를 두고 꺼둔 채 내보내면 됩니다** |

**세 번째 줄이 요령입니다.** "미완성인 것은 내보낼 수 없다"는 제약이 의존성의
절반을 만듭니다. 꺼둔 채 내보낼 수 있으면 그 절반이 사라집니다.

---

## 자기 점검

```
□ 처음 일감이 네 개 이상으로 나뉘었다
□ 3단계에서 화살표가 실제로 그려졌다   ← 안 그려졌다면 너무 크게 자른 것입니다
□ 화살표를 하나 이상 없앴다
□ 남은 화살표는 "본질적으로 순차"라고 설명할 수 있다
```

세 번째가 안 채워졌다면 4단계로 돌아가세요. **화살표를 하나도 못 없앴다면 진짜
순차 작업이거나, 아직 층으로 자르고 있는 것입니다.**

---

## 확인

**1. 3단계에서 화살표가 한 줄로 이어지면 무엇을 뜻합니까?**

<details>
<summary>답</summary>

**쪼갠 의미가 없다는 뜻**입니다. 조각이 다섯 개라도 순서대로 서 있으면 결국
차례로 처리해야 하고 병렬성이 안 나옵니다. 마이크로 스프린트의 핵심은 크기가
아니라 독립성입니다.
</details>

**2. "세로로 자른다"를 이 실습의 예로 설명해보세요.**

<details>
<summary>답</summary>

저장 자리 → 화면 → 통계처럼 **층으로 자르면** 서로를 기다립니다. "탈퇴 사유
받기"가 저장부터 화면까지 혼자 끝까지 가도록 **기능으로 자르면** 다른 조각을
기다리지 않습니다.
</details>

**3. "나가긴 하는데 화면에 반쪽만 보인다"는 왜 독립적인 것으로 칩니까?**

<details>
<summary>답</summary>

**스위치를 두고 꺼둔 채 내보낼 수 있기 때문**입니다. "미완성인 것은 내보낼 수
없다"는 제약이 의존성의 상당 부분을 만드는데, 꺼둔 채 내보낼 수 있으면 그
제약이 사라집니다.
</details>

---

다음은 개발자의 산출물이 무엇으로 바뀌는가입니다 → [IntentOps](/guide/ha-intentops)
