Co to znaczy być zwinnym?

17

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.

JD01
źródło
4
Wygląda na duplikat programistów.stackexchange.com
questions
1
Tak, zgadzam się z tobą w 100%. Mój menadżer przeczytał książkę o zwinności i po prostu sobie z tym poradził (choć bardzo źle). Użyłem TDD po ​​stronie serwera projektu, ale inni nie chcieli się go uczyć ani widzieć korzyści z tego. Mieliśmy platformę (po stronie klienta), która trwała wiecznie, a programista ciągle twierdził, że musi po prostu sobie z tym poradzić (bez ingerencji).
JD01,
3
Chociaż tytuł wydaje się być duplikatem, myślę, że to pytanie jest pomocne samo w sobie, ponieważ wiele zespołów czyta „ogólne” wyjaśnienia na temat zwinności (a nawet bierze udział w szkoleniach i zatrudnia konsultantów), a następnie napotyka dokładnie takie same problemy, jak JD01 zespół mimo to. Umieszczenie pytania w kontekście tego konkretnego zespołu może rzucić światło na konkretne problemy i rozwiązania, których inne bardziej ogólne pytania dotyczące postów nie rozwiązałyby.
DXM

Odpowiedzi:

27

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
1
Dziękuję Jarrod za odpowiedź. Czy TDD powinien być zwinny? Trudno było skłonić programistów do myślenia w ten sposób. W końcu, jak wspomniałem, zrobili na końcu kilka testów (jeśli pamiętali) i powiedzieli, że to TDD. Zgadzam się ze wszystkim, co powiedziałeś. Pętla sprzężenia zwrotnego praktycznie nie istniała, ponieważ mój menedżer uważał, że zakłóca „strukturę”, której poprawienie zajęło miesiące i miesiące. Do tego czasu utknęliśmy w implementacji funkcjonalności, która nie spełniała wymagań klienta.
JD01,
3
TDD to czerwony śledź, nie zgadzam się z nim osobiście jako religii, co dobre są testy kodu, który nie spełnia potrzeb klientów. A ponieważ testy powinny być osadzone, a nic nie zostało dostarczone i pokazane, co nie jest testowane, TDD jako mantra jest dość bezużyteczne. Jeśli to nie działa, nie demonstruj tego. Jeśli tego nie zrobisz, właściciel / klient produktu nie może go zaakceptować.
2
Zacząłem robić dużo TDD, ale teraz przerzuciłem się na BDD, który jest bardziej zgodny z potrzebami klientów jako testy akceptacyjne. Chociaż uważam, że TDD pomogło w tworzeniu projektów, których nie widziałbym inaczej oprócz zapewniania testów.
JD01,
1
Kluczowym powodem TDD jest umożliwienie ciągłego refaktoryzacji, zmniejszając tempo narastania zadłużenia technicznego. Jeśli istnieje kod, którego boisz się zmienić, ponieważ ponowne testowanie byłoby zbyt drogie, projekt zakończy się przedwcześnie.
kevin cline
Słyszałem, że wiele osób głosi TDD, po prostu nigdy nie widziałem tego w praktyce. Osobiście mój mózg nie działa w ten sposób. Zwykle mam dobre pojęcie o tym, co piszę, ale pisząc, przywracam równowagę i zmieniam rzeczy. Najpierw napisanie testów nie jest dla mnie możliwe. Piszę testy jednostkowe, zwykle w ramach pisania kodu, ale są one pisane tak, jak piszę kod, nie wcześniej.
DaveG
9

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 ...

  1. Najpierw naprawisz największe problemy, które będą miały największy wpływ na zdolność twojego zespołu do dostarczania produktu
  2. Identyfikując natychmiastowe problemy i uczestnicząc w opracowywaniu rozwiązań, członkowie Twojego zespołu zrozumieją, dlaczego pewne praktyki są ważne i nie będą ich po prostu robić, ponieważ każą im to robić.

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.

DXM
źródło
1
do downvoter: chcesz opracować? Czy potargałem kilka piór, ponieważ powiedziałem, żeby nie ślepo adoptować Scruma, czy to było coś innego?
DXM,
2
tak głupie. Daję +1 za szczegółowe informacje.
Michael Durrant
1
+1 za „ Kluczem do zrozumienia jest to, że zwinny nie polega na wymyślaniu nowego procesu robienia rzeczy; chodzi o ciągłe zmiany i ciągłe dostosowywanie się do istniejących procesów / praktyk.
David łysy imbir „
-2

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.

StevenV
źródło
2
Głosowałem negatywnie, ponieważ nie sądzę, że to odpowiada na oryginalne pytanie.
Bryan Oakley,
1
chyba dość sprawiedliwe. Odniosłem się do wstępnej przesłanki PO: „Mamy projekt, który, jak wszyscy mówią, będziemy realizować zwinnie, ale wątpię, abyśmy jasno zrozumieli, co to jest zwinność”. Wiele osób twierdzi, że są lub chcą „sprawnie” lub „być zwinnym”, nie rozumiejąc, czym naprawdę jest filozofia zwinna lub metodologie, które ją wspierają.
StevenV
3
Nie zgadzam się z całkowitym przestrzeganiem konkretnej metodologii na ślepo. Być „prawdziwie” zwinnym, oznacza, że ​​nie angażujesz się w żaden konkretny trend ani metodologię, chyba że pasuje to Twojej firmie i zespołowi. Lepiej jest zastosować metodologię jako punkt wyjścia, a następnie, po przejściu małego szkolenia i jeszcze lepszego doświadczenia, dostosuj go do własnych potrzeb. Co ważniejsze, jeśli następny projekt i klient wymagają czegoś nieco innego, dostosuj metodologię do zestawu. nie TO jest naprawdę Zwinne.
S.Robins
1
ponownie odwiedzając moją odpowiedź, zgadzam się z S.Robins powyżej i zmodyfikowałem moją odpowiedź, aby to odzwierciedlić.
StevenV