Główną przyczyną twojej frustracji sytuacją jest prawdopodobnie spostrzeganie i wprowadzanie w błąd / niewłaściwe terminy stosowane przez klienta. Klient zwykle nie przychodzi do ciebie z listą wymagań , ale lista życzeń każdej rzeczy, o której może pomyśleć, może być dla nich przydatna. Nie są to wszystkie wymagania, ponieważ klient nie spędził jeszcze czasu, aby naprawdę zastanowić się, czy każda funkcja jest naprawdę wymagana .
Nie zawsze jest to problem
Jeśli twój klient ma pieniądze na wszystkie te funkcje i chce się z nim rozstać, a tak naprawdę nie zależy ci na rozwiązaniu rzeczywistych, rzeczywistych problemów, jakie ma klient, może to być bardzo lukratywny projekt. Zdarza się to bardzo, bardzo rzadko, a dla większości programistów zabija duszę, ponieważ możesz z góry poczuć, że projekt ostatecznie nie odniesie sukcesu dla klienta (nawet jeśli odniesie sukces finansowy dla Ciebie jako programisty). Jest to również wysokie ryzyko, ponieważ prawdopodobnie skończysz z projektem o stałym koszcie z dużą niepewnością, a naprawdę błędem jest oszacowanie ryzyka w dużych projektach.
Co jeśli jest to problem?
Załóżmy, że nie jesteś w tak rzadkiej sytuacji. W takim przypadku będziesz chciał zająć się dwoma głównymi niedociągnięciami na liście życzeń, jak podano:
- Jest mało prawdopodobne, aby klient miał dobre pojęcie o kosztach opracowania tak dużej listy wymagań, więc jest mało prawdopodobne, aby uzyskać umowę na kwotę, której faktycznie potrzebujesz.
- Jest mało prawdopodobne, aby ta lista życzeń dokładnie i zwięźle opisała prawdziwy problem, który klient ma i chce rozwiązać.
Z mojego doświadczenia wynika, że trzeba rozwiązać problem 2, aby naprawić 1. Drobiazgowanie do rzeczywistego problemu oznacza, że Ty, programista, masz teraz niezbędny wkład, aby dokonać kreatywnych kroków w rozwiązaniu problemu w sposób, o którym sam klient nawet nie pomyślał. Rozwiązania te będą prawdopodobnie znacznie tańsze i szybsze niż wdrożenie pełnej listy życzeń.
Jak to naprawić?
Jak mówi Matthew Flynn w swojej odpowiedzi - zacznij od tego, aby klient nadał priorytet wymaganiom. Nie zawsze jest to łatwe, ale zmusza ich do zrobienia tego. Jeśli to konieczne, użyj wyrażenia „Jeśli ktoś trzymałby ci pistolet przy głowie, jaki pojedynczy warunek byś zachował?” Podczas tego procesu często przekonasz się, że klient tak naprawdę nie ma jasnego pojęcia, co oznaczają poszczególne wymagania. W takim przypadku zrób to, co sugeruje Peter Rowell, i przekonaj klienta do pracy za pośrednictwem historii użytkowników. Ty i klient zaczniecie lepiej rozumieć problem i wymagania, a następnie będziecie mogli powrócić do ustalania priorytetów. Powtarzaj te kroki tak często, jak potrzebujesz, aż poczujesz się komfortowo, wiedząc, że możesz rozwiązać problem klienta .
Jak to odpowiada na pytanie dotyczące opracowania rozwiązania?
Po utworzeniu listy wymagań z priorytetami, masz dane potrzebne do zasugerowania klientowi stopniowego procesu rozwoju. Nie musisz nazywać go Zwinnym, ale możesz zasugerować, aby rozbić umowę na mniejsze części dla każdego wymagania (lub niepodzielnego zestawu wymagań) i dostarczyć je pojedynczo, z potwierdzeniem przez klienta. Możesz też zrobić wszystko i wykorzystać wiele zasobów dostępnych online i offline, aby przekonać klienta, że w ich najlepszym interesie jest współpraca w jednym ze zwinnych stylów programowania. W każdym razie możesz przedstawić swoją umowę / propozycję projektu w formie, która wyraźnie sugeruje te elementy składowe wymagań w kolejności priorytetowej, każda z własnym kosztem i wnioskiem. Trzymaj marchewkę przed klientem,