소프트웨어 개발 과정에서 발생하는 낭비란?
고객에게 가치를 더하지 못하는 활동을 의미한다.
애자일 개발 전무가인 메리 포펜딕과 톰 포펜딕은 린 원리에 입각하여 소프트웨어 개발 과정의 낭비 요소 일곱 가지를 제시했다.
소프트웨어 개발의 낭비 요소
1. 미완성 작업
2. 추가 프로세스
3. 추가 기능
4. 멀티태스킹
5. 대기 시간
6. 문서 전달
7. 결함
1. 미완성 작업
IT 프로젝트에서 고객에게 가치가 있는 것은 고객이 사용할 실제 시스템과 매뉴얼이다.
중간 산출물은 필요한 업무이기는 하지만 고객 관점에서 실질적인 가치를 제공하지는 않는다.
미완성 상태인 중간 산출물을 최소화할 수 있도록 해야 한다.
2. 추가 프로세스
프로젝트를 진행할 때는 표준 프로세스라는 것이 있다. 하지만 때론 업무로드로 작용할 수 있다.
개발팀에 가치를 주지 못하는 프로세스는 주기적으로 검토하고 개선할 필요가 있다.
3. 추가 기능
어쩌다 한 번 사용할지도 모르는 기능을 계속 추가하면 그만큼 유지보수 노력이 많이 든다.
고객이 직접 요구를 하던, 개발자가 자체적으로 판단을 하던 불필요한 기능은 최소화해야 한다.
4. 멀티태스킹
프로젝트를 진행하다 보면 한 사람이 3~5개의 프로젝트에 참여하기도 한다.
현실적으로 어쩔 수 없을 때가 많지만 통상적으로 비효율적일 때가 많다.
프로젝트마다 이해관계자도 다르고, 요구사항도 다르다.
이럴 때 여러 프로젝트를 맡게 되면 업무 전환 할 때마다 시간이 그대로 낭비된다.
5. 대기 시간
프로젝트를 진행하다 보면 빠르게 의사 결정해야 할 일들이 생긴다.
이때 바로 빠르게 결정할 수 있다면 좋지만
그렇지 않다면 약속 시간과 장소를 별도로 잡아야 한다.
대기하는 동안 다른 일을 한다 하더라도 시간 낭비가 발생한다.
6. 문서 전달
폭포수 개발 방식은 문서에 모든 정보가 단겨 있다는 것을 전제로 한다.
하지만 고객은 생각하는 것을 모두 말로 표현하지 못하고 말로 표현한 것이라도 모두 문서에 담지 못한다.
전통적 프로젝트에서 개발자는 고객의 요구사항을 문서로 전달받는다.
하지만 문서만 보고 개발하면 고객의 기대와 상당히 다른 결과물이 나올 수 있다.
전적으로 문서에만 의존해서는 안된다.
고객과 자주 커뮤니케이션할 때 올바른 요구사항이 나온다.
7. 결함
결함이 발생했다는 것 자체가 낭비 요소다.
그렇기 때문에 애자일 개발에서는 결함이 발생하지 않도록 예방에 초점을 맞춘다.
구현과 테스트가 일체화된 공정 하나로 진행하여 코딩 단계부터 결함을 예방하는데 힘쓴다.
코딩을 시작하기 전에 테스트케이스를 먼저 작성하고 해당 테스트를 통과하는 코드를 구현함으로써 처음부터 발생될 수 있는 결함을 줄이려고 노력한다.
이렇듯 애자일이란 전통 개발방법에서 형식적인 것을 제외하고 낭비 요소를 최소화하기 위한 방법론이다.
방법이 정해진 것은 없다.
애자일에서도 여러 방법들을 제시하기는 하지만 상황에 따라서는 데일리미팅보다는 전통적인 방법인 주간보고가 더 효율적일 수 있다. 중요한 것은 형식적인 것이 아닌 실질적인 것이어야 한다는 것이다.
너무 애자일 형식에 맞추려 하지 말고 내가 진행하고 있는 프로젝트에 집중하고 몰입할 수 있도록 하자.
'공부는 평생하는 것이다 > 애자일' 카테고리의 다른 글
[IT] 애자일을 알고 싶다면? (애자일 추천서적) (0) | 2023.06.07 |
---|---|
[IT] 애자일 행동원칙 12가지 (0) | 2023.05.28 |
[IT] 데일리 스탠드업 미팅 (0) | 2023.05.02 |
[IT] 애자일 선언문 (0) | 2023.04.24 |