핵심 인사이트 (3줄 요약)
- 본질: MoSCoW 기법은 폭주하는 프로젝트 요구사항을 4단계 계급장인 **Must Have(절대 필수), Should Have(중요함), Could Have(있으면 좋음), Won't Have(이번엔 절대 안 해)**로 명확히 분류하여 썰어버리는 우선순위(Prioritization) 매트릭스다.
- 가치: "다 중요해요! 다 빨리해주세요!"라며 생떼를 쓰는 비즈니스 부서(현업)의 망상을 타파하고, 한정된 개발 시간(Sprint) 안에서 개발자가 **'서버가 돌아가기 위한 가장 뼈대가 되는 최소한의 목숨줄(Must)'부터 코딩하도록 리소스 타겟팅을 100% 강제(Focusing)**한다.
- 융합: 이 기법은 스크럼(Scrum)의 백로그(Backlog) 정제 회의에서 무기처럼 쓰이며, 'Could'와 'Won't' 바구니에 쓰레기 기능들을 영리하게 밀어 넣음으로써 프로젝트 일정을 찢어발기는 악마인 '스코프 크리프(Scope Creep, 범위 팽창)'를 방어하는 가장 심리적이고 훌륭한 린(Lean) 융합 방패로 기능한다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: MoSCoW(모스코우) 기법은 DSDM(Dynamic Systems Development Method) 애자일 프레임워크에서 처음 창안된 시간 박스(Timeboxing) 내 요구사항 우선순위 판별 도구다. 대문자 M, S, C, W는 4개의 핵심 범주를 뜻하며 o는 발음을 위해 그냥 껴 넣은 껍데기다.
-
필요성: 프로젝트 킥오프(Kick-off) 회의장. 영업팀이 "회원가입, 결제, 3D 상품 뷰어, AI 추천, 카톡 연동 싹 다 1달 안에 짜주세요! 하나라도 빠지면 안 팔려요!"라고 우긴다. 1달(시간)과 개발자 3명(예산)은 픽스(Fix)되어 있는데 스펙이 넘쳐흐른다. 초보 PM은 밤새워 100가지를 다 짜려다 오픈 날 서버 로그인도 안 되는 반쪽짜리 쓰레기를 납품하고 소송당한다. "야!! 1달 안에 저거 다 못 짜! 만약 시간이 모자라서 딱 1가지를 버려야 한다면 넌 뭘 버릴 건데? 3D 뷰어 없어도 결제는 되잖아! 당장 '반드시 해야 할 놈(Must)'과 '나중에 할 놈(Won't)' 명찰을 목에 걸어!" 이 피 말리는 한정된 자원의 치킨게임 속에서, 무엇을 먼저 버릴지(Trade-off)를 합의하는 극단적 생존 기술이 바로 MoSCoW다.
-
💡 비유: MoSCoW 기법은 짐을 싸서 **'무인도로 피난 가는 배'**에 타는 것과 같습니다. 배에 실을 수 있는 무게는 딱 100kg입니다.
- Must (산소호흡기, 물): 이거 안 실으면 무인도 가서 100% 죽음. 무조건 1순위 적재.
- Should (텐트, 나이프): 엄청 중요하지만, 없으면 동굴에서 자면서 어떻게든 살 수는 있음. 2순위 적재.
- Could (커피, 만화책): 있으면 꿀 빨지만, 없어도 생존에는 전혀 지장 없음. 배 자리 남으면 3순위 적재.
- Won't (금덩이, 무거운 TV): 이번 피난 배에는 죽어도 못 싣는 사치품. "다음 배(Next Release)에 실어줄게" 하고 해변에 매몰차게 버리고 떠나는 겁니다.
-
등장 배경:
- 폭포수(Waterfall)의 1부터 100까지 동시 완성병의 멸망: 옛날엔 100개 기능을 다 완성해야만 오픈(Open)을 했다. 그러다 100개 다 못 짜서 기한(Deadline)을 수시로 넘겨 파산했다. 타임박스(1달) 안에서 살아 돌아가는 부분부터 찍어내기 위해 애자일 진영이 깎아낸 칼이다.
- 가시성(Visibility)과 소통(Communication)의 붕괴: 상/중/하(High/Medium/Low)라는 단어는 너무 주관적이다. 내 부서의 '하'가 다른 부서에선 '상'이다. Must(없으면 시스템 죽음)라는 치명적인 단어의 강제력이 필요했다.
┌─────────────────────────────────────────────────────────────┐
│ MoSCoW 우선순위 4단 분리: 쇼핑몰 구축 프로젝트의 뼈 때리는 솎아내기 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 🔴 [ 1. M - Must Have (숨통 / 이것 없으면 법적, 비즈니스적 사형) ] │
│ - 정의: 타협 불가! 이게 빠진 시스템은 아예 런칭(Open)할 가치가 없는 심장 뼈대.│
│ - 쇼핑몰 예시: "회원가입", "신용카드 결제 연동", "장바구니 담기". │
│ - 결과: 이걸 1개라도 못 짜면 그냥 쇼핑몰 오픈일 연기하고 다 같이 석고대죄함. │
│ │
│ 🟠 [ 2. S - Should Have (기둥 / 겁나 중요하지만 어떻게든 우회 꼼수 가능) ]│
│ - 정의: 무조건 짜야 하는 메인 기능. 근데 만약 시간 없으면 '수작업(Workaround)'│
│ 으로 며칠 버틸 순 있는 녀석. │
│ - 쇼핑몰 예시: "비밀번호 분실 시 자동 이메일 발송 봇". │
│ - 결과: 시간 없으면 이메일 봇 코딩은 포기! 일단 고객이 콜센터에 전화하면 상담원이│
│ 수동으로 비번 리셋해주는 '인력 땜빵'으로 어떻게든 오픈 강행 가능 ㅋ. │
│ │
│ 🟡 [ 3. C - Could Have (장식 / 나이스 투 해브, 있으면 뽀대남) ] │
│ - 정의: 돈 냄새 안 나고 UX만 찔끔 좋아지는 기능. 시간 남아돌면 짜주는 선물. │
│ - 쇼핑몰 예시: "결제 완료 후 폭죽 터지는 3D 로티 애니메이션". │
│ - 결과: 야근하기 싫은 개발자가 기획자 몰래 제일 먼저 휴지통에 던지는 0순위 타겟.│
│ │
│ ⚪ [ 4. W - Won't Have (쓰레기통 / 이번 1차 오픈(Sprint)에선 죽어도 안 함) ]│
│ - 정의: 나중에 언젠간 하겠지만, "이번 달 마감"엔 절대 1바이트도 안 짤 거라고 │
│ 현업(고객) 얼굴에 대고 못을 박아버리는 피의 서약서. │
│ - 쇼핑몰 예시: "챗GPT 연동 AI 상품 큐레이션 챗봇". │
│ - 🌟 아키텍트의 극찬: 'Won't'는 버리는 게 아니다. "이번엔 안 하지만 안 까먹게 │
│ 백로그(냉장고)에 잘 넣어둘게!"라는 달콤한 거짓말로 진상 고객의 분노를 잠재우고 │
│ 스코프 크리프(Scope Creep)를 완벽히 쳐내는 궁극의 방어(Defense) 마법이다.│
└─────────────────────────────────────────────────────────────┘
[다이어그램 해설] "기능 A랑 B 중에 뭐부터 짤까요?"라는 핑퐁을 1초 만에 찢어버리는 단두대 메커니즘이다. 주니어 PM들은 High, Medium, Low로 나눈다. 모든 현업이 자기들 부서 기능은 무조건 다 'High'에 몰아넣는 이기주의(Silo)를 부린다. MoSCoW의 미학은 룰(Rule)이다. "Must 기능은 전체 개발 시간의 60%를 넘지 않게 억지로 한도를 채워라!" 만약 현업이 다 Must라고 우기면, PM은 "이거 다 Must면 이번 달 오픈 못 하는데 일정 한 달 미룰까요?"라고 협박(Trade-off)하여 억지로 Should와 Could 바구니로 중요도 풍선을 쥐어짜 내리게 만드는 피 말리는 정치/공학적 협상의 툴이다.
- 📢 섹션 요약 비유: 집을 짓는 MoSCoW입니다. **Must(필수)**는 '지붕, 화장실, 현관문'입니다. 이거 없으면 집이 아니라 폐허입니다. **Should(중요)**는 '보일러, 싱크대'입니다. 중요하지만 당장 없으면 추운 방에서 이불 덮고 배달 음식 시켜 먹으며 살 수는(우회 땜빵) 있습니다. **Could(장식)**는 '거실 샹들리에 조명'입니다. 있으면 이쁘지만 형광등 달아도 아무 문제 없습니다. **Won't(나중)**는 '마당에 수영장 파기'입니다. 이번 돈(예산)으로는 절대 못 파니까, 내년에 돈 벌면 그때 파자고 아예 꿈을 접어두는 미루기 전략입니다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
1. 시간 박스 (Timeboxing)와 우선순위의 잔인한 화학 작용
애자일 스크럼(Scrum)에서 2주(Sprint)라는 갇힌 감옥 안에서 MoSCoW가 어떻게 굴러가는가?
- 개발팀 캐파(Capacity)가 100 스토리 포인트(SP)라고 치자.
- Must 쑤셔 넣기: Must 기능의 덩치가 60 SP가 나왔다. ➔ 무조건 제일 먼저 개발 들어간다. 하늘이 두 쪽 나도 완성한다.
- Should와 Could의 완충재(Buffer) 역할: 남은 시간 40 SP 동안 Should(30 SP)를 짠다. 짜다 보니 버그가 터져서 시간이 모자라게 되었다!!
- 애자일의 무자비한 절단(Cut-off): 폭포수(Waterfall) 시대였으면 10 SP 모자라니까 "사장님 일정 1주일 미루겠습니다" 하고 개발자가 짤렸다. 애자일의 MoSCoW는 다르다. "시간 모자라? 젤 꼴등인 Could 10 SP 걍 빼서 가위로 싹둑 잘라 쓰레기통에 버려!! 그리고 2주 뒤 원래 약속된 날짜에 무조건 당당하게 쇼핑몰 오픈(Release) 강행해!!"
- 본질: 일정을 못 박아두고 기능(Scope)을 고무줄처럼 잘라버려 유연하게 런칭 날짜를 생명처럼 사수하는(Time-to-Market) 애자일 생존 철학의 완벽한 톱니바퀴다.
2. Should (우회로 가능) vs Must (절대 불가)의 뼈 때리는 식별 룰
"이게 Must인지 Should인지 기획자도 헷갈려요"를 감별하는 궁극의 치트키 질문.
-
"이 기능을 이번 오픈 때 못 짜면, 직원 한두 명이 손가락 노가다(수동) 쳐서라도 며칠 땜빵할 수 있습니까?"
-
YES (우회 가능) ➔ 무조건 Should (S): "이메일 자동 전송 시스템 못 짜면, 알바생이 손으로 직접 Gmail 복붙해서 쏠게요 ㅠㅠ" ➔ (이건 어떻게든 비즈니스가 돌아는 가니까 1순위 강등 ➔ Should).
-
NO (우회 절대 불가) ➔ Must (M): "PG사 신용카드 결제 연동 모듈 못 짜면 알바생이 계좌 이체 수동으로 받을래요?" ➔ "미쳤어요? 요즘 누가 계좌 이체해요 쇼핑몰 바로 망함!" ➔ (이건 사람이 땜빵 불가능하므로 0순위 ➔ Must).
-
📢 섹션 요약 비유: 애자일의 시간 박스(Timeboxing)와 MoSCoW는 **'2시간짜리 요리 대회(마스터셰프)'**와 같습니다. 시간이 5분밖에 안 남았습니다! **Must(핵심)**인 고기가 안 익었으면 시간 초과로 실격당해도 무조건 더 구워야 합니다. 하지만 **Could(장식)**인 파슬리 가루를 못 뿌렸다면? 아쉬워하지 말고 쿨하게 파슬리 통을 버리고 그냥 심사위원한테 당당하게 고기 요리를 내놓는 게 승리하는 방법입니다.
Ⅲ. 융합 비교 및 다각도 분석
딜레마: Kano Model (카노 모델) vs MoSCoW
둘 다 우선순위 매기는 툴인데, 어느 회의실에서 무슨 무기를 꺼내 들어야 할까?
| 비교 잣대 | MoSCoW 기법 (개발자/PM용 생존 칼 🔪) | Kano Model 카노 모델 (마케터/기획자용 유혹 립스틱 💄) | 아키텍트의 무기 스위칭 |
|---|---|---|---|
| 판단 기준 | ⏳ 시간과 자원 (Time & Resource) | 🤩 고객의 감동 (Customer Delight) | - |
| 분류 바구니 | Must (필수), Should (기둥), Could (옵션), Won't (버려) | Basic (당연), Performance (일원적), Excitement (매력적 헉!) | - |
| 언제 쓰는가? | "다음 달 오픈인데 시간이 없어!! 야빨리 쓰레기 기능 쳐내!!" 피 튀기는 스프린트 백로그 다이어트 칠 때. | "우리 앱 경쟁사랑 똑같은데 고객 꼬실 한 방(와우 포인트)이 없어 ㅠㅠ 기발한 기능 없냐?" 초기 기획 브레인스토밍할 때. | 기획 단계에선 카노 모델로 멋진 아이디어를 뿜어내고 ➔ 막상 코딩 칠 때는 MoSCoW로 예산 없다고 가위로 잔인하게 다 잘라버리는 융합 전술의 정석. |
과목 융합 관점
-
요구사항 공학 (Scope Creep의 심리적 마취제 W): 프로젝트 멸망의 1순위 원인 '스코프 크리프(범위 야금야금 팽창)'. 고객이 중간에 "이거 버튼 하나만 5분이면 추가하잖아!"라고 치고 들어온다. PM이 "절대 안 돼요!"라고 거절하면 고객은 "니들이 내 돈 먹고 일을 안 해?"라고 삐져서 감정싸움이 터진다. 이때 MoSCoW의 **'Won't Have (W)'**가 기적의 심리적 융합 마취제로 등판한다. PM이 웃으며 말한다. "오 고객님 짱 좋은 아이디어네요! 근데 이번 1차(v1.0) 런칭 백로그는 이미 꽉 찼으니, 이 쩌는 아이디어를 'Won't (이번엔 안 하지만 나중에 할 목록)' 바구니에 귀빈으로 VIP 모셔둘게요! 다음 v2.0 런칭 때 무조건 0순위로 까드릴게 찡긋 ^^*" 고객은 자기 아이디어가 버려진(Drop) 게 아니라 '특별 보관'된 줄 알고 안심하며 스코프 팽창을 멈춘다. W 바구니는 쳐내기 위한 쓰레기통을 '미래 자산의 금고'처럼 속여 파는 초특급 소프트웨어 심리학 융합의 미학이다.
-
클라우드와 DevOps (MVP, Minimum Viable Product 뼈대 구축): 스타트업 린(Lean) 사상의 핵심인 MVP(최소 기능 제품)를 깎아낼 때 MoSCoW가 메스로 쓰인다. AWS 클라우드에 처음 아키텍처를 올릴 때 "결제 트래픽 100만 방어해야 하니까 쿠버네티스(K8s) MSA 떡칠해야지(Could/Won't)" ➔ 돈 1억 타버리고 망한다. 클라우드 아키텍트의 MVP 뼈대는 오직 **'Must Have'**의 집합체다. "일단 EC2 1대에 결제 버튼만 달고 도메인 달아서 런칭해!(Must). 트래픽 안 터지면 쿠버네티스고 나발이고 필요 없으니까 오버엔지니어링 코딩 싹 다 금지(Won't)!" 비즈니스가 시장에서 검증(PMF)되기도 전에 화려한 인프라에 돈을 박는 죄악을 MoSCoW의 린(Lean) 통제선이 완벽히 가위로 잘라 방어한다.
-
📢 섹션 요약 비유: 카노(Kano) 모델이 자동차에 **'스포츠카 날개(매력적)를 달까, 가죽 시트(일원적)를 씌울까'**를 고민하는 디자이너의 행복한 고민이라면, MoSCoW는 공장장이 **"야 내일 출고인데 돈이 없어!! 날개(Won't) 당장 다 뜯어버리고, 에어컨(Could)도 빼!! 엔진이랑 바퀴(Must)만 달아서 당장 내보내 굴러가기만 하면 돼!!"**라며 처절하게 뼈대만 사수하는 야전 사령관의 핏빛 절규입니다.
Ⅳ. 실무 적용 및 기술사적 판단
실무 시나리오
-
시나리오 — Must Have의 인플레이션 현상과 강제 쿼터(Quota) 60% 제압: 대형 은행 앱 개편 TF 회의. 총 100개의 기능 티켓이 쌓였다. 외부 애자일 코치가 PM에게 "MoSCoW로 분류해 오세요"라고 숙제를 냈다. 다음 날 PM이 분류표를 가져왔는데, 100개 기능 중 95개가 **'Must Have(필수)'**에 박혀있었고 Could에 5개만 덜렁 있었다. 영업팀, 보안팀, 기획팀이 전부 "우리 부서 기능 1개라도 빼면 앱 런칭 결재 도장 안 찍는다!"라고 멱살 잡고 우겨대서 95개가 전부 Must로 팽창한 전형적인 사일로(Silo)의 막장 극이다.
- 판단: 우선순위의 파탄. 95%가 Must면 그건 우선순위가 없는 거다. 이 끔찍한 인플레이션을 찢기 위해 아키텍트는 짐보스(Timebox)의 **'60% 쿼터(Quota) 강제 룰'**을 회의실에 들이민다. "팀장님들, 전체 개발 시간이 1,000시간입니다. 애자일 법에 따라 Must 기능은 전체 예산의 60%(600시간)를 절대 넘을 수 없습니다. 나머지 40%는 예기치 못한 버그 수정과 Should의 몫입니다. 지금 95개가 900시간을 처먹고 있습니다. 당장 여기서 팀장님들끼리 합의해서 기능 35개(300시간 분량)를 멱살 잡고 끌어내려 Should나 Could로 강등시키지 않으시면, 제가 프로젝트 폭파(Abort) 때리고 철수하겠습니다!" 한정된 파이(60%)라는 물리적 족쇄를 채워야만 비로소 임원들이 거품을 빼고 '진짜 피 같은 기능(Core)'만 Must 바구니에 남기는 처절한 자본주의적 가지치기가 발동된다.
-
시나리오 — 기술 부채(Technical Debt) 갚기를 Should/Could로 치부하는 멍청함: 2주 단위 스프린트 플래닝. 개발자가 손을 들었다. "이번 스프린트엔 비즈니스 신기능 말고, 지난달 똥 싸놓은 데이터베이스 느려 터진 N+1 쿼리 최적화(리팩토링) 3일만 치고 갈게요." 기획자가 눈을 흘긴다. "그거 당장 돈 안 벌리잖아요? 눈에 안 띄는 코드 청소니까 **'Could Have(시간 남으면 해)'**로 뺄게요. 신규 룰렛 이벤트 페이지가 **'Must Have'**입니다." 3개월 뒤, DB가 타임아웃으로 뻗으며 이벤트 페이지가 먹통이 되고 회사 매출 수억이 날아갔다.
- 판단: 비즈니스 현업 주도(Business-led) 백로그의 가장 치명적인 **'비기능 요구사항(NFR) 천대 안티패턴'**이다. 현업 PM은 고객 눈에 띄는 화려한 화면 기능(Feature)만 Must로 올리고, 뒤에서 서버 뼈대를 강화하는 리팩토링이나 보안 패치는 죄다 쓰레기통(Could/Won't)으로 밀어 넣는 본능이 있다. 이를 방어하기 위해 실무 리드 아키텍트는 반드시 백로그에 **'IT-Driven Must Have (개발팀 독자 권력 할당제)'**의 융합 방벽을 쳐야 한다. "전체 스프린트 개발 시간 100시간 중 무조건 20%(20시간)는 기획자가 터치할 수 없는 기술 부채 척살(리팩토링/보안)용 Must Have 캐파로 고정 할당한다!" 이 20%의 세금(Tax) 징수 없이 신기능만 100% 짜는 회사는 1년 안에 레거시 똥밭에 깔려 모조리 뇌사(Shutdown)하게 된다.
┌─────────────────────────────────────────────────────────────┐
│ 실무 아키텍처: MoSCoW를 통한 스프린트 타임박스(Timebox) 쥐어짜기 도해 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ⏰ [ 2주짜리 스프린트 (Sprint) 개발자의 총 100시간 (Capacity) 빵통 ] │
│ │
│ [ 🔴 Must Have (60시간 꽉 채움) ] ◀─ (핵심: 이 구간은 60% 절대 넘지 말 것!)│
│ [ 🟠 Should Have (20시간 꽉 채움) ] │
│ [ 🟡 Could Have (20시간 꽉 채움) ] │
│ -------------------------------------- │
│ [ ⚪ Won't Have (0시간) ] ➔ 밖으로 쫓겨난 친구들 (냉장고 보관) │
│ │
│ ======= [ 🚨 개발 1주 차: 대형 버그 터짐 💥 시간 모자람! ] ========│
│ │
│ 👨💻 [ PM의 가위손 발동 (Scope 절단) ] │
│ - "야! 버그 고치느라 20시간 날아갔다! 배포일(오픈 날)은 절대 미룰 수 없어!!" │
│ - ✂️ 1타격: 🟡 Could (장식) 기능 20시간짜리를 쿨하게 통째로 들어냄 ➔ 버림! │
│ - ✂️ 2타격: 🟠 Should (기둥) 기능 중 10시간짜리 잘라서 다음 달로 미룸! │
│ │
│ 🌟 최종 결과: 🔴 Must (핵심 결제 기능 60시간) + 🟠 Should 일부(10시간) + │
│ 버그 수정(30시간)으로 딱 100시간 맞춤! "비록 폭죽 애니메이션(Could)은 빠졌지만│
│ 어쨌든 2주 뒤 약속된 금요일 날! 완벽하게 결제 100% 돌아가는 몰(MVP)이 라이브에│
│ 무사히 배포(Release)되었습니다 박수 짝짝!!" (Time-to-Market의 기적 성공)│
└─────────────────────────────────────────────────────────────┘
[다이어그램 해설] 폭포수(Waterfall)의 노예들이 애자일(Agile)로 넘어올 때 가장 이해하지 못하는 '범위 가변성(Scope Flexibility)'의 극치를 그린 도면이다. 폭포수 시대에는 "약속된 기능 100개를 다 못 짰으면 무조건 100개 짤 때까지 오픈(일정)을 뒤로 미루고 개발자가 3달 야근을 친다(일정 고무줄)". 애자일 MoSCoW의 철학은 정확히 반대다. "금요일 오픈(일정)은 태양이 식어도 무조건 고정(Fix)이다! 만약 코딩하다 시간이 모자라면? 밑바닥 등급표(Could ➔ Should)에 달린 기능들을 무자비하게 톱으로 썰어서 강제로 쓰레기통에 뱉어버려(Scope 쳐내기)!! 오픈 날엔 오직 살아남은 필수 뼈대(Must)만 들고 런칭하여 돈부터 벌어라!" 이 잔인한 가지치기가 없으면 회사는 영원히 출시(Release)의 단맛을 보지 못하고 고인 물로 썩는다.
도입 체크리스트
- 기술적: MoSCoW로 요구사항의 우선순위를 썰어놨다고 끝인가? 개발팀은 Must Have 티켓을 구현하기 위해 어떤 클라우드/아키텍처 스택을 올릴 것인지 아키텍처 비전(Architectural Runway)을 융합시켜 놓았는가? 무조건 Must라고 해서 "야 시간 없으니까 대충 PHP랑 오라클로 대충 P2P 스파게티 엮어서 1주 만에 오픈해"라고 발로 짜버리면(Quick and Dirty), 다음 달 Should/Could 기능을 붙이려 할 때 스파게티 코드가 엉켜서 손도 못 대고 뻗어버리는 끔찍한 **'설계의 복리 부채(Design Debt)'**를 덤터기 쓴다. Must 기능을 쳐낼 때에도 향후 마이크로서비스(MSA)로 뜯어내기 좋은 인터페이스 경계(Bounded Context) 정도는 가위로 칼같이 살을 발라놓는 우아한 MVP 코딩 타협점이 절대적으로 필요하다.
- 운영·보안적: 100만 명의 개인정보가 쌓이는 앱. 마케터가 "주말에 이벤트 쿠폰 10만 장 쏠 로직 짜줘! (Must)"라고 우긴다. 덤으로 보안팀은 "새로 바뀐 개인정보보호법에 맞춰 DB 암호화 솔루션 모듈 연동(AES-256) 새로 패치해 줘!"라고 한다. 마케터는 "보안 패치 눈에 보이지도 않는 거 당장 안 해도 회사 안 망해! 'Could Have'로 빼!"라고 억지를 부린다. 아키텍트의 뼈 때리는 저지선이 융합되어야 한다. "보안과 컴플라이언스(법적 규제)는 비즈니스의 우선순위(MoSCoW) 저울질 위에 올라갈 수 없는 '티어 제로(Tier 0: 절대 헌법)' 다!" 비즈니스 Must 기능보다 무조건 DB 암호화 패치가 먼저(Pre-requisite) 실행되어야만 회사가 과징금 100억 맞고 문 닫는 흑역사를 원천 차단한다.
안티패턴
-
'Won't Have' 바구니의 은폐와 기만 (The Icebox Deception): 애자일 팀의 평화로운 분위기를 지키겠답시고 PM이 저지르는 가장 사악한 기만술. 현업 부서장이 진짜 쓰레기 같은 아이디어를 던졌다("화면에 용이 날아다니면서 주식 차트를 브리핑하게 하자!"). PM이 그 자리에서 "아 그건 미친 짓(Won't)이니까 안 짤 겁니다 ㅋ" 하고 쳐내면 싸움이 나니까, 쓱 웃으며 **"아 너무 좋네요! 일단 백로그 젤 밑바닥에 'Could Have'로 조용히 킵(Icebox)해 둘게요 ^^*"**라고 거짓말을 친다. 1년 뒤 부서장이 "내 용 날아다니는 거 언제 오픈해?"라고 찾아온다. PM은 퇴사하고 없다. 남은 개발자는 이 쓰레기 티켓이 진짜 'Could'인 줄 알고 억지로 코딩하다 서버 메모리를 터트리고 만다. "쓰레기 요구사항은 백로그 밑바닥에 감추지 마라. 미움받을 용기를 가지고 그 자리에서 즉시 'Won't Have (이번 플젝에선 영원히 폐기)' 도장을 이마에 쾅 찍어 무덤으로 보내버려라." 비즈니스 거절의 명확함(Clear Rejection)이 없는 애자일은 결국 스코프 크리프의 악취 나는 늪에 익사한다.
-
📢 섹션 요약 비유: 현업의 쓰레기 아이디어를 'Won't(폐기)'라고 말 안 하고 'Could(나중에)'라고 얼버무리는 건, 아버지가 아들한테 로봇 장난감 사달라는 조르기에 **"안 돼!(Won't)"**라고 따끔하게 혼내지 않고 **"어~ 나중에 밥 잘 먹으면 사줄게~(Could 기만)"**라고 희망 고문 거짓말을 하는 짓입니다. 당장 울음(싸움)은 멈추겠지만, 1년 뒤 아들이 "밥 잘 먹었으니까 로봇 100개 다 사내놔!"라며 100배로 폭주할 때 회사 지갑(개발 리소스)이 거덜 나는 최악의 스노우볼 안티패턴입니다.
Ⅴ. 기대효과 및 결론
정량/정성 기대효과
| 구분 | 주먹구구식 100% 동시 개발 (폭포수 방식) | MoSCoW 우선순위 컷오프(Cut-off) 융합 도입 | 개선 효과 |
|---|---|---|---|
| 정량 | 100개 기능 다 짜려다 오픈일 매달 3개월씩 무한 연기 | 60개(Must)만 딱 짜서 버그 없이 제날짜 1차 런칭 완료 | 시장 진입 속도(Time-to-Market) 100% 사수 ➔ 초기 시장 선점 캐시플로우 창출 |
| 정량 | 쓸모없는 기능 30% 짜느라 고급 개발자 인건비 증발 | Could/Won't 쓰레기 기능 파악 후 코딩 전 조기 소각 | 아무도 안 쓰는(Dead Feature) 기능 개발 및 유지보수 잉여 M/M 30% 원천 삭제 |
| 정성 | "왜 내 부서 기능 빼냐" 목소리 큰 놈이 먼저 개발 쟁취 | "이거 Must 요건 못 채웠으니 룰대로 강등" 객관적 팩트 | 이해관계자 간의 감정적 사일로 충돌 억제 및 합리적 린(Lean) 합의 문화 정착 |
미래 전망
- AI (LLM) 주도 백로그 오토-프라이어리티(Auto-Prioritization) 혁명: 스크럼 룸에 모여 앉아 포스트잇을 화이트보드 이리저리 옮기며 3시간씩 "이거 M이야 S야" 싸우는 아날로그 시대가 막을 내린다. Jira(지라)에 챗GPT가 융합(Copilot)된다. 기획자가 티켓 100개를 우르르 올리면, AI 에이전트가 1초 만에 과거 회사의 장애 로그, 유저 클릭 히트맵(Amplitude), 수익 창출 기여도 데이터(ROI)를 거대 빅데이터 망으로 쫙 긁어와 분석한다. **"삐빅! 기획자님, 이 '3D 로티 폭죽 기능'은 작년 로그 분석 결과 수익 기여도가 0.1% 미만이므로 M이 아니라 'C(Could)' 또는 'W(Won't)'로 강제 스위칭하는 것을 제안합니다"**라며 인간의 주관적 탐욕(Ego)을 데이터(Data-Driven)의 팩트로 짓눌러버리는 무자비한 AI 재판관이 플래닝 회의의 상석을 지배할 것이다.
- 가치 흐름 매핑 (Value Stream Mapping, VSM)과의 4차원 융합: MoSCoW는 단순히 기능의 순서만 정하는 것을 넘어, 코드가 고객에게 배달되는 속도를 재는 데브옵스(DevOps)의 가치 흐름(VSM) 핏줄과 완전히 동기화된다. 아키텍트는 Must 기능의 코드가 개발자 노트북에서 출발해 젠킨스(CI)를 거쳐 라이브 서버로 날아가는(Lead Time) 파이프라인의 속도를 극단적으로 캐싱(최적화)하여 하이패스로 뚫어준다. 반면 Could 기능의 배포 파이프라인은 상대적으로 느리고 값싼 컴퓨팅 인프라(Spot Instance)로 던져버린다. 요구사항의 중요도 계급장(M, S, C, W)이 코드 컴파일과 클라우드 배포 서버의 하드웨어 리소스(CPU/RAM) 배분 스케줄러까지 완벽하게 스며들어 차별을 두는 인프라-비즈니스 궁극의 혼연일체 융합 시대가 도래한다.
참고 표준
- DSDM (Dynamic Systems Development Method): 영국의 똑똑한 엔지니어들이 1994년에 "프로젝트 예산과 시간은 픽스(Fix)해 두고, 기능(Scope)을 고무줄처럼 조였다 늘렸다 잘라 버리자!"라며 MoSCoW 기법을 처음으로 창안해 낸 애자일 1세대 뼈대 프레임워크 헌법.
- Pareto Principle (파레토의 법칙 / 80:20 법칙): "사용자가 환호하는 핵심 가치의 80%는, 전체 기능 중 상위 20%(Must Have)의 코드가 전부 만들어낸다. 나머지 80%의 쓰레기 코드(Could/Won't)를 짜느라 1년을 허비하지 마라!" MoSCoW의 솎아내기 칼춤을 뒷받침하는 우주 불변의 자본주의 소프트웨어 경제학 진리.
"버리는 것을 두려워하는 자는, 영원히 세상에 완벽한 무언가를 내어놓지 못한 채 쓰레기 코드의 무덤에서 질식한다." 폭포수(Waterfall)의 순진한 개발자들은 고객이 던진 100가지의 짐을 어깨에 다 짊어지고 사막을 건너려다 뼈만 남고 타죽었다. 하지만 애자일의 전사들은 MoSCoW라는 피 묻은 가위를 들고 사막 입구에 섰다. 그들은 "모든 기능이 다 생명처럼 중요하다"는 고객의 오만한 감성 팔이를 단칼에 베어버린다. 시스템이 숨 쉬기 위한 단 하나의 척추(Must)만을 남겨둔 채, 아름다운 화장(Could)과 불필요한 장신구(Won't)를 사막의 모래바람 속에 미련 없이 내던진다. 오픈 날이 다가올 때 밤을 새우며 코드를 더 우겨 넣는 것이 아니라, 용기 있게 기능의 살점을 도려내어 약속된 시간(Timeboxing) 안에 작지만 100% 완벽하게 뛰는 린(Lean)한 심장을 시장에 던져 생존을 증명하는 결단. MoSCoW는 단순한 분류법이 아니라, 오직 살아남는 코드만이 가치가 있다는 야생의 개발론을 관통하는 가장 잔인하고도 숭고한 결핍의 아키텍처다.
- 📢 섹션 요약 비유: MoSCoW 기법으로 코드를 짜는 건 **'응급실 외상 센터(트리아지 Triage)'**와 완벽히 같습니다. 100명의 환자(요구사항)가 밀려옵니다. 의사(개발자)와 시간은 한정되어 있습니다. 찰과상 환자(Could)나 가망 없는 환자(Won't)를 붙잡고 울며 시간을 버리면, 숨이 당장 넘어가는 10명의 중환자(Must) 골든타임을 놓쳐 병원이 망합니다. 의사는 피도 눈물도 없이 환자 이마에 빨간 스티커(Must), 노란 스티커(Should)를 쾅쾅 붙여 분류하고, 오직 당장 살려야만 하는 빨간 스티커 환자에게 전사적 자원(메스)을 쏟아부어 최적의 생존율을 쟁취하는 지독한 공학적 의료 판단입니다.
📌 관련 개념 맵 (Knowledge Graph)
| 개념 명칭 | 관계 및 시너지 설명 |
|---|---|
| 백로그 (Backlog) 정제 | 스크럼 플래닝 전에 쓰레기 기능이 쌓인 칠판을 닦아내는 행위. 이때 PM이 MoSCoW 가위를 들고 와서 "야 이거 이번 달에 못해!"라며 W 바구니로 쳐내는 방어선 융합. |
| 타임박스 (Timeboxing) | 2주(스프린트)라는 절대 늘릴 수 없는 철창 감옥. 이 감옥 때문에 개발자는 눈물을 머금고 100개 중 60개(Must)만 억지로 솎아내야 하는 결핍의 긴장감을 갖게 된다. |
| MVP (최소 기능 제품) | 돈 없고 시간 없는 스타트업이 시장 간을 보기 위해 던지는 뼈대 앱. MoSCoW의 'Must Have'만 영혼까지 긁어모아 런칭한 그 바싹 마른 코드 덩어리의 최종 완성본. |
| 카노 모델 (Kano Model) | MoSCoW가 '시간 없으니 쳐내자'는 개발자의 도끼라면, 카노 모델은 기획자가 '야 이거 넣으면 고객 감동(와우 포인트) 쩔겠지?'라며 환상을 심어넣는 기획의 화장 솔. |
| 스코프 크리프 (Scope Creep) | 고객이 "어? 버튼 하나만 5분이면 추가하잖아 ㅋ" 라며 범위를 야금야금 늘리는 기생충. MoSCoW의 'Won't(나중에 ㅋ)' 심리전으로 기분 안 상하게 막아버리는 카운터 타격 룰. |
👶 어린이를 위한 3줄 비유 설명
- 배낭을 메고 히말라야 험한 산(프로젝트)을 올라가야 하는데, 욕심 많은 친구가 냉장고, TV, 만화책 100개를 다 넣어서 너무 무거워 출발도 못 하고 있어요(폭포수 개발의 붕괴).
- 대장님이 나타나서 짐을 4개 상자 **MoSCoW(모스코우)**로 무자비하게 휙휙 던져 나눕니다! [M: 물과 식량(무조건!), S: 텐트(중요!), C: 만화책(있으면 좋지만 빼!), W: 황금(무거워 버려!)]
- 대장님 덕분에 우리는 살기 위해 꼭 필요한 물과 식량(Must 기능)만 메고 가장 가볍고 빠르게(애자일) 산꼭대기를 찍고 살아남을 수 있게 도와주는 똑똑한 **'짐 버리기 마법'**이랍니다!