2025년 12월 14일 일요일

0/100 규칙: 애매한 진행률 끝내기

 


"이 작업 몇 퍼센트 완료됐나요?"

"음... 한 70%쯤?"

이런 애매한 대답, 이제 그만합시다.

0% 아니면 100%. 중간은 없습니다.

0/100 규칙이란?

작업의 상태를 단 두 가지로만 표현하는 규칙입니다.

def get_task_progress(task):
    # 전통적 방식
    # return "대충 60~70% 정도?"  # 애매함

    # 0/100 규칙
    if task.is_complete():
        return 100
    else:
        return 0
    # 끝. 간단명료!

왜 0/100 규칙인가?

주관을 배제한다

개발자 A는 "70% 완료"라고 하고, 개발자 B는 같은 작업을 보고 "40% 완료"라고 합니다.
PM은 "50% 정도?"라고 생각하죠.

같은 작업인데 왜 다 다르게 볼까요?
각자의 기준이 다르기 때문입니다.

0/100 규칙은 이런 주관을 완전히 배제합니다.
완료했거나, 안 했거나. 단순명료합니다.

진실을 직시한다

# 착각
illusion = {
    "UI 90% 완료": True,
    "로직 80% 완료": True,
    "전체 진행률": "85%"  # 거의 다 됐네!
}

# 현실 (0/100 규칙)
reality = {
    "UI 완료": False,  # 0%
    "로직 완료": False,  # 0%
    "전체 진행률": "0%"  # 아직 완성된 게 없네...
}

잔인하지만 정직합니다.

0/100 규칙 적용하기

Step 1: 작업을 작게 쪼개기

# ❌ 나쁜 예: 큰 덩어리
big_task = {
    "name": "사용자 관리 시스템",
    "estimate": "2주",
    "status": 0  # 2주간 0%...
}

# ✅ 좋은 예: 작은 조각들
small_tasks = [
    {"name": "회원가입 API", "hours": 4, "done": True},   # 100%
    {"name": "회원가입 UI", "hours": 3, "done": True},    # 100%
    {"name": "로그인 API", "hours": 4, "done": True},     # 100%
    {"name": "로그인 UI", "hours": 3, "done": False},     # 0%
    {"name": "프로필 API", "hours": 3, "done": False},    # 0%
    {"name": "프로필 UI", "hours": 3, "done": False}      # 0%
]

# 진행률 = 3/6 = 50% (명확!)

Step 2: 완료 기준 정의하기

작업: 로그인 API
완료 체크리스트: □ 기능 구현
  □ 입력 검증
  □ 에러 처리
  □ 단위 테스트
  □ 코드 리뷰
  □ 문서 작성

규칙: 모든 항목 체크 = 100% / 하나라도 미체크 = 0%

Step 3: 일일 추적

매일 스탠드업에서:

const dailyUpdate = () => {
  console.log('=== 오늘의 상태 ===');

  tasks.forEach((task) => {
    console.log(`${task.name}: ${task.done ? '✅ 100%' : '⭕ 0%'}`);
  });

  const completed = tasks.filter((t) => t.done).length;
  const total = tasks.length;

  console.log(`전체: ${completed}/${total} 완료`);
};

숫자가 명확하니 논란이 없습니다.

실제 프로젝트 적용 사례

이커머스 결제 시스템

## 프로젝트: 결제 시스템 (총 32시간)

### 카드 결제 (12시간)

- [x] PG사 연동 (4h) ✅ 100%
- [x] 결제 검증 (3h) ✅ 100%
- [ ] 에러 처리 (3h) ⭕ 0%
- [ ] 테스트 (2h) ⭕ 0%
      진행률: 2/4 = 50%

### 간편결제 (8시간)

- [ ] 카카오페이 (4h) ⭕ 0%
- [ ] 네이버페이 (4h) ⭕ 0%
      진행률: 0/2 = 0%

전체 진행률: 2/10 = 20% (정확!)

팀 전체가 같은 숫자를 봅니다. 해석의 여지가 없습니다.

0/100 규칙의 변형

0/50/100 규칙

중간 마일스톤이 필요한 경우:

def fifty_percent_rule(task):
    """코드 리뷰 통과 시 50% 인정"""

    if task.is_complete():
        return 100
    elif task.code_review_passed():
        return 50  # 중간 인정
    else:
        return 0

20/80 규칙

시작을 인정하는 방식:

function twentyEightyRule(task) {
  if (task.isComplete) return 100;
  if (task.isStarted) return 20; // 시작 보너스
  return 0;
}

하지만 주의하세요. 모든 작업이 20%에서 멈출 수 있습니다.

0/100 규칙의 장점

예측 가능성

애매한 "거의 완료", "조금 남음" 대신,
"5개 중 3개 완료, 2개 남음"이라고 말할 수 있습니다.

남은 작업이 명확하니 완료 시점도 예측 가능합니다.

투명성

const teamDashboard = {
  김개발: {
    assigned: 5,
    completed: 3,
    progress: '3/5 (60%)',
  },
  이디자인: {
    assigned: 4,
    completed: 4,
    progress: '4/4 (100%) 🎉',
  },QA: {
    assigned: 6,
    completed: 1,
    progress: '1/6 (17%)',
  },
};

누가 어떤 상태인지 한눈에 보입니다.

동기부여

매일 완료되는 작업이 보입니다.
체크박스에 ✅가 하나씩 늘어가는 것만으로도 성취감을 느낍니다.

애매한 퍼센트가 조금씩 올라가는 것보다 훨씬 만족스럽습니다.

팀에 도입하기

Week 1: 파일럿

월요일: 1개 프로젝트 선택, 작업 10개로 분해
수요일: 0/100 규칙 적용, 기존 방식과 비교
금요일: 팀 피드백, 개선점 논의

Week 2-3: 확대

전체 팀에 적용, 도구 도입, 프로세스 개선

주의사항

너무 큰 작업

2주간 0%는 팀 사기를 떨어뜨립니다.
작업을 더 작게 쪼개세요.

형식적 체크리스트

# ❌ 나쁜 체크리스트
- [ ] 코딩 완료  # 너무 모호

# ✅ 좋은 체크리스트
- [ ] POST /api/login 엔드포인트 구현
- [ ] 이메일 형식 검증 (regex)
- [ ] 비밀번호 bcrypt 해싱
- [ ] JWT 토큰 생성 및 반환
- [ ] 401/403 에러 처리

구체적일수록 좋습니다.

도구와 자동화

Git 커밋과 연동

#!/bin/bash
# commit message에 따라 자동 체크

if [[ $1 == *"[done]"* ]]; then
  echo "✅ Task marked as 100% complete"
elif [[ $1 == *"[wip]"* ]]; then
  echo "⭕ Task still at 0%"
fi

간단한 트래커

class SimpleTracker {
  getProgress() {
    const total = this.tasks.size;
    const done = [...this.tasks.values()].filter((v) => v).length;

    return {
      tasks: `${done}/${total}`,
      percentage: Math.round((done / total) * 100),
      remaining: [...this.tasks.entries()].filter(([_, done]) => !done).map(([name, _]) => name),
    };
  }
}

성과 측정

Before vs After

한 스타트업의 실제 결과:

metrics_before = {
    "프로젝트_지연율": 65,
    "예측_정확도": 45,
    "팀_신뢰도": 6.2
}

metrics_after_3months = {
    "프로젝트_지연율": 25,  # 62% 개선
    "예측_정확도": 82,      # 82% 개선
    "팀_신뢰도": 8.5        # 37% 개선
}

마무리

0/100 규칙은 단순하지만 강력합니다.

핵심 원칙:

  • 작업은 완료 아니면 미완료
  • 애매한 퍼센트 금지
  • 작업을 작게 쪼개기
  • 명확한 완료 기준

처음엔 극단적으로 느껴질 수 있지만,
곧 이 명확함이 얼마나 편한지 알게 될 겁니다.

"70% 완료"같은 애매한 말 대신,
"10개 중 7개 완료"라고 말하세요.

훨씬 정확하고 신뢰할 수 있습니다.


명확한 프로젝트 추적이 필요하신가요? Plexo를 확인해보세요.

댓글 없음:

댓글 쓰기