somekind napisał(a):
Tak, w świecie idealnie doskonałych projektantów zbierających doskonale precyzyjne wymagania od idealnie rozgarniętych klientów... to i tak by nie działało, bo po 5 lat cały genialny projekt może być już zbędny przez zmiany w prawie, koniunkturze albo po prostu będzie tak odstawał wyglądem od standardu na rynku, że nikt nie będzie chciał tego używać.
Istnieje bardzo dużo projektów, gdzie wymagania są znane precyzyjnie przed rozpoczęciem projektu.
Przede wszystkim bardzo wiele projektów to reimplementacje istniejących projektów - robienie tego samego tylko trochę lepiej / w nowocześniejszej technologii itp.
I również wiele projektów, gdzie wymagania wcale się bardzo się nie zmieniają.
Nadal istnieje bardzo wiele systemów mających po 20 lat i więcej, które działają do dziś i spełniają swoje potrzeby.
Niedawno widziałem całkiem fajny POS napisany prawdopodobnie w jakimś Turbo Pascalu / Turbo C++ (charakterystyczne okienka Turbo Vision, tryb 80x25). I działało to zarąbiście dobrze.
Druga rzecz - nigdzie w definicji waterfalla nie jest powiedziane, że projekt musi trwać 5 lat. Wiadomo, ze tej metodyki nie wybiera się do robienia gigantycznych projektów o takiej skali czasowej w dziedzinach gdzie wiadomo że wymagania się zmieniają (np. prawo). Ta metodyka ma swoje wady znane tak od lat 1960 lub wcześniej. Z mojego doświadczenia najlepiej sprawdzają się podejścia hybrydowe - gdzie jednak mamy trochę waterfalla na początku, ale ograniczamy go do małego MVP a potem rozwijamy projekt szybkimi iteracjami.
To właśnie w scrumie masz ten problem ze możesz zapędzić się w kozi róg i nagle okazuje się że twoje 100k linii napisanych w poprzednich sprintach nadaje się do przepisania.
Jak mogę się zapędzić, skoro po 1-3 tygodniach widać, czy się nie zbłądziło, więc co najwyżej tyle pracy można stracić?
No właśnie tak możesz się zapędzić, że ponieważ realizujesz wymagania przyrostowo (i niejako odkrywasz je w trakcie a nie na początku), to po zrealizowaniu 99 wymagań klienta możesz natrafić na te setne wymaganie, które nagle wywraca cały system do góry nogami. I mam na to trzy przykłady z życia.
-
Apka do radia. Pisałem kiedyś o tym chyba w wątku WTF. Jak najbardziej robiona "zwinnie" - klient chciał widzieć postęp to go widział. Co tydzień nowe ficzery w UI. A to wyświetlanie okładek albumów, a to wyszukiwarka, a to możliwość zapisu ulubionych, a to nowa fancy grafika itp. No po prostu projekt szedł jak burza. Wprawdzie odtwarzał cały czas jedną nagraną lokalnie piosenkę w jakimś wavie bo "to na razie wystarczy na potrzeby demo", ale klient widział, że śmiga. No i na 2 tygodnie przed deadlinem chłopaki dopisali interfejs do streamów i podpięli prawdziwy kodek do radia (AAC) i okazało się że dupa, nie odtwarza radia tylko ciągle się tnie. Pożar w firmie był nieziemski. Napisali apkę do radia, która nie odtwarza radia xD
-
Serwis do wyszukiwania ogłoszeń. Nie ja pisałem, ale konsultowałem na końcu jak wybuchł pożar. Zatrudnieni jacyś tani pehapowcy, implementowali serwis przez rok i w sumie wszystko działało. No prawie. Bo na końcu okazało się, że to ma działać na milionie ogłoszeń a nie dziesięciu. I całą koncepcję użycia MySQLa na jednym serwerze do tego szlag trafił, a sprawa skończyła się w sądzie.
-
Słynna próba napisania solvera sudoku przez pewnego piewcę agile / TDD (Ron Jeffries), którą tu już kiedyś przytaczałem. Podobna sytuacja - napisał kupę ładnego kodu, jak najbardziej iteracyjnie (chyba z 5 postów na blogu) ale doszedł do ściany bo nie wiedział jak tak naprawdę rozwiązać główny problem. Są pewne rzeczy, których nie da się rozwiązać / projektować przyrostowo - albo bierzesz pod uwagę od początku wszystkie kluczowe wymagania, albo zostajesz z czymś co zupełnie nie działa.
W przypadku waterfalla, zrobiłbyś analizę wszystkich wymagań na początku i wytypował wymagania najbardziej ryzykowne. I te byś zrealizował w pierwszej kolejności.
Krolik napisał(a):
W ogóle po to w inżynierii stosuje się projekty aby zmniejszyć ryzyko że coś pójdzie nie tak podczas budowy czy użytkowania.
Tak, w inżynierii.
IT to nie jest inżynieria. Może za kilkadziesiąt lat będzie, jak ludzie wyrosną z etapu stosowania jednego narzędzia do wszystkich problemów, i związanej z tym tej ciągłej huśtawki, w której najpierw się technologię kocha i źle używa, a potem nienawidzi winiąc za fiasko przedsięwzięcia.
IT to jest inżynieria, a w każdym razie powinna być.