Mamy projekt, który wszyscy mówią, że będziemy robić zwinnie, ale wątpię, abyśmy jasno zrozumieli, co to jest zwinność.
W poprzednich projektach mieliśmy spotkania dotyczące planowania, a następnie zdefiniowaliśmy dziennik wstecz produktu i przydzieliliśmy pracę programistom w 2-3 tygodniowych sprintach. Każdego ranka mieliśmy spotkania scrumowe (które zdawały się trwać za pół godziny za każdym razem), a potem każdy deweloper kontynuował. Prawie nikt nie napisał żadnych testów do końca sprintu, a praca, która nie została ukończona, została dodana do następnego sprintu.
Programiści prawie ze sobą nie rozmawiali, a rozwój nie był związany z TDD. W rzeczywistości większość deweloperów miała specyfikację na początku i dopiero od 2 do 3 tygodni przygotowano sprint. Nie było prawie żadnej komunikacji z klientem / akcjonariuszem.
Dział jakości zaangażował się zwykle kilka miesięcy później i do tego czasu stwierdziliśmy brak wymagań, co dodatkowo zwiększyło ilość pracy, którą musieliśmy wykonać. Wyraźnie nie było pętli sprzężenia zwrotnego.
Więc moje pytanie brzmi: gdzie popełniliśmy błąd i jak mogę zapobiec popełnianiu przez zespół tych samych błędów.
Odpowiedzi:
To, co opisujesz, nie jest zwinne z definicji (Manifest zwinny) , to Wodospad z codziennymi spotkaniami o statusie. Zwinne oznacza łatwe dostosowanie się do zmian, jeśli nie ma interaktywnej pętli sprzężenia zwrotnego z właścicielem produktu, a tym samym z klientami, to jaka zmiana zachodzi?
Zwinność polega na szybkich awariach poprzez stałą komunikację z właścicielem / klientem produktu. Lepiej jest zawieść wcześniej niż później, mniej pracy jest zrobione, a mniej „stracone”. I nie utkniesz z argumentem, że „nie mamy czasu, aby zrobić to poprawnie, ponieważ spędziliśmy tyle czasu, robiąc to źle, musimy po prostu iść tą samą ścieżką, nawet jeśli prowadzi to do niepowodzenia „.
Wygląda na to, że twoje zarządzanie robi „SCRUM, ale…” tam, gdzie „ale” to miejsce, w którym wyrzucają wszystkie rzeczy SCRUM, których nie rozumieją lub z którymi się nie zgadzają, i po prostu robią rzeczy w ten sam przypadkowy sposób jak zawsze, ale z nowymi błyszczącymi nazwami modnych słów.
W SCRUM codzienne wstawanie NIE polega na dostarczaniu statusu kierownictwu, ale na wymuszaniu interakcji programistów, dzięki czemu wiesz, co robią inni członkowie zespołu, i może sobie nawzajem pomagać, a nie powielać pracy. Jeśli zajmuje to więcej niż 45 sekund na osobę, robisz to źle. Chodzi o przejrzystość dla zespołu, jeśli jedna osoba daje ten sam status wielu dni na coś, co powinno być warte pracy jednego dnia, zespół może rozwiązać problem z osobami wcześniej niż później.
Jeśli nie testujesz nawzajem kodu tak, jak jest napisany, to również nie robisz go poprawnie. Testowanie powinno być osadzone w procesie, nie później. Kontrola jakości powinna być uwzględniona w sesjach planowania i dawać oszacowania, ile czasu zajmie przetestowanie.
Jeśli nie wywiązujesz się ze zobowiązań Sprint i przewracasz rzeczy, nie robisz tego poprawnie. Sprinty dotyczą zobowiązań, jeśli angażujesz się w zbyt wiele pracy, przestań to robić, nie ma możliwości wprowadzenia żadnej przewidywalności lub powtarzalności, jeśli nie możesz dokładnie zobowiązać się do rezultatów.
źródło
Jarrod udzielił dobrej odpowiedzi (+1 do tego) i chciałbym trochę rozszerzyć.
Zwinność to nie tylko szybkie awarie i informacje zwrotne między właścicielem produktu (klientem) a zespołem; chodzi o szybką informację zwrotną między wszystkimi zaangażowanymi stronami. Aby być naprawdę zwinnym (i to bezpośrednio z manifestu ), należy uznać, że proces istnieje tylko po to, aby pomóc programistom w dostarczaniu lepszych produktów. Osoby powyżej procesu oznaczają, że gdy tylko zespół rozpozna, że Twój istniejący proces nie działa, zmienisz go i sprawisz, aby działał.
„Scrum ale ...” to także problem, ale ta moneta ma obie strony. Jeśli spojrzysz na manifest, zobaczysz, że chodzi o zespół i sprawienie, by narzędzia / procesy działały dla Ciebie. Żadne dwie drużyny nie są takie same, dlatego każda z nich będzie działać nieco inaczej i to jest w porządku. Na pewno możesz wziąć całą metodologię Scrum i spróbować zastosować się do niej i sprawdzić, czy to zadziała dla twojego zespołu.
Inną alternatywą jest zamiast narzucać kolejny proces zespołowi i zmuszać wszystkich do przestrzegania poleceń Scrum, wypróbuj zwinne podejście : komunikuj się z zespołem i sprawdź, czy razem możesz zidentyfikować problematyczne obszary i rozwiązania dla każdego z nich. Następnie stopniowo wprowadzaj zmiany w sposobie pracy, aby rozwiązywać problemy.
To może chwilę potrwać, ale ...
Jeśli narysujemy analogię między Scrumem a wzorcem projektowym, działanie w sposób, który zaproponowałem, byłoby podobne do kodowania we wzór, w którym utrzymujesz kod tak prosty, jak to możliwe, i dostosowujesz się tylko do wzorca projektowego, gdy jest to potrzebne. W przeciwieństwie do wybierania wzorca projektowego i toczenia się z nim (tj. Ślepe wybieranie Scruma i wszystkich jego procesów jako jednego zestawu), co czasami sprawia, że kod jest bardziej złożony i trudniejszy w utrzymaniu, niż mogłoby być inaczej.
Kluczem do zrozumienia jest to, że zwinność nie polega na wymyśleniu nowego procesu robienia rzeczy; chodzi o ciągłe zmiany i stałe dostosowywanie do istniejących procesów / praktyk.
źródło
jeśli zespół (i jego kierownictwo) naprawdę chcą „być zwinnym”, powinni zacząć od czytania i omawiania jako zespół Agile Manifesto i jego zleceniodawców. Następnie wybierz jedną z metodologii zwinności, które zostały utworzone ( na przykład Scrum ), przeprowadź szkolenie na jej temat i zacznij od tego. Przed modyfikacją zaleciłbym dość dokładne przestrzeganie go, ale to tylko ja.
Powinni również głęboko przyjrzeć się praktykom inżynieryjnym, które są wykorzystywane do wspierania wybranej wybranej metodyki zwinnego projektu.
źródło