저는이 비유를 사용했습니다. 소프트웨어를 필요로하는 사람이 "핸디맨"과 동등한 것을 알고 있기 때문에 많은 사람들이 소프트웨어 프로젝트를 시작하고이 사람을 고용하여 정원 창고와 같은 소프트웨어를 만듭니다. 작고 유용한 작은 응용 프로그램으로 잘 작동합니다.
그런 다음 고객은 재주꾼에게 돌아가 작업에 만족하고 소프트웨어를 한 번 더 변경하도록 요청합니다. 이 새로운 기능은 원래 요청과 관련이없는 경우가 많으므로 별도의 입구가있는 정원 창고 뒤에 다른 방을 지을 것을 요구하는 것과 거의 같습니다.
그런 다음 헛간에 빛을 넣고 싶어서 핸디맨이 돌아오고 집의 메인 패널에서 단일 회로를 실행하고 각 방의 천장에 풀 체인 전등 스위치를 설치하고 회로에 연결합니다 .
그런 다음 고객은 일부 전동 공구를 사용하기로 결정했지만 회로 차단기를 계속 불고 있기 때문에 사람에게 전화를 걸어 실제로 메인 패널에 연결된 단일 회로를 제거하고 더 큰 도체와 장치를 설치해야합니다. 창고의 하위 패널. 그는 와이어를 두 번 돌리고 두 개의 전기 허가 등을 지불해야했습니다. 이것은 비효율적입니다.
그런 다음 고객이 부조리 한 것을 요청합니다. 내 정원 창고를 차고로 바꿀 수 있습니까? 나는 당신이 한 일을 다시하지 않기를 원합니다 ... 나는 거기에 내 차를 주차 할 수 있도록 더 크게 만들기를 원합니다. 그런 다음, 많은 경우에, 핸디맨은 "고객이 항상 옳다"고 생각하고 창고의 3면에 추가 물을 만들어 더 크게 만들고 칸막이 사이의 벽을 떨어 뜨립니다. 물론, 지붕 끝 제대로 구성되지 않았기 때문에 늘어짐
따라서 고객은 더 이상 감동하지 않지만 여전히 더 많은 것을 원합니다. 그들은 재주꾼에게 계속해서 방을 하나 더 추가하거나 기존 방을 변경하여이 작업 등을 수행하도록 요청합니다 . 버로우 처럼 보이고 건축 적으로 소리가 나는 것으로 끝납니다 .
이제 대부분의 사람들은 건설 세계에서 이것을 시도하기에 어리석은 것이 아니지만 사람들은 이러한 연결을 만들지 않기 때문에 소프트웨어 세계에서 항상 발생합니다.
정말 멋진 정원 창고를 지을 자격이있는 사람이 반드시 집을 지을 자격이있는 것은 아닙니다.
단계적으로 집을 지을 것이라는 것을 미리 알고 있었지만 정원 헛간으로 만 시작한다면 다른 일을하고 정원 헛간이 훨씬 더 많이들 것입니다. 정말 두꺼운 패드라면 완성 된 집 등을 충분히 실을 수있을 정도로 큰 도체를 작동시켜야합니다.)
많은 경우에, 한 단계에서 다른 단계로 업그레이드하는 것은 이전에 수행 된 많은 작업을 취소하여 원래보다 더 비싸게 만듭니다.
건설 세계에서는 디자인 단계에서 결과가 어떻게 보일지 고객에게 좋은 아이디어를 제공 할 수 있지만 소프트웨어 세계에는 그러한 능력이 없습니다. 그 시점에 도달하면 기본적으로 소프트웨어의 상당 부분을 작성했습니다.
애자일 선언문은 소프트웨어 / 구성 유추가 손상되었음을 인정한 결과입니다. 자동화 된 단위 테스트 및 반복 릴리스주기와 같은 것은 구성에서 병렬이 아닙니다. 이러한 것들은 디자인에서 프로토 타입으로가는 거의 제로 비용 (컴파일 또는 빌드라고 함)을 이용합니다.