Największą wadą zwinnego rozwoju, z jaką się spotkałem, jest to, że ludzie nie zaangażowani w rozwój koncentrują się na mantrze, że historia użytkownika (3-10 idealnych osobodni) nie powinna zawierać więcej niż 1-3 zdań takich jak:
Jako klient mogę korzystać z wyszukiwania tekstowego, aby znaleźć produkty, których szukam.
Dając to zdanie, kierownicy projektu oczekują ode mnie, jako programisty, dokonania oceny i opracowania historii. Zakładają, że zwinny rozwój oznacza, że takie zdania to wszystko, co muszą przekazać programistom.
Nie będę ich winić, ponieważ dobrze znana literatura na temat zwinnego rozwoju stwarza wrażenie, że to rzeczywiście zadziałałoby. Przeczytałem około 2 stron w języku naturalnym na historię w „Planning XP”, ale to wszystko. Ponieważ „działające oprogramowanie” jest uprzywilejowane w stosunku do „kompleksowej dokumentacji”, wydaje się, że tego tematu zasadniczo się unika.
Rzeczywistość jest oczywiście taka, że jeśli deweloper ma taką możliwość, rozmowa z klientem przedstawia długą listę wymagań, jakie klient ma wobec tej historii:
- Potrzebujemy operatorów logicznych, takich jak AND i OR.
- Potrzebujemy rozmytego wyszukiwania wszystkich terminów.
- Musimy wyszukiwać według pojedynczych słów, a także według frazy.
- Nie chcemy znaleźć produktów spełniających kryteria X, Y i Z.
- Chcemy posortować wynik. Aha, a przy okazji, użytkownik może wybrać kryteria sortowania w polu kombi z opcjami a, b i c.
Widzisz więc, że nie mówię o szczegółach technicznych, projekcie oprogramowania, a nawet szczegółach implementacji. To czyste wymagania. Im dłużej rozmawiamy, tym bardziej klient zdaje sobie sprawę, że tak naprawdę jest wiele do powiedzenia na temat tego, czego chce.
Ale dość często znajduję się w sytuacji, gdy takie informacje nie są dostarczane lub są bardzo tandetne. Ani nie jest możliwe, żebym przeprowadził wywiad, ani osoba, która byłaby w stanie przeprowadzić wywiad, nie dostarczy mi wyniku.
Czasami menedżerowie nawet wymyślają szczegóły techniczne, takie jak „chcemy wyszukiwać Lucene”, ale nie chcą myśleć o tym, czy chcą znaleźć tylko nazwy produktów lub ich opisy. Czasami myślę, że są po prostu leniwi;)
Dla mnie jest to najważniejszy problem w projektach, w których pracuję (aplikacja internetowa e-biznes, 500-2000 osobodni na projekt). Rozwiązałem ten problem dość często, a menedżerowie zdają sobie sprawę, że większość programistów ma problem z tą sytuacją. Uważają jednak, że programiści są po prostu zbyt „perfekcjonistami”. Wydają się zirytowani, że programiści „zawsze chcą mieć wszystko określone”.
Ze względu na brak ogólnie przyjętych liczb trudno się kłócić. Wszyscy wiedzą, jak długo powinna trwać iteracja. Ale nikt nie jest w stanie powiedzieć, jakie wymagania są potrzebne do oszacowania i opracowania historii.
Czy masz jakieś referencje?