성공적인 소프트웨어 신상품 개발가이드
첫 출시를 위한 상품개발 시엔 개발규모에 맞는 일정과 예산을 결정하지만, 출시 후 유지보수 단계의 기능 개선은 정해진 인력이 일정한 주기(예 1개월)에 릴리즈 가능한 개발규모를 결정한다. 일정한 주기로 상품을 릴리즈 하는 것을 타임박싱(Time Boxing) 또는 기차모델이라고 한다. 타임박싱은 정해진 릴리즈 주기를 유지한다는 의미이다. 예를 들어 1개월 내 A,B,C 세 가지를 릴리스 하기로 하였지만 C를 완료하지 못해도 정해진 릴리즈 주기를 변경하지 말고 A와 B를 릴리즈하고 C는 다음 릴리즈로 연기한다. 기차모델은 기차가 정해진 시간에 역에 도착하여 승객을 내리고 태우는 것처럼 정해진 주기에 따라 상품을 업데이트하는 것을 의미한다.
릴리즈 주기는 고객이나 영업이 진행 중인 스프린트가 끝날 때까지 기다릴 수 있을 정도로 충분히 짧아야 하지만, 품질도 확보하면서 지속 가능한 페이스를 유지할 수 있을 만큼은 길어야 한다. <린 소프트웨어개발의 적용, 2007>에서는 이러한 상황을 실내 난방장치에 비유하여 다음과 같이 설명하고 있다.
실내 난방장치는 설정온도보다 1,2도 떨어질 때까지 난방가동을 지연시키고, 설정온도보다 1,2도 올라갈 때까지 난방장치를 가동했다가 중단한다. 반응까지의 지연시간은 사람들이 차이를 잘 느끼지 못할 정도로 충분히 작으면서도 난방장치를 꺼졌다 켜졌다를 반복하지 않을 정도로 충분히 크다.
동일주기의 릴리즈를 유지하면 다음과 같은 장점이 있다.
- 개발팀 내부에 지속 가능한 리듬을 만든다.
최초 출시를 위한 프로젝트는 모든 것을 쏟아 붓는 단거리 경주라면, 출시 이후 유지보수는 상품을 단종하기 전까지 지속하는 마라톤에 비유할 수 있다. 마라톤의 페이스처럼 개발팀이 소화 가능한 리듬을 만들지 못하면 지속 가능할 수 없다. 우리의 일상생활도 24시, 일주일, 1년 등 리듬으로 유지된다. 대부분의 조직에서 주간회의는 정해진 요일 정해진 시간에 수행한다. 리듬은 업무를 예측 가능하게 한다. 예를 들어 매월 마지막 주 목요일에 개선된 상품기능을 릴리즈 하려면 전월 마지막 주에 다음 달 릴리즈 기능을 확정해야 하고 매월 초엔 릴리즈 계획을 수립하고, 매월 마지막 주 월요일에는 릴리즈 기능에 대한 쇼케이스를 하는 것과 같이 많은 작업들이 사전에 정해진다. 또한 상품 개발팀은 에러도 고치고, 조직에서 요구하는 개발 외 업무도 수행하면서 소화 가능한 신규개발 업무의 규모를 나름대로 체득하게 된다.
- 상품기획, 영업, 마케팅 업무도 반복적인 리듬을 따른다.
매월 신규기능을 릴리즈하는 체계가 구축되었다는 것은 개발팀만 리듬을 따르는 것이 아니다. 상품관리자는 매월 정해진 시점까지 상품 요구사항의 우선순위를 결정해야 한다. 영업, 마케팅은 언제까지 신규기능을 요청하면 언제쯤 릴리즈 될지 예측할 수 있고, 금월에 릴리즈 할 기능이 최종 확정되는 시점은 언제쯤인지 알 수 있다. 결과적으로 상품 개발외 업무도 정해진 리듬을 따르고 수행시점이 예측가능해 진다.
- 품질수준이 높아진다.
일정 주기로 릴리즈 하기 위해서는 소프트웨어 아키텍처도 변경에 유연해야 하고, 코드품질도 좋아야 하고, 소프트웨어 설치도 용이해야 한다. 소프트웨어 품질의 뒷받침 없이 짧은 주기의 릴리즈를 유지하기 힘들다.
- 일정준수를 위한 버퍼확보나 학생 신드롬을 최소화시킨다.
1개월 동안 팀이 할 수 있는 업무의 규모에 대해 암묵적인 동의가 이루어진 상태이기 때문에 버퍼를 확보할 필요가 없고, 확보도 어려워진다. 또는 규칙적인 리듬에 따라 일을 하기 때문에 마감일에 임박해 일을 하는 학생 신드롬도 줄어든다.
- 릴리즈 주기를 짧게 가져가면 비효율을 제거할 수 있다.
호수에 물이 빠지면 바위가 드러나듯이 릴리즈 주기를 짧게 가져가면 각종 비효율 (불필요 문서, 단계별 검토의 비효율 등)을 제거할 수 있다. 짧은 릴리즈 주기를 유지할 수 있는 조직일수록 그만큼 상품개발의 비효율이 줄어들었다고 할 수 있다.
조직에서 릴리즈 주기(스프린트 주기)를 결정했으면 예외 없이 적용해야 한다. 예외적으로 스프린트 연장을 허용하면 조직의 중요한 규율을 잃게 된다. 또한 스프린트에서 정의한 우선순위를 중간에 변경하지 않는 것도 중요하다. 스프린트 백로그는 확정(freezing)하여 변경을 허용하지 않되, 상품 백로그는 변경을 허용한다.
https://brunch.co.kr/@kbhpmp/160