Myślę, że pierwszą rzeczą do zrozumienia jest to, że istnieje różnica między byciem Zwinnym a byciem Zwinnym. Powolne wdrażanie zwinnych technik i cech - zespoły interdyscyplinarne, planowanie adaptacyjne, ewolucyjne / przyrostowe dostarczanie, iteracje z ograniczeniami czasowymi, a nawet wprowadzanie koncepcji Lean są bardzo różne niż wprowadzanie Extreme Programming, Scrum lub Crystal.
Wyraźnie wspominasz o zaangażowaniu klienta. Tak, wiele metodologii zwinnych wymaga zaangażowania klienta, ale nie musi to być zwinne. W każdym programie związanym z rządem / obroną zawsze miałem menedżera programu lub projektu, który był w kontakcie z klientem. Ta osoba staje się „głosem klienta”. Może to zostać spowolnione, gdy telekonferencja, e-mail lub zadzwoń i wyjaśnij, ale możesz mieć jedną osobę (lub grupę, jeśli masz również wicepremierzy), która jest przedstawicielem klienta Twojego zespołu. Trzeba przyznać, że to nie to samo. Ale czy nie jest zręczny w kwestii elastyczności i reagowania na zmiany?
Wspominasz także o kilku kluczowych pojęciach: predefiniowanych wymaganiach, zleceniach dotyczących funkcji „rzucanych ponad ścianę”, braku ustalania priorytetów, ponieważ „wszystkie są ważne” oraz projektach o stałych kosztach i / lub ustalonym harmonogramie. Każdą z nich można rozwiązać na różne sposoby.
Jeśli uważasz, że masz wszystkie wymagania z góry, prawdopodobnie nie. Wymagania się zmieniają. To, że masz specyfikację „zakończoną i wylogowaną”, nie oznacza, że jest ustawiona na kamieniu. Biorąc pod uwagę posiadane dokumenty wymagań, uchwyć je, jak czujesz się komfortowo i / lub w sposób określony w umowie i dostarcz wymagania, projekt i architekturę. Ponadto sprawdź, czy możesz potraktować te żywe dokumenty (dokument projektu, który widziałem dziś w pracy, jest oznaczony jako Wersja G, co oznacza, że jest na 8 aktualizacji). Zapytaj, ile możesz zostawić jako TBD w dowolnej iteracji i ile trzeba teraz wzmocnić - może być trochę dawania i przyjmowania.
Bądź zwinny dzięki swojej dokumentacji. Nie powielaj wysiłków między „tym, czego chce Twój zespół”, a „tym, czego chce klient”. Na przykład, jeśli Twój klient chce tradycyjnej specyfikacji wymagań oprogramowania, a Twój zespół chce korzystać z historii użytkowników, spróbuj dostosować się do tradycyjnego SRS i używać elementów akcji i listy elementów akcji kroczącej zamiast historii użytkowników, aby nie tracić czasu sformułowanie zarówno „system powinien ...”, jak i „musi być w stanie, ponieważ”. Wymaga to jednak dyscypliny ze strony zespołu, aby dostosować się do różnic między projektami. Uchwyć problemy w odbiciach.
Po przejściu do programowania możesz uruchomić 5 lub 6 iteracji, a następnie zaprosić klienta do swojego zakładu, aby zobaczył podzbiór wdrożenia. Opłucz i powtórz ten proces. Nie jest to ciągłe zaangażowanie wymagane przez niektóre metodologie, ale masz przewagę dzięki wysokiej widoczności. Jeśli Twój klient mówi „nie”, przynajmniej próbowałeś. Jeśli powiedzą tak, możesz oświecić ich zwinnością. Przy jednym projekcie, w którym byłem, klient odwiedzał witrynę co kilka miesięcy (zwykle 3-5 miesięcy). Obserwowali nas, jak przechodzimy testy jakości, rozmawiali o problemach z inżynierami, a biznes z biurem programu / projektu. Była to okazja dla wszystkich, aby dostać się na tę samą stronę.
Testy i konserwacja odbywają się tak samo, jak w innych zwinnych projektach. Twórz procedury testowe i dokumentuj defekty w odpowiedni sposób, śledź wskaźniki według zobowiązań umownych i dokumentuj wyniki testów. Jeśli chcesz śledzić TDD, idź do niego. Ciągła integracja to kolejny dobry pomysł. Podczas spotkań o statusie projektu kierownik projektu może użyć tych informacji, aby powiedzieć „wdrożyliśmy wymagania N, przeszliśmy testy M, testy X przeszliśmy” i zaktualizowaliśmy kondycję i status projektu osobom z pieniędzmi.
Mówiąc o pieniądzach, mamy problem kosztów stałych i / lub ustalonego harmonogramu.
Radzenie sobie z ustalonym harmonogramem jest dość proste. Biorąc pod uwagę swoje wymagania, wiesz, ile iteracji możesz wykonać. Twoje obciążenie pracą dla każdej iteracji jest ściśle określone pod względem funkcji do wdrożenia, testowania i integracji. Może to być trudne, ale nie jest niemożliwe rozbicie funkcji i przypisanie ich do iteracji z góry. To wraca do mojego punktu o zaproszeniu klienta - jeśli masz rok i korzystasz z 2-tygodniowych iteracji, być może zapraszaj klienta kwartalnie (i zapraszaj go co kwartał) i pokaż mu wyniki poprzedniej pracy. Niech zobaczą twoje priorytety wymagań, twoje plany na przyszłość i jak planujesz.
Postępowanie ze stałym budżetem jest podobne. Wiesz, ile masz czasu, ile zasobów masz na projekt, ile kosztują, a tym samym ile godzin każdy może przepracować na jedną iterację. Chodzi tylko o to, aby każdy dokładnie to śledził. Jeśli Twoja firma może zjeść koszt nadgodzin, idź na całość. W przeciwnym razie upewnij się, że wszyscy pracują przez odpowiedni czas, i używaj dobrych umiejętności zarządzania czasem i boksowania czasu, aby wszyscy byli produktywni. Potrzebne są bardziej produktywne godziny, aby obniżyć koszty - dostarczać dokumenty i oprogramowanie o wartości dodanej bez kosztów spotkań i kosztów ogólnych.
Ostatecznie niekoniecznie chodzi o bycie Zwinnym, ale o stosowanie rzeczy, które czynią Agile dobrym i zwinnym. Być w stanie reagować na zmiany wymagań, być w stanie dostarczać częste oprogramowanie, nawet jeśli klient tego nie chce, tylko tworzyć dokumentację o wartości dodanej (wraz z tym, co jest zobowiązane na mocy umowy) i tak dalej.