2~4주간의 짧은 사이클로 고객의 요구사항을 최대한 반영한 프로그램를 만들기 때문에 워터폴 방식보다는 고객의 참여 범위가 비교적 넓고 고객 가치를 효과적으로 전달할 수 있다는 큰 장점이 있음.
급변하는 시장에 변화에 민첩하게 대응하기 비교적 수월함
제품 개발 과정에서 각기 다른 직무를 수행하는 팀원들의 기민한 협력으로 예상치 못했던 시너지 효과가 발생할 수 있음
고객 가치가 급변하는 불확실성이 높은 시장에서는 적합하겠지만 반대로 변화가 적고 유동성이 낮은 시장에서는 오히려 애자일 방식이 효율성이 떨어질 수 있음
고객이 가진 문제와 해결책을 분명하게 이해하고 결과에 대한 확신이 있다면 (이미 입증된 결과라면) 워터폴 방식이 적합함
애자일 적용으로 인해 내부 협력이 잘 이루어지지 않아 부작용이 생길 수 있고, '무한 수정'으로 인해 너무 개발자 중심으로 프로젝트가 흘러갈 수 있음
스크럼은 팀이 함께 작업할 수 있도록 지원하는 프레임워크입니다.
스크럼은 팀이 경험을 통해 배우고, 문제를 해결하면서 스스로 구성하고, 얻은 것과 잃은 것을 되돌아보며 지속적으로 개선하도록 유도합니다.
1. 백로그 구성
주요 업무는 제품 비전을 향해 제품을 유도하고 시장과 고객에 대한 최신 정보를 파악하는 것입니다.
그렇게 해서 제품 소유자는 사용자 및 개발 팀의 피드백을 사용하여 이 목록을 유지하여 이 목록을 정돈된 상태로 유지하고 언제든지 작업할 준비가 되도록 돕습니다.
2. 스프린트 계획
이번 스프린트동안 수행할 작업(범위)을 개발 팀이 해당 회의에서 계획합니다.
이 회의는 스크럼 마스터가 주도하며 팀이 스프린트 목표를 결정하는 곳입니다.
그런 다음 특정 사용자 스토리가 제품 백로그에서 스프린트에 추가됩니다.
이러한 스토리는 항상 목표와 일치하며 스프린트 중에 구현할 수 있도록 스크럼 팀에서도 동의합니다.
3. 스프린트
스프린트는 스크럼 팀이 함께 작업하여 증분을 완료하는 실제 기간입니다.
스프린트에서 일반적인 기간은 2주지만, 어떤 팀은 범위를 지정하는 데 1주일, 또는 중요한 증분을 제공하는 데 1달이 더 쉽다고 느낄 수 있습니다.
이 기간 동안 필요에 따라 제품 소유자와 개발 팀 간에 범위를 다시 논의할 수 있습니다.
이것이 스크럼의 경험적 성격을 나타내는 가장 중요한 부분입니다.
계획부터 회고에 이르는 모든 이벤트는 스프린트 중에 발생합니다.
스프린트에 대한 특정한 시간 간격이 수립되면 개발 기간 동안 일관성을 유지해야 합니다.
이를 통해 팀은 과거의 경험으로부터 배우고 그 통찰력을 이후의 스프린트에 적용할 수 있습니다.
3. 일일 스크럼 또는 스탠드업
같은 시간(보통 아침)에 진행하는 아주 짧은 회의이며 일을 간단하게 유지하는 데 도움을 줍니다.
대부분 15분정도 소요됩니다.
일일 스크럼의 목표는 모든 팀원이 같은 정보를 공유하고, 스프린트 목표를 이해하고, 다음 24시간 동안의 계획을 세우는 것입니다.
스탠드업은 스프린트 목표를 충족하는 데 우려 사항 또는 방해 요소에 대해 알리는 시간입니다.
1. 가치 있는 소프트웨어를 조기에 지속적으로 제공하여 고객을 만족시키는 것
이 개념을 적용하면 프로세스의 민첩성을 높이고 변화에 대응할 수 있음
고객은 '지불하는 가치'를 더 자주 얻을 수 있기 때문에 만족함
초기 피드백을 제공하므로 프로세스 후반에 중요한 변경을 수행할 가능성을 줄임
2. 프로젝트 후반에도 요구 사항 변경 가능함
고객의 경쟁 우위를 위해 변화를 활용함
불확실성을 포용하고 늦게 변경하더라도 최종 고객에게 많은 가치를 제공할 수 있음을 인정하는 것을 목표로 함
Agile의 반복 프로세스 특성으로 인해 팀은 적시에 이러한 변경 사항에 대응하는 데 문제가 없어야 합니다.
3. 빈번하게 가치 제공
4. silo를 붕괴해라
목표는 가치를 창출하는 사람들과 가치를 계획하거나 판매하는 사람들 사이의 동기화를 만드는 것임
이러한 방식으로 내부 협업을 원활하게 수행하고 프로세스 성능을 향상시킬 수 있음
5. 동기가 부여된 개인을 중심으로 프로젝트 구축하라
세세한 부분까지 관리하는 것을 줄이고 의욕적인 팀 구성원에게 권한을 부여하여 신속하게 프로젝트를 수행하는 것에 있음
팀을 신뢰하지 않고 회사의 가장 작은 결정조차 중앙 집중화하면 팀 참여를 방해할 뿐임
6. 가장 효과적인 의사 소통 방법은 대면이다
7. 작동하는 소프트웨어는 진행의 주요 척도이다.
얼마나 오래 시간을 썻는지, 코드 줄수가 얼마나 긴지는 중요하지 않다
고객이 기대하는 방향으로 코드가 구현이 안되면 그것이 문제다.
8. 지속 가능한 작업 속도 유지
9. 지속적인 우수성으로 민첩성 향상
10. 심플함은 필수
고객은 개발자가 투자한 노력에 대해 비용을 지불하지 않는다.
그들은 그들이 가지고 있는 특정한 문제에 대한 해결책에 비용을 지불한다.
Agile을 구현할 때 이 점을 명심하고 단지 하기 위한 작업을 피하도록 하여라.
11. 자기 조직화 팀이 가장 큰 가치를 창출합니다
12. 작업 방식을 정기적으로 반영하고 조정하여 효율성 향상
프로젝트 관리가 수월하다. 초기부터 출시에 이르기까지 각 단계 별로 만족시켜야 할 최소 요구 사항이 있고 요구 사항에 따라 문서화가 잘 돼있기 때문이다.
각 단계별 업무 분담의 효율성을 최대한 끌어올려 초기 설정한 요구 조건을 만족시키는 것에 집중하기 때문에 손에 익은 작업일수록 생산 속도를 가속화할 수 있다는 장점이 있음
초기 요구 사항이 명확하기 때문에 프로젝트가 끝나고 제품이 완성되었을 때 결과물이 고객에 기대에 미치지 못할 수 있다는 한계점이 있다.
고객이 참여할 수 있는 단계는 시작 단계와 마지막 단계(출시 시점)이기 요즘처럼 고객의 요구사항이 급변하는 시대에는 즉흥적으로 대응이 어려움
만약 뒤늦게 제품을 다시 수정해야 하는 상황이 생긴다면 수정하고 시험하기를 다시 번복해야 하기 때문에 많은 비용과 많은 시간을 지불해야함.
[참조] https://kanbanize.com/agile/project-management/principles