Zwinne, wodospad i zmiany wymagań

10

Czy ktoś miał problem z definicją projektu zwinnego, który został przekroczony przez zmiany wymagań? Pracuję nad projektem deweloperskim, który jest realizowany za 4 tygodnie Sprint, ale między tymi Sprintami zawsze występują zmiany. Czy nadal jest to zdefiniowane jako Agile? Wydaje mi się, że jest to proces podrzędny - wymagania procesu zwinnego powinny zostać określone na początku sprintu i sprawdzone pod koniec. Czy mam rację? Daj mi znać o swoich doświadczeniach.

Aravind A.
źródło
„Zmiana wymagań” jest luźnym terminem. Czy zmiana jest spowodowana tym, że klient faktycznie zmienił zdanie na temat zatwierdzonego wymogu? Co spowodowało tę zmianę? Jeśli nadal tak się dzieje, musisz ponownie sprawdzić, w jaki sposób zbierasz wymagania. Żadna metodologia SE nie była w stanie zaspokoić braku właściwego gromadzenia wymagań.
NoChance,
@Emmad Zmiany wymagań mają miejsce podczas UAT, gdy użytkownicy uważają, że użyteczność można poprawić za pomocą określonych środków. Powoduje to narastanie problemów przed produkcją. To z pewnością nie jest zwinne.
Aravind A,
@Aravind A: UAT dzieje się na końcu sprintu, prawda? Następnie wszelkie nowe pomysły / zmiany, które pojawią się podczas UAT, powinny normalnie stać się opowieściami do następnego sprintu (jeśli używasz sprintu).
sleske,
Być może to, co sugeruje @sleske, działa dla Ciebie, ale łatwość obsługi może być z góry prototypowana, jeśli użytkownik ma wyjątkowe wymagania. Czasami w projektach ograniczonych zasobami musisz kontrolować ambicje użytkowników.
NoChance

Odpowiedzi:

9

Wymagania procesu zwinnego powinny zostać określone na początku sprintu i poddane przeglądowi w kierunku jego przebiegu. Czy mam rację?

Nie, zależy to od charakteru projektu (i procesu).

Istnieje kilka zwinnych modeli programistycznych, w których wymagania mają być ustalone podczas sprintu i powinny się zmieniać tylko podczas następnego sprintu (wyraźnym przykładem jest Scrum).

Istnieją jednak procesy, w których zmiany mogą nastąpić prawie w dowolnym momencie (o ile klient zaakceptuje opóźnienia i dodatkową pracę, którą powoduje zmiana). Kanban jest często używany do zarządzania tymi przepływami pracy (chociaż Kanban można również łączyć ze Scrumem).

Wybór modelu zależy od szczegółów każdego projektu.

Tak więc, jeśli klient czuje, że potrzebuje możliwości ciągłej zmiany wymagań, wówczas zwinny proces może to uwzględnić. Jednak klient powinien zdawać sobie sprawę z konsekwencji ciągłych zmian i powinien zrozumieć, że spowolni projekt.

Sprowadza się to do zasad zawartych w zwinnym manifeście - „Osoby i interakcje dotyczące procesów i narzędzi” oraz „Reagowanie na zmianę w związku z realizacją planu”.

Śleske
źródło
Czy nie sprawia, że ​​proces jest zbyt zwinny? Mam na myśli, jak daleko może zajść Zwinność? Jeśli programista po raz pierwszy spełnia wymagania, następnym razem będzie zapotrzebowanie. Wydaje mi się, że jest to jeden z wielu problemów, które powodują odrzucenie jakości kodu.
Aravind A,
@AravindA Jakość kodu powinna stanowić odrębny problem i bez względu na to, ile razy kod się zmienia, zespół powinien zawsze koncentrować się na tych samych standardach jakości kodu. W rzeczywistości jakość kodu jest ważniejsza, ponieważ wymagania i kod ciągle się zmieniają.
wałek klonowy
2
@maple_shaft ma rację - jakość jest (przynajmniej w większości) prostopadła do zmiany wymagań. Daj mi pytanie: zaczynam pisać dobry kod. Jeśli skończę i otrzymam nowe wymaganie, lub w połowie zrobię i dostanę zmianę, zaczynam (ponownie) pisać dobry kod. Po podkreśleniu wpływu na bieżący harmonogram / zobowiązanie / itp.
sdg
Zmiany wymagań, które mają duży wpływ na architekturę systemu, spowodują poważne opóźnienia lub kompromisy w zakresie jakości. Dlatego powinieneś zrobić dobrą starą analizę wodospadu (może być również iteracyjną), w której próbujesz zmniejszyć ryzyko ich „nagłego” pojawienia się.
MAR,
@sles Dzięki za wyjaśnienie. Myślę, że teraz to rozumiem. Myślę, że będę musiał lepiej poznać Agile.
Aravind A,
12

Myślę, że pytanie, które powinieneś zadać, brzmi: dlaczego jesteś przesadzony przez zmiany wymagań? Najczęstsze przyczyny to:

  • Programiści nie mają (wystarczającego) kontaktu z użytkownikami końcowymi, więc nie mogą zrozumieć potrzeb użytkowników. Zamiast tego traktują wymagania jak abstrakcyjną kostkę Rubika - przestrzegają liter wymagań, nawet nie próbując zrozumieć swojego ducha
  • Ktoś (np. Z marketingu) dodaje wymagania, które nie mają żadnego sensu dla użytkownika końcowego (ale np. Brzmią dobrze w broszurze). Jest więc bitwa między „prawdziwymi” wymaganiami a „innymi” wymaganiami, o którą walczyli deweloperzy
  • Zakres projektu jest nieokreślony („Cóż, jeśli mimo to wdrażasz edytor tekstu, nie możesz po prostu dodać małego modułu, który zajmuje się naszą księgowością płac? Och, a Bill z drugiego zespołu programistów zapytał, jak ciężko by to było sprawić, by edytor tekstu również skompilował kod C ++? ”)

Niezależnie od głównego problemu, musisz to naprawić. Utopienie go pod warstwami „Agile” (lub innej metodologii) nie zadziała.

nikie
źródło
@nike Thanks. Tak właśnie myślałem. Twój trzeci punkt pasuje do mojego scenariusza. Niektórzy klienci po prostu korzystają z pracy zwinnej, myśląc, że to srebrna kula, aby szybciej wykonać pracę.
Aravind A,
9

Przynajmniej w Scrumie, który wydaje się być zwinnym procesem, który jest obecnie najbardziej popularny wśród typów zarządzania, zakres sprintu jest ustalony. Jeśli Twój Back Sprint zmienia się podczas sprintu, to nie jest Scrum, to chaos. Backlog Sprint powinien zostać utworzony na początku sprintu i pozostać niezmienny do końca sprintu (w tym momencie utworzysz nowy Backlog Sprint dla następnego sprintu).

Jeśli Twój Backlog produktu zmienia się podczas sprintu, to nic wielkiego. Zmiany stają się po prostu nową pracą, która ma priorytet, jest szacowana i wybierana jak każde inne wymaganie do następnego sprintu. Jeśli wymagania zmieniają się tak bardzo, że Właściciel produktu musi regularnie przerywać sprint, masz Kłopot z dużą literą „T”.

Może potrzebujesz krótszych sprintów?

Adam Jaskiewicz
źródło
+1 za potrzebę krótszych sprintów. Skróć do 2 tygodni i sprawdź, czy to pomoże.
Jan
1
4 tygodnie rzeczywiście trwają dość długo jak na sprint, szczególnie w przypadku projektu, który cierpi z powodu niestabilności wymagań.
Carson63000,
7

Dla zdrowia psychicznego programistów najlepiej jest, jeśli wymagania nie zmienią się podczas rewizji / sprintu.

W twojej sytuacji istnieją dwie oczywiste opcje:

  1. krótsze sprinty
  2. poproś klienta, aby zgodził się nie zmieniać wymagań podczas rewizji / sprintu, chyba że cała rewizja / sprint zostanie anulowana i ponownie zaplanowana

Bardzo polecam oba .

Steven A. Lowe
źródło
3

Główny problem polega na tym, że uważasz, że używasz Scruma, ale tak nie jest. Zwłaszcza twój właściciel produktu tego nie przestrzega. W Scrumie sprint jest bezpieczną strefą i nie można wprowadzać żadnych zmian w historiach zatwierdzonych użytkowników, chyba że bieżący sprint zostanie anulowany. Egzekwowanie tego jest obowiązkiem mistrza Scrum. Jeśli to nie działa w twoim środowisku, oznacza to problem z procesem = nie używasz Scruma.

Najprostszą zmianą, jaką możesz zrobić (jeśli chcesz podążać za Scrumem), jest skrócenie sprintu - na przykład tydzień. 4-tygodniowe sprinty były rozważane jako opcja we wczesnych dniach Scruma, ale dziś powszechne są 1-2 tygodnie, a 3 tygodnie są uważane za górną granicę. 4 tygodnie to bardzo długi czas w zmieniającym się otoczeniu.

Ladislav Mrnka
źródło