스토리포인트(Story Point)는 애자일(Agile) 소프트웨어 개발, 특히 스크럼(Scrum) 프레임워크에서 사용자 스토리(User Story) 또는 작업 항목을 완료하는 데 필요한 상대적인 노력의 크기를 추정하기 위해 사용되는 측정 단위이다. 절대적인 시간(시간, 일, 주)이 아닌 상대적 추정 방식을 채택한다.
개념 및 정의
스토리포인트는 작업의 복잡성(Complexity), 업무량(Effort), 위험도(Risk), 불확실성(Uncertainty) 등 여러 요소를 종합적으로 고려하여 부여된다. 숫자 자체에 절대적인 의미는 없으며, 동일한 팀 내에서만 유효한 상대적 기준으로 작동한다. 예를 들어, 단순한 버그 수정은 1포인트, 복잡한 신규 기능 개발은 8포인트로 평가할 수 있다.
특징
스토리포인트는 시간 단위가 아니므로 팀원 개개인의 작업 속도 차이가 추정치에 영향을 미치지 않는다. 동일한 작업에 대해 숙련자와 초보자가 다른 시간을 소요하더라도 스토리포인트 값은 동일하게 유지된다. 팀은 과거에 완료한 스토리포인트 합계를 기반으로 벨로시티(Velocity, 속도)를 산출하고, 이를 통해 향후 스프린트에서 수행 가능한 작업량을 예측한다.
추정 방법
일반적으로 피보나치 수열(1, 2, 3, 5, 8, 13, 21…)이나 이와 유사한 점수 체계를 사용한다. 이는 큰 작업일수록 추정의 불확실성이 커지는 현실을 반영하기 위함이다. 대표적인 추정 기법으로 플래닝 포커(Planning Poker)가 사용된다. 팀원 각자가 독립적으로 포인트를 제시한 후 의견 차이가 있을 경우 논의를 통해 합의를 도출한다. 팀은 기준이 되는 사용자 스토리(Reference Story)를 하나 선정하고, 다른 항목들을 이 기준과 비교하여 상대적 포인트를 부여한다.
활용
스프린트 계획 시 팀의 평균 벨로시티를 바탕으로 현실적인 스프린트 목표를 설정하는 데 활용된다. 제품 책임자(Product Owner)는 스토리포인트를 참고하여 백로그 항목의 우선순위를 조정한다. 또한 작업 항목이 일정 규모(예: 20포인트)를 초과할 경우 더 작은 단위로 분할하도록 유도하는 기준으로도 사용된다.
유의사항
스토리포인트는 시간 단위가 아니므로 일정 추정이나 개인의 성과 평가에 직접적으로 사용되어서는 안 된다. 서로 다른 팀 간의 스토리포인트를 비교하는 것은 의미가 없으며, 각 팀만의 고유한 기준을 유지하는 것이 중요하다. 스토리포인트는 팀의 생산성을 측정하는 도구가 아니라 작업 규모를 이해하고 우선순위를 판단하기 위한 보조 수단으로 사용되어야 한다.