Użyłem tej analogii ... wiele projektów oprogramowania zaczyna się, ponieważ osoba, która potrzebuje jakiegoś oprogramowania, zna odpowiednik „złotej rączki” i zatrudnia tę osobę, aby zbudowała dla nich oprogramowanie równoważne szopie ogrodowej. To niewielka, przydatna mała aplikacja, która bardzo dobrze wykonuje swoją pracę.
Następnie klient wraca do złotej rączki, zadowolony ze swojej pracy i prosi go o zmianę oprogramowania, aby zrobić jeszcze jedną rzecz. Wiele razy ta nowa funkcja nie ma wiele wspólnego z pierwotną prośbą, więc prawie tak, jakby prosili cię o zbudowanie innego pokoju z tyłu szopy ogrodowej z osobnym wejściem.
Następnie chcą umieścić światło w szopie, aby odzyskać złotą rączkę, a on uruchamia pojedynczy obwód z głównego panelu w domu, instaluje wyłącznik światła łańcucha na suficie każdego pokoju i łączy je z obwodem .
Klient następnie decyduje, że chce uruchomić jakieś elektronarzędzie, ale wciąż wysadza wyłącznik, więc oddzwania do tej osoby, a on musi oderwać pojedynczy obwód, który poprowadził do głównego panelu, i zainstalować większy przewodnik i podpanel w szopie. Musiał dwukrotnie poprowadzić przewód i zapłacić za dwa pozwolenia elektryczne itp. Jest to nieefektywne.
Następnie klient prosi o coś absurdalnego: czy możesz zamienić moją szopę ogrodową w garaż? Nie chcę, żebyś zrobił wszystko, co zrobiłeś ... Chcę tylko, żebyś to powiększył, żeby móc tam zaparkować samochód. Następnie, w wielu przypadkach, złota rączka myśli, że „klient ma zawsze rację” i kontynuuje budowę dodatków na 3 stronach szopy, aby ją powiększyć, burzy ścianę między partycjami itp. Oczywiście dach kończy się zwiotczenie, ponieważ nie jest odpowiednio skonstruowane itp.
Więc klient nie jest już pod wrażeniem, ale wciąż chce więcej. Wzywają złotą rączkę w kółko, aby po prostu dodała jeszcze jeden pokój lub zmieniła istniejący pokój, aby to zrobić itp. W efekcie powstaje coś, co wygląda jak Nora i jest tak samo architektonicznie zdrowe.
Teraz większość ludzi nie jest wystarczająco głupia, aby wypróbować to w świecie konstrukcyjnym, ale dzieje się tak cały czas w świecie oprogramowania, ponieważ ludzie nie nawiązują takich połączeń:
Osoba wykwalifikowana do zbudowania naprawdę ładnej szopy ogrodowej niekoniecznie ma kwalifikacje do budowy domu.
Jeśli z góry wiedziałeś, że zamierzasz zbudować dom etapami, ale miał on zacząć się tylko jako szopa ogrodowa, zrobiłbyś wszystko inaczej, a szopa ogrodowa kosztowałaby znacznie więcej (nalałbyś naprawdę gruba podkładka, upewnij się, że poprowadziłeś wystarczająco duży przewodnik, aby w pełni załadować gotowy dom itp.).
W wielu przypadkach przejście z jednego etapu na drugi wymaga cofnięcia dużej ilości wcześniej wykonanej pracy, co powoduje, że jest ona droższa, niż się wydaje.
W świecie budownictwa możemy dać klientowi dobry pomysł, jak będzie wyglądał wynik na etapie projektowania, ale nie mamy takiej umiejętności w świecie oprogramowania. Jeśli dotarłeś do tego momentu, w zasadzie napisałeś znaczną część oprogramowania.
Manifest Agile jest wynikiem uznania, że analogia oprogramowania / konstrukcji jest zepsuta. Rzeczy takie jak zautomatyzowane testy jednostkowe i iteracyjne cykle uwalniania nie mają konstrukcji równoległej. Te rzeczy wykorzystują prawie zerowy koszt przejścia od projektu do prototypu (nazywamy to kompilacją lub budową).