INVEST 원칙
INVEST
방법
유저 스토리를 백로그에 넣기 전에 여섯 가지를 물어 쓸 만한 스토리인지 걸러 내는 점검 기준입니다.
등장 배경
유저 스토리 형식이 퍼지면서 이상한 일이 생겼습니다. 문장은 전부 "누구로서 무엇을 하고 싶다" 모양인데 그중 절반은 쓸 수 없는 항목이었습니다. 형식은 문장의 생김새만 정할 뿐 그 안에 무엇이 들어가야 하는지는 말해 주지 않았기 때문입니다.
그래서 회의가 자주 멈췄습니다. 앞으로 만들 후보를 우선순위대로 모아 둔 목록인 제품 백로그에서 이번 주기에 할 일을 고르는 자리였는데, "관리자로서 권한을 관리하고 싶다" 라는 줄 앞에서 태오가 이게 이틀짜리인지 3주짜리인지 모르겠다고 했습니다. 권한 관리가 어디부터 어디까지인지 문장 어디에도 없었으니 지현도 답하지 못했습니다.
이런 일이 매주 반복되자 문제가 개별 문장이 아니라 걸러 내는 단계가 없는 것이라는 게 드러났습니다. INVEST 는 그 단계를 만든 장치입니다. 스토리를 백로그에 넣기 전에 통과시킬 질문 여섯 개를 정해 두고, 회의에서 막히기 전에 미리 걸러 냅니다.
사용 절차
스토리 하나를 붙들고 여섯 글자에 해당하는 질문을 순서대로 던지고, 아니오가 나온 항목은 그 자리에서 고쳐 씁니다. 여섯 글자는 스토리가 갖춰야 할 성질의 머리글자입니다.
- Independent, 독립적인가. 다른 스토리를 먼저 끝내야만 시작할 수 있으면 걸립니다. A를 끝내야 B를 할 수 있는 두 항목은 순서를 바꿔 담을 수 없어 계획의 선택지를 줄입니다.
- Negotiable, 협의 여지가 있는가. 해법까지 못 박혀 있으면 걸립니다. "설정 화면 오른쪽 위에 토글을 단다" 는 협의할 것이 없지만, "주말에는 알림을 받고 싶지 않다" 는 토글과 시간대 설정 중 무엇이 나은지를 논의할 수 있습니다.
- Valuable, 가치가 있는가. 이 스토리가 끝나면 사용자나 사업 쪽에서 무엇이 좋아지는지 한 줄로 말할 수 있어야 합니다. "DB 테이블을 하나 추가한다" 는 그 한 줄이 안 나옵니다.
- Estimable, 크기를 매길 수 있는가. 작업의 상대적 크기를 나타내는 스토리 포인트를 붙일 수 있는 상태인지 묻습니다. 개발자가 숫자를 못 부르면 모르는 것이 남아 있다는 뜻이고, 그때는 조사부터 따로 떼어 냅니다.
- Small, 충분히 작은가. 한 스프린트 안에 끝날 크기여야 합니다. "결제 기능 전체" 는 스토리가 아니라 여러 스토리로 쪼개지는 큰 덩어리, 즉 에픽입니다.
- Testable, 확인할 수 있는가. 끝났는지 아닌지를 누구나 같은 답으로 판정할 수 있어야 합니다. "화면을 쓰기 편하게 만든다" 는 판정이 안 되고, 이 판정 기준을 문장으로 적어 둔 것이 인수 조건입니다.
실무에서는 이 여섯 질문을 백로그 항목을 다듬는 백로그 정리 자리에서 돌립니다. 스프린트 플래닝에 들어가기 며칠 전에 앞쪽 항목만 훑으면 충분합니다.
적합한 상황과 한계
이 여섯 질문이 가장 잘 듣는 자리는 스프린트를 돌리며 사용자 기능을 꾸준히 내보내는 팀의 백로그 앞부분입니다. 스토리가 매주 새로 들어오고, 그중 무엇을 다음 주기에 담을지 매번 정해야 하는 상황에서 미리 거르는 값이 가장 큽니다.
반대로 잘 안 듣는 자리도 분명합니다.
- 기능이 아닌 항목에는 대부분 걸립니다. 조사만 하는 작업, 서버를 옮기는 작업, 오류를 고치는 작업은 Valuable 을 사용자 언어로 답하기 어렵습니다. 이런 항목은 기준을 억지로 맞추지 말고 스토리가 아닌 다른 유형으로 따로 관리합니다.
- 독립성은 완전히 달성되지 않습니다. 로그인 없이 마이페이지를 만들 수는 없습니다. 현실적인 목표는 완전한 독립이 아니라 순서를 바꿀 수 있는 항목의 비율을 늘리는 것입니다.
- 여섯 개를 통과해도 좋은 스토리라는 보장은 없습니다. 이 기준은 문장의 모양만 봅니다. 그 기능을 만들어야 하는지, 지금 만들어야 하는지는 묻지 않습니다. 여섯 항목을 전부 통과한 스토리로 채운 분기가 통째로 헛일이 되는 일은 얼마든지 있습니다.
실무 용례
"이거 INVEST 에서 S 가 걸려요. 한 스프린트에 안 끝납니다."
크기가 너무 크니 쪼개자는 말입니다.
"T 를 못 채우겠는데요. 뭘 보고 끝났다고 할지 정해 주세요."
인수 조건을 적어 달라는 요청입니다.
"I 는 어차피 완벽하게 안 되니까 순서만 정리하고 넘어갑시다."
독립성에 시간을 더 쓰지 말자는 제안입니다.
페이지덱의 백로그 정리 자리는 매주 목요일 오후입니다. 지현이 다음 두 주기에 들어갈 만한 항목 열댓 개를 미리 골라 오고, 태오가 그 자리에서 하나씩 여섯 질문을 겁니다. 대개 열댓 개 중 서넛이 걸리는데 걸리는 이유는 매번 비슷합니다. 크기가 크거나, 끝났는지 판정할 기준이 없거나 둘 중 하나입니다.
걸린 항목은 그 자리에서 고칩니다. "권한을 관리하고 싶다" 는 "팀 관리자로서 구성원을 뷰어로 바꿀 수 있어야 한다" 와 "구성원을 초대할 권한을 특정 인원에게만 주고 싶다" 둘로 갈라졌고, 각각에 인수 조건 세 줄씩이 붙었습니다. 30분이 걸렸지만 이 30분은 플래닝 회의에서 쓰던 30분을 옮겨 온 것이라 새로 쓴 시간이 아닙니다.
흔한 오해
INVEST 를 스토리 쓰는 형식으로 아는 경우가 많습니다. 유저 스토리를 배울 때 문장 형식과 이 여섯 글자를 같이 듣게 되니 둘을 한 덩어리로 기억하게 됩니다. 하지만 형식은 문장을 쓰는 틀이고 INVEST 는 다 쓴 문장을 재는 자입니다. 순서도 반대라서, 먼저 쓰고 나중에 잽니다. 둘을 섞으면 "INVEST 형식으로 써 주세요" 같은 말이 나오고, 받는 쪽은 무엇을 하라는 것인지 알 수 없습니다.
여섯 항목을 전부 통과해야 백로그에 들어갈 수 있다고 읽는 것도 흔한 오해입니다. 여섯 개가 나란히 적혀 있으니 체크박스로 보이는 것이 자연스럽습니다. 그런데 이 기준을 만든 목적은 통과 여부를 가리는 것이 아니라 대화를 여는 것입니다. 실제 백로그에는 아직 크기를 못 매기는 항목도, 독립적이지 않은 항목도 들어갑니다. 전부 통과해야 한다고 정해 두면 팀은 통과시키려고 문장을 손보기 시작하고, 쪼갤 수 없는 일을 억지로 둘로 가른 스토리 두 개가 백로그에 남습니다. 문장은 기준을 통과했는데 일은 여전히 한 덩어리인 상태입니다.
같이 보면 좋은 페이지
마지막 업데이트 2026-09-16