Jest jedna rzecz, którą zawsze zastanawiałem się, czytając o tych wszystkich „zwinnych pracach programistycznych” tutaj na SE i innych stronach:
W „tradycyjnej” inżynierii oprogramowania
- zbierać wymagania użytkownika,
- napisz specyfikację na podstawie tych wymagań,
- dać klientowi i wystawić rachunek za dotychczas wykonaną pracę,
- wykonać (przybliżony) projekt techniczny, aby można było oszacować koszt wdrożenia,
- podać użytkownikowi ofertę cenową za wdrożenie,
- poczekaj, aż klient podpisze specyfikację i zaakceptuje ofertę,
- zaprojektować, wdrożyć, przetestować,
- rachunek.
Jeśli podczas procesu zmieniają się wymagania, wysyłasz ofertę (z ceną) żądanych zmian (lub robisz to za darmo, jeśli zmiana jest niewielka, podoba ci się klient, a klient nie robi tego zbyt często) .
Jak to działa (finansowo) w zwinnym projekcie, w którym częste zmiany wymagań są częścią tego procesu?
- Czy piszesz ofertę na każdą zmianę projektu? (Czy to nie byłby niezły bałagan?)
- A może negocjujesz stałą cenę i masz nadzieję, że klient nie zmieni zbyt często wymagań? (Może to być ryzykowne, znam klientów, którzy skorzystaliby z tej okazji, aby poprosić o nowe funkcje przez lata, zanim zaakceptują ukończenie projektu).
- A może po prostu rozliczasz klienta za całkowity wymagany czas? (Może to być ryzykowne dla klienta, który nie zna z góry kosztów).