Scrum, sprint, jak pogodzić implementacje i testy

1

Wiem, że wiele osób tutaj nie popiera Scruma, Agile i innych podobnych wynalazków. Sam nie jestem ich zwolennikiem, no ale przyszło mi z nimi pracować, a czego nie lubie jeszcze bardziej to siedzieć dupogodziny, stąd ten temat.

Mamy projekt rozwijany od kilku miesięcy w typowym Scrumie. Początki były dość ciężkie, dowoziliśmy po dosłownie kilka % zaplanowanych story pointsów, z powodu wielu różnych zewnetrznych czynników, z którymi musieliśmy się uporać, jednak obecnie większość problemów jest już za nami, a MVP dla family & friends jest już na produkcji. Poza tym, wstępna implementacja obejmowała stworzenie kilku dość generycznych i konfigurowalnych komponentów, które teraz po prostu musimy reużyć by zaimplementować kolejne wymagania. Oznacza to, że pierwszy taki komponent implementowaliśmy przykładowo 5 dni i na jego dokładne przetestowanie (przez manualnych testerów) schodziły 3 dni. Teraz, gdy mamy już gotowy szkielet, implementacja nowego komponentu to 2 dni + 2 dni na testy

Prowadzi to do następującej sytuacji:

  • zaczynamy sprint, wszyscy mają co robić bo testerzy muszą dokładnie rozpisać wszelkie przypadki testowe, a developerzy zaczynają implementacje
  • po mniej więcej dwóch dniach kończymy implementacje pierwszych story i oddajemy je na testy
  • w międzyczasie poprawiamy ewentualne błędy z oddanych tasków i oddajemy kolejne zadania
  • mija +/- 75% sprintu, zaczynają się kończyć zadania developerskie, teoretycznie jedyne co mamy do zrobienia to poprawa ewentualnych błędów

No i co wtedy?

  • jeżeli weźmiemy całe story z backlogu, to go nie dowieziemy, braknie czasu na implementacje + przetestowanie.
  • jeżeli weźmieny tylko implementacje, a testy przełożymy na kolejny sprint, to znowu na początku przyszłego sprintu będzie problem, developrzy będą oddawać kolejne taski, a testerzy będą sprawdzać i ewentualnie zgłaszać bugi ze sprintu poprzedniego
  • jeżeli nie zrobimy nic, testerzy pracują do końca sprintu, a my mamy wolne. W teorii super, w praktyce, osobiście wole mieć coś do robienia niż udawać, że pracuje

Zdaje sobie sprawę z najprostszej możliwej odpoowiedzi - "wywalić Scruma", aczkolwiek niestety nie wchodzi to w grę :/

7

Pomijająć oczywistą odpowiedź, która nie działa, bo partia komunistyczna zabroniła wywalać Scruma (mimo, że jak soft jest na produkcji to trzymanie się Scruma jest debilne średnie.)

jeżeli weźmiemy całe story z backlogu, to go nie dowieziemy, braknie czasu na implementacje + przetestowanie.
No i co się wtedy stanie? będzie pluton egzekucyjny?
Czy może spadnie wam velocity, bo paradoksalnie !!! więcej zrobicie (tylko nie domkniecie).
Czy też jak spadnie velocity to przyjdzie policja scrumowa i będzie pluton egzekucyjny?

2
AngryProgrammer napisał(a):

No i co wtedy?

  • jeżeli nie zrobimy nic, testerzy pracują do końca sprintu, a my mamy wolne. W teorii super, w praktyce, osobiście wole mieć coś do robienia niż udawać, że pracuje

Czemu od razu udawać że się pracuje? Można się doszkalać i oglądać filmiki na YT z konferencji np

Swoją drogą JDG wygląda tu jak skrzyżowanie czarnego papieża i ostatniego władcy ognia

6

Bierzesz dalszy task z backloga i tyle, co za problem? o_O Ten task wejdzie do nowego sprintu a ty będziesz miał head-start. Nie bardzo rozumiem gdzie coś nie działa.

Niemniej dla mnie cały ten wasz setup jest zrypany, bo macie krzywe definition of done. Task jest done jak masz automatyczne testy e2e działające na CI. Dopóki tego nie ma, to task nie jest "dowieziony". Mam nadzieje zresztą że to właśnie robią ci wasi testerzy -> piszą te testy e2e. Więc nie ma takiej sytuacji że zaczyna sie nowy sprint a testerzy zaczynają zgłaszać bugi do ficzerów które niby są "dowiezione". Bo skoro były dowiezione, to już powinny wszystkie przechodzić testy na zielono.

0
AngryProgrammer napisał(a):

Zdaje sobie sprawę z najprostszej możliwej odpoowiedzi - "wywalić Scruma", aczkolwiek niestety nie wchodzi to w grę :/

A jak wywalisz scruma, to będziesz automagicznie wiedział czy to, co dowiozłeś jest dobre, czy niedobre bo testerzy doklikają się do bugów? No nie będziesz wiedział

A sami testerzy testują tylko nowe rzeczy, czy sprawdzają też czy nie popsuliście starych? Jak nie sprawdzają, to skąd wiesz czy w międzyczasie czegoś nie od-wieźliście? :)

A jak żmudnie testują coraz więcej scenariuszy, to nie sparaliżuje wam to po pewnym czasie pracy - albo przez to, że testerów przerośnie kolejka rzeczy do sprawdzania, albo przez to że po jednym sprincie lista rzeczy od-wiezionych będzie dłuższa, niż dowiezionych?

5
Shalom napisał(a):

Bierzesz dalszy task z backloga i tyle, co za problem? o_O Ten task wejdzie do nowego sprintu a ty będziesz miał head-start. Nie bardzo rozumiem gdzie coś nie działa.

Od razu widać, że nie pracowałeś w scrumie. :P
Nie można brać oficjalnie tasków z przyszłości, bo po pierwsze nie można rozszerzać zakresu sprintu, a po drugie burndown chart ma zejść do zera. Efektem pracy programisty w scrumie nie jest działający kod czy inne takie nikomu niepotrzebne pierdoły tylko burndown chart.

superdurszlak napisał(a):

A jak wywalisz scruma, to będziesz automagicznie wiedział czy to, co dowiozłeś jest dobre, czy niedobre bo testerzy doklikają się do bugów? No nie będziesz wiedział

Jak wywali scruma, to nie będzie musiał dowozić w ramach sprintu, a po zakończeniu taska będzie mógł swobodnie brać następny.

@AngryProgrammer: nie udawaj, że pracujesz, po prostu nie pracuj. Po pierwsze ze scrumem nie wygrasz, a po drugie pracę trzeba szanować.

0

W ex firmie wyglądało to tak:

a) programiści oddają kod do testów
b) wykonywanie testów przez testerów (2 - 7 dni w zależności od wielkości tematu)
c) w czasie b) kod powinien być zamrożony, a programiści tylko naprawiać zgłoszone bugi, uzupełniać dokumentację, wspomagać testy pod kątem inżynierskim (dopisanie kroków w automatach, jakiś poprawki w środowisku testowym itd.) - w praktyce byli programiści, którzy potrafili przez cały dzień nic nie zrobić i się kręcić między kawą i papierochem przez 8h i fajrant.

Jeżeli nie ma żadnych pierdółek do zrobienia podczas etapu zamrożenia kodu, typu właśnie dokumentacje, środowiska, pomoc dla testerów, to wypadałoby zgłosić kierownikowi projektu, liderowi itd., bo to oni dają tu d**y, że pracownicy nie mają co robić. To jest głupie zarządzanie i marnowanie czasu. A z mojego nikłego doświadczenia już wiem, że takie udawanie, że coś się robi potrafi bardziej zmęczyć niż pracowanie.

2

Dlatego ja zawsze wolałem podejście Kanban Board + tory per feature. Wtedy nie ma sprintu per se, tylko każdy feature zmierza od fazy analizy do wdrożenia/DoD (definition of done). Planowanie w takim wypadku nie wymaga zaangażowania całego zespołu tylko podzbioru osób które nad danym feature'em będą pracować. Gdy dana funkcjonalność przejdzie w fazę testów (a zakładam że i tak programiści napiszą unit testy i testy integracyjne), a programista nie ma co robić to może rozpocząć pracę nad kolejną funkcjonalnością.
PS: Żeby to dobrze działało musi być położony duży nacisk na kończenie już zaczętej roboty zanim zacznie się robić nowe rzeczy. Działa dobrze jak masz seniorski zespół.

W Scumie zazwyczaj pracowałem w takim trybie że programiści testowali ile się da i nie czekali na zielone światło od QA, a zespół testerów działał niezależnie i bugi zgłaszał asynchronicznie. Założenie było takie że zgłoszone problemy to raczej proste sprawy typu NullPointer a nie że trzeba przemodelować logikę lub że brakuje połowy funkcjonalności.

1

Nie bardzo widzę z czym masz problem : P Tak jak napisał @somekind, nie dokładasz nowych rzeczy z backlogu, jeżeli nie zostały one zatwierdzone na sprint planningu, bo inaczej nigdy nie dowieziecie sprintu do końca. I też to o czym pisze @Shalom, jakie jest wasze definition of done? Jaki macie cel na dany sprint? Skoro go wykonaliście to tylko się cieszyć.

Jeżeli rzeczywiście zostaje wam wolny czas w sprincie, to albo na sprint review ustalcie, że możecie wziąć więcej tasków na kolejny sprint, albo doszkalaj się w wolnym czasie, albo (tak jak u nas), przeglądaj istniejący kod w celu refaktoringu na przyszłość. Nie koniecznie musisz go refaktoryzować teraz, ale możesz wrzucić zadania do backlogu, które zrobisz później. Minimum te 20% czasu, każdego sprintu czy co drugiego, warto poświęcić nie na nowe rzeczy, a wlaśnie na refaktoring.

1

Jak ci Scrum (czy cokolwiek) narzuca robienie czegoś głupiego, to olej to (Scruma, czy co tam). Wiem, że najczęściej najmniej zwinnym członkiem zespołu jest Scrum Master / Mistress, ale trzeba ich sobie wychować.

Robicie swój plan, zostało ci trochę czasu w sprincie, to bierzesz się za:

  • dług technologiczny - unit testy, ostrzeżenia z Sonara, refaktory, poprawki i usprawnienia w pajplajnach, wszystko co przeszkadza w bieżącej pracy i może cię kopnąć w przyszłości
  • douczasz się
  • robisz jakieś story z następnego sprintu, nie wciągając go do sprintu
    Jak SM ma z tym jakiś problem, to spuszczasz go na drzewo bo wszystko co to może zaburzyć, to "velocity" w krótkim czasie, później się wyrówna. Warunek: trzeba popracować nad podzieleniem historyjek na drobne fragmenty. Im drobniej tym lepiej. Spodziewasz się, ze wpadnie scrumowa inkwizycja i zrobi ci kuku, bo przez 3 dni coś zrobiłeś, zamiast się opierdalać?

Trzymanie manualnych testerów w 2021 roku jest już mocno vintage. W tym przypadku jest też głównym powodem występowania problemu.

0

@Shalom:

Więc nie ma takiej sytuacji że zaczyna sie nowy sprint a testerzy zaczynają zgłaszać bugi do ficzerów które niby są "dowiezione". Bo skoro były dowiezione, to już powinny wszystkie przechodzić testy na zielono.

DOD zakłada implementacje zakończoną deploymentem na środowisko testowe (czyli testy jednostkowe / integracyjne muszą przejść) oraz zakończenie testów manualnych przez naszych testerów-klikaczy.
Problem w tym, że mając 3 dni do końca sprintu, jestem w stanie wziąć i zaimplementować danego taska, ale testerzy nie dadzą rady go przetestować.
W efekcie, DOD nie jest spełnione, wykres się nie zgadza. Jeżeli zrobić osobnego taska tylko na testy, to wtedy w następnym sprincie testerzy mają zapchany początek i obsuwę z testami obecnego sprintu, bo testują to co było zaimplementowane w poprzednim.

W sumie @somekind: ma racje z

Efektem pracy programisty w scrumie nie jest działający kod czy inne takie nikomu niepotrzebne pierdoły tylko burndown chart.

Tak to niestety wygląda, że ciągle patrzymy na te wykresy i nie do końca liczy się to czy zrobimy 4 czy 40SP, ważne by zrobić 100% tego co zaplanowaliśmy / dobraliśmy w trakcie. Dokładanie gdy zostało kilka dni sprintu to ryzyko, że jednak ten wykres nie będzie taki ładny.

Druga sprawa, to fakt że implementacja obecnie idzie szybciej niż testy. Zespoł developerów po prostu poświęcił więcej czasu na początku projektu, tak jak wspomniałem, powstał jakiś szkielet komponentów, zarówno na poziomie implementacji jak i testów jednostkowych czy integracyjnych. Z czasem więc implementacja idzie dużo lepiej i sprawniej.

Testy są faktycznie niestety manualne. Dokumentacja wszystkich przypadków zajmuje sporo czasu, bo trzeba to rozpisać dość szczegółowo, potwierdzić z PO czy takie scenariusze są ok, przeprowadzić te testy i udokumentować ich przebieg. Testy automatyczne ze strony zespołu testerskiego są dopiero w planach :)

@piotrpo:

dług technologiczny - unit testy, ostrzeżenia z Sonara, refaktory, poprawki i usprawnienia w pajplajnach, wszystko co przeszkadza w bieżącej pracy i może cię kopnąć w przyszłości

Sonara mamy wpiętego w CI/CD, build się wywala przy najmniejszej drobnostce, takie wymagania korpo. Dodatkowo nie mamy za bardzo wpływu na sam pipeline, aczkolwiek poza uciążliwym sonarem jest to naprawdę ok. Robimy obecnie release na proda co sprint bez problemu.

robisz jakieś story z następnego sprintu, nie wciągając go do sprintu

Niby ok, aczkolwiek commit message musi zawierać nr taska, a bez aktywnego taska w jirze, nie mogę pushować zmian :D

Zostaje więc jedynie dopisywanie unit testów i ciągły refactor, jednak z ręką na sercu mówię, trochę to już traci sens, bo kilku programistów siedzi parę dni i tak naprawdę dopisuje na siłe testy, podczas gdy mogliby po prostu ruszyć z kolejnymi taskami.

0

Ja pierniczę, macie bardziej porąbane procedury niż my. To w drugim tygodniu sprintu, na daily informujesz, że swoje historyjki masz zrobione, backlog sprintu jest pusty i idziesz naparzać z kolegami w piłkarzyki.

Niby ok, aczkolwiek commit message musi zawierać nr taska, a bez aktywnego taska w jirze, nie mogę pushować zmian :D

Nie możesz, bo ci coś eksploduje, czy nie możesz, bo wkurzysz scrumowego boga?

2

Problem w tym, że mając 3 dni do końca sprintu, jestem w stanie wziąć i zaimplementować danego taska, ale testerzy nie dadzą rady go przetestować.
W efekcie, DOD nie jest spełnione, wykres się nie zgadza.

@AngryProgrammer no ok, ale to znaczy ze task nie skończony i tyle. Obniżacie velocity aż sie będzie zgadzać. Bo teraz to robicie cyrk jak w jednej korpo w której pracowałem gdzie były big-bang-release raz na N miesięcy i przed releasem testerzy dostawali zakaz zgłaszania nowych bugów, bo backlog miał być czysty na dzień releasu :D Albo było wiadomo że releasujemy z bugiem, ale managerowie uznali że będziemy się tym przejmować dopiero jak klient go zgłosi ;)

ważne by zrobić 100% tego co zaplanowaliśmy / dobraliśmy w trakcie

W pewnym sensie ja to nawet rozumiem, bo dla firmy ważniejsze może być to, zeby móc jasno komunikować klientowi co zobaczy po następnym sprincie na demo, niż to czy dowieziecie jeden ficzer więcej. Ale w takiej sytuacji musicie realistycznie oceniać co faktycznie jesteście w stanie skończyc a czego nie. A z tego co widzę to próbujecie przepychać nieskończone nieprzetestowane taski bo się nie wyrabiacie -> musicie planować mniej albo zmienić podejście żeby się wyrabiać.

Testy są faktycznie niestety manualne. Dokumentacja wszystkich przypadków zajmuje sporo czasu, bo trzeba to rozpisać dość szczegółowo, potwierdzić z PO czy takie scenariusze są ok, przeprowadzić te testy i udokumentować ich przebieg. Testy automatyczne ze strony zespołu testerskiego są dopiero w planach

To przerzucacie kilku developerów do zespołu SDET i niech napiszą jakiś sprytny DSL do testów e2e i wszyscy wyjdą na tym lepiej, skoro wąskim gardłem jest przygotowanie testów.
Przykro mi ale to jest trochę jak w tym żarcie o kontroli na budowie, gdzie jeden koleś, żeby wyglądało ze coś robi, latał z pustą taczką i jak sie go kontroler zapytał czemu biega z pustą taczką to powiedział że taki zapierdol ze nie ma czasu naładować. I u was jak widać też, bo nie ma czasu zrobić porządnego setupu testów żeby potem robić je w godzinę a nie w tydzień.

Zostaje więc jedynie dopisywanie unit testów i ciągły refactor, jednak z ręką na sercu mówię, trochę to już traci sens, bo kilku programistów siedzi parę dni i tak naprawdę dopisuje na siłe testy, podczas gdy mogliby po prostu ruszyć z kolejnymi taskami.

A może czas zacząć pisać porządne testy integracyjne i wtedy szansa że jakiś błąd przejdzie do e2e jest minimalna (i na dobrą sprawę może wynikać tylko z błędnym określeniu zachowania zewnętrznych interfejsów)? Zapraszam: https://github.com/Pharisaeus/almost-s3
Stosujemy takie podejście w wielu projektach i na e2e wychodzi nam jakis błąd raz na kilka tygodni i to są akcje w stylu:

  • Baza której uzywamy produkcyjne nie jest dostępna w testcontainers więc w testach lecimy z h2 i okazało sie że w h2 można zrobić insert into z wartościami jako podzapytaniem sql a nasza produkcyjna baza pozwala na coś takiego tylko w update ale w insert juz nie (zapytanie w stylu insert into table (dictionary_id) values (select dictionary_id where name=:name))
  • Serwis z którym się komunikujemy i w testach przykrywamy bo wiremockiem zwraca gdzieś inną wartość niż się spodziewaliśmy i oprogramowaliśmy w mocku

Wszystkie inne błędy zwyczajnie muszą wyjść w testach, z tą różnicą że z sensownym DSLem takie testy piszesz raz dwa i odpalasz kilka sekund i nie czekasz kilka dni aż ktoś przeklika i ci zgłosi...

1

Tu właśnie widać, że Scum oparty jest na wyidealizowanych marzeniach. Jedno z założeń jest takie, że taski da się efektywnie podzielić na niezależne historyjki na kilka godzin pracy, gdzie całe DoD zamykamy w jednym dniu. W takich warunkach dwutygodniowy sprint dobrze wygładza różne prędkości i burndown chart nadaje się na demo. Pamiętajmy, że głównym celem zespołu scrum jest osiągnięcie wykresu monotonicznie i płynnie zmierzającego w dół, tak aby można go było pokazać na sprint review.

W praktyce, jak mam proste zadanie, to: 3 godziny kodzę, dwa dni czekam na review, godzinę wprowadzam poprawki, czekam dzień na kolejny review, rozwiązuję merge conflicty, walczę z konfiguracją środowiska, jeśli potrzebuję testera, to też czekam na tester. Tak mija tydzień, a to opis tylko dla prostego zadania. Powinniśmy usprawniać ten proces, ale są rzeczy nie do przeskoczenia w organizacjach.

Rozwiązania, jakie ja stosuję:

  • olać scrum i robić swoją robotę - jak jesteś koniem pociągowym zespołu, to management przestaje narzekać.
  • robić kilka zadań na raz.
  • brać na sprint zadania różnego typu - nie tylko historyjki. Dług technologiczny, dokumentacja, optymalizacja samego procesu. Zadania bez wartości biznesowej to herezja w Scrumie. Tak, a o co chodzi?
  • robić rzeczy poza historyjkami, jak się skończyły te na aktualny sprint. Skąd scrum master ma wiedzieć, że robię proof of concept jakiegoś mojego pomysłu? Dopóki team lead widzi w tym wartość, to nie powinno być problemu.

Podejście „taski się skończyły, idę do domu, raportuję 8h”, mimo że zgodne ze Scrum, skończy się zadziwiająco szybko rozmową z HR.

0

@Shalom:

Ale przecież tutaj jest odwrotnie -> planują ze będzie N ficzerów a potem dopychają kolanem niedokończone taski bez testów bo się nie wyrobili.

Planujemy N ficzerów, które obejmują:

  • dla zespołu dev, implementacje która zawiera testy jednostkowe i integracyjne
  • dla zespołu test, testowanie manualne - rozpisanie historyjek, przeklikanie ich, udokomentowanie

Developer kończy zadanie, wrzuca na code review, merguje i ficzer trafia na środowiska, a wtedy przejmuje go tester.
Jest dzień 10 z 14 dni sprintu, zadania developerskie są skończone, czasami jednak trafi się poważniejszy bug, np. coś nie działa zgodnie z założeniami biznesowymi, ale z reguły to są pierdoły typu "te przyciski są krzywe". No i zazwyczaj do końca sprintu w takim razie siedzimy i czekamy aż ewentualnie wpadnie coś do poprawy i to naprawiamy, a testerzy kończą testy w piątek o 15:25, gdzie 5 minut później mamy demo.

Chodzi mi więc o to co zespół dev ma robić te 4 dni sprintu gdy skończyli swoją robotę, ale oczywiście taski są nadal otwarte, bo DoD oznacza tak naprawdę skończoną pracę dwóch zespołów (dev i test).

7

Testy nie są osobnym featurem, tak jak wycieranie d**y nie jest czynnością osobną od srania, żeby można było ją przenieść na za dwa tygodnie bo się śpieszysz do pracy. I korona nikomu z głowy nie spadnie jak developer napisze testy e2e do swojej funkcjonalności.

2

dla zespołu dev
dla zespołu test

Jedną z podstaw scruma jest to ze zespoły są interdyscyplinarne i zespół jako całość jest w stanie niezależnie pracować i dostarczyć ficzer. Jeśli macie osobno backendowców, frontendowców i testerów to siłą rzeczy nie jest to prawda i stąd te twoje dziwne podziały pomiędzy "zespoły". Z punktu widzenia scruma macie jeden zespół.

DoD oznacza tak naprawdę skończoną pracę dwóch zespołów

Tak jak pisałem wyżej, jeden z problemów jaki macie to testy manualne zamiast testów automatycznych plus brak testów integracyjnych. U mnie np. task masz podzielony na 3 sub-taski, backendowy, frontendowy i testerski. Z tą różnicą że wszyscy pracują równolegle, bo na samym początku ustalamy jakie będzie API i jak będzie wyglądać front. W efekcie backendowiec pisze backend, frontendowiec pisze frontend zgodnie z mockupami/wireframami i z tym ustalonym API i analogicznie tester pisze testy zgodnie z API i wireframami. Na koniec najwyżej trzeba poświęcić chwilę na zintegrowanie się i dogranie szczegółów.

U ciebie to testowanie manualne sprawia że testerzy zawsze będą jeden sprint do tyłu, skoro mogą zacząć testować dopiero jak implementacja jest skończona. Tutaj sie nie da zdziałać cudów. Potrafie sobie wyobrazić że na jakims forum dla testerów twój kolega z zespołu test robi podobny wątek, gdzie narzeka że pierwsze pół sprintu siedzą i grają w piłkarzyki bo nie maja co testować, a potem na koniec sprintu jest presja żeby wszystko przeklikać :D

Swoją drogą ciekawi mnie jak się to was będzie skalować, bo nowy ficzer może przypadkiem popsuć stary, więc testy e2e powinny zawierać nie tylko testowanie aktualnych use-case tylko też sprawdzać regresje na wszystko inne co było wcześniej. To oznacza ze liczba testów do przeprowadzenia rośnie z każdym sprintem. Zatrudniacie nowego testera co kilka sprintów?

Moja rada:

  1. Poświęcić czas na pisanie testów integracyjnych, tzn. takich gdzie aplikacja wstaje ale "zewnętrzne" elementy są konfigurowalne, tzn zamiast łączyć się do prawdziwej bazy danych, odpalacie jakieś h2 in memory albo podosicie bazę z testcontainers, zamiast zewnętrznych mikroserwisów stawiacie wiremocki i konfigurujecie ich zachowanie itd, i stukacie po tej aplikacji http clientem i sprawdzacie czy zachowanie jest poprawne. Czyli generalnie to samo co potem będą robić testy e2e z tą różnicą, że wszystko "dookoła" jest konfigurowalne. Dzięki temu "macie co robić" plus szansa na regresje albo ze cokolwiek wyjdzie na testach e2e jest minimalna.
  2. Zacząć robic automatyczne testy e2e równolegle z pisaniem kodu, a jedyne "manualne" testy to sprawdzenie czy frontend wygląda ładnie i czy jest zgodny z wireframami.
0

@Zing:

Testy nie są osobnym featurem, tak jak wycieranie d**y nie jest czynnością osobną od srania, żeby można było ją przenieść na za dwa tygodnie bo się śpieszysz do pracy. I korona nikomu z głowy nie spadnie jak developer napisze testy e2e do swojej funkcjonalności.

Nie napisałem, ze to osobny feature.

@Shalom :

Jeśli macie osobno backendowców, frontendowców i testerów to siłą rzeczy nie jest to prawda i stąd te twoje dziwne podziały pomiędzy "zespoły". Z punktu widzenia scruma macie jeden zespół.

No niestety tak to wygląda

  • testerzy
  • backendowcy z 0 wiedzą o froncie
  • frontendowcy z 0 wiedzą o backendzie
  • kilku full stacków, niekiedy jedno story wymaga np. zmian w bazie danych i wyswietlenia tych zmian w tabelce na UI

No i mimo, że programiści nie mają powiedziane: Ty rób to, a Ty tamto, to jednak widząc co wchodzi na sprint z miejsca wiemy kto będzie klepał nowe CSSy a kto SQLe.
Co innego zespół testerów, oni są odpowiedzialni za przeklikanie aplikacji i ich odpowiedzialnością ma być też E2E, ale z jakiegoś powodu było to odkładane i teraz dopiero coś ma powstać, możliwe że stworzone przez jeszcze inny zespół.

U ciebie to testowanie manualne sprawia że testerzy zawsze będą jeden sprint do tyłu, skoro mogą zacząć testować dopiero jak implementacja jest skończona. Tutaj sie nie da zdziałać cudów. Potrafie sobie wyobrazić że na jakims forum dla testerów twój kolega z zespołu test robi podobny wątek, gdzie narzeka że pierwsze pół sprintu siedzą i grają w piłkarzyki bo nie maja co testować, a potem na koniec sprintu jest presja żeby wszystko przeklikać :D

Otóż nie, testerzy mają co robić bo zanim cokolwiek mogą testować to muszą stworzyć dokumentację każdego kroku który w testach wykonają oraz potwierdzić tę dokumentację z PO. Wygląda to trochę absurdalnie, jak widziałem ile dokumentacji i czasu jest potrzebne dla zmiany, która programiście zajęła 15 minut, licząc przerwę na kawę.

0

@piotrpo:
Co do Twojego komentarza

Czy ta dokumentacja z testów jest potrzebna, do tego, żeby program mógł zostać wydany? W sensie - czy robisz system mający spełniać wymagania jakiejś tam normy jakościowej i faktycznie wymagane jest dostarczenie tony dokumentacji o przetestowaniu jakiegoś kawałka, czy to tylko samozaspokojenie się PO? Czy ta dokumentacja nie mogłaby być generowana automatycznie? Twoje pytanie "co robić pod koniec sprintu", to leczenie objawowe.

W skrócie, według mnie to strata czasu, ale nic na to nie poradzę. Z tego co wiem, to bardziej pomysł zespołu testerów i ich dupokryjka, bo mogą powiedzieć że zrobili tak jak w dokumentacji, którą potwierdził PO, a do tego mają dokumentacje po testach, gdzie widać że coś jest zrobione poprawnie. Jeżeli za pół roku ta ścieżka będzie nie działać, to są kryci.

W każdym razie, jest to według mnie zbędne w takiej formie. Do story mamy dołączoną makiete od UX i rozpisane co jak i dlaczego ma działać, np.

  • użytkownik może zobaczyć produkty jakie kupił w zadanym przedziale czasowym

Powstanie z tego dokumentacja typu:

  • kilka powtarzalnych punktów typu loguje się, mam takie i takie uprawnienia, dochodzę do ekranu X
  • opis stanu rzeczywistości, czyli np. tego co zostało włożone do bazy danych
  • faktyczny test, czyli będąc na ekranie Z, wybieram przedział od X do Y, oczekuje że zobaczę przedmioty A, B, C

No i kolejny przypadek to kopia poprzedniego, ale parametry wejściowe (X, Y) i wyjściowe (A, B, C) ulegają zmianie
W efekcie powstaie tona boilerplateu, którego wartośc merytoryczną można by zapisać w dwóch zdaniach.
Dodatkowo, ten sam przypadek jest przetestowany integracyjnie od insertu do bazy po strzał do API po stronie backendu oraz jednostkowo na froncie, gdzie odpowiedź HTTP jest mockowana, ale za to sprawdzane jest czy na HTMLu mamy te 3 przedmioty.

1

Projekt, w którym pracuję jest daleki od doskonałości, ale spróbuje opisać jak robimy to u siebie. Przejęliśmy jakiś już istniejący produkt, dlatego część rzeczy jest wciąż nie tak, jak byśmy chcieli. Pracujemy w SAFe, czyli taka mało zwinna forma zwinności.

  • PdM i Architekt tworzą epopeje, czyli historyjki na poziomie "chcę, żeby nasz system wymieniał dane z systemem Y w zakresie takim a takim"
  • Epopeje są dyskutowane z PO w sensie upewnienia się, że obie strony rozumieją je tak samo
  • PO i Architekt tworzą na ich podstawie opisy ficzerów "system ma przyjmować dane identyfikujące użytkownika poprzez REST API w formacie takim a takim, ma z nimi zrobić coś"
  • Ficzery są konsultowane z zespołem, w celu wyjaśnienia ich kompletności i upewnienia się, że zespół ma doość danych, żeby wiedzieć co robić dalej
  • zespół dev. rozpisuje sobie ficzery na userstories, estymuje itp.
    Staramy się, żeby ficzery mieściły się w 3 sprintach, historyjki w 1.
    Zespoły robią historyjki, testy do nich, testy e2e są tworzone równolegle (różnie z tym bywa, ale tak celujemy, mamy tu problem ze specjalizowanymi testerami)
    Po wszystkim user stories są zamykane w zespole, ficzery przez PO / Architekta, epiki przez Architekta / PdM na podstawie m. in. raportu z testów automatycznych. Generalnie kto tworzył jakiś kawałek wymagań, jest odpowiedzialny za ich odbiór.
    W ramach ficzera tworzymy komplet testów - unit, integration, e2e. Mamy jakieś tam wymagania na pokrycie kodu, do tego dbamy o utrzymanie 100% pokrycia automatami wymagań biznesowych.

Pracujemy w bardzo dużej firmie i można w stosunku do niej używac różnych określeń, ale zwinność raczej nie znajdzie się na liście. Z SAFe zostawiliśmy sobie właściwie interface - raportujemy c.a. ile planujemy zrobić i spowiadamy się czemu się nie udało to co robiliśmy wcześniej.

Wewnątrz zespołów jest praktycznie pełna autonomiczność i generalnie brak przesadnego szacunku do formalnych wymagań SAFe. Estymaty często robione są na oko, z dużym zapasem. Jeden z zespołów przeszedł na coś na kształt Kanban, bo im sprinty nie pasowały Jak pojawia się chwila wolnego czasu, to wciąga się historyjki z następnych iteracji, albo redukcje długu.
Dokumentacja release, na ile to możliwe jest tworzona automatycznie.
Nie mamy żadnego testera manualnego w projekcie, mamy testerów od pisania automatów, ale coraz bardziej idą w kierunku DevOps - w znaczeniu zarówno dev, jak i ops. Trochę więcej problemu jest z programistami, czyli nie po to się uczyłem programować, żeby pisać testy i znam Javę, a nie jak wyklikać przeskalować node set, ale i tutaj widać już pewne postępy. Musimy jeszcze trochę popracować nad tym jak pracujemy, bo release on demand to wciąż 2-3 dni.
To, do czego zmierzam, to parę oczywistych punktów:

  • Prawda was wyzwoli. Nie można ukrywać przed samym sobą, że jakiś ficzer nie został zrobiony, albo dopychać go kolanem
  • Mając w zespole specjalizowane podgrupki, masz waterfalla
  • Jak poświęcasz czas na tworzenie dupochronów, to nie poświęcasz go na robienie rzeczy pożytecznych. W rezultacie masz albo gorszy produkt, albo później, albo przynajmniej jest on droższy

Do tego, jak już wspomniałem, pracuję w bardzo dużej firmie, w domenie mocno regulowanej i kontrolowanej. Jak u nas się da, to gdzie indziej też. Wiem, że prawdopodobnie masz mały wpływ na to jak zorganizowany jest twój projekt, ale tutaj chodzi głównie o wymianę różnych punktów widzenia.

3

Napiszę Wam, że jakoś przeraża mnie często co tutaj czytam :D

AngryProgrammer napisał(a):

No i co wtedy?

  • jeżeli weźmiemy całe story z backlogu, to go nie dowieziemy, braknie czasu na implementacje + przetestowanie.
  • jeżeli weźmieny tylko implementacje, a testy przełożymy na kolejny sprint, to znowu na początku przyszłego sprintu będzie problem, developrzy będą oddawać kolejne taski, a testerzy będą sprawdzać i ewentualnie zgłaszać bugi ze sprintu poprzedniego
  • jeżeli nie zrobimy nic, testerzy pracują do końca sprintu, a my mamy wolne. W teorii super, w praktyce, osobiście wole mieć coś do robienia niż udawać, że pracuje

Zdaje sobie sprawę z najprostszej możliwej odpoowiedzi - "wywalić Scruma", aczkolwiek niestety nie wchodzi to w grę :/

Możliwości jest mnóstwo? :) Oczywiście zakładamy, że w Backlogu Sprintu nie ma żadnego taska którym możesz się zająć:

  • pytasz czy komuś nie pomóc (zgłaszasz temat na Slacku, na Daily),
  • po skończonym kodowaniu uzupełniasz dokumentację
  • w ramach rozwoju T-shape testujesz kod który napisał ktoś inny?
  • robisz Spike jakiegoś nowego tematu, totalnie nieznanego
  • proponujesz PO wciągnięcia małego improvementu do Sprintu (polecam POsom robić sobie filtry gdzie pokazane są taski np. <3 SP typ improvement)
  • proponujesz grzebniecie czegoś w bebechach i spłacenie trochę długu albo jakąś modernizację np. podbicie biblioteki?
  • wymieniać dalej?
somekind napisał(a):

Od razu widać, że nie pracowałeś w scrumie. :P
Nie można brać oficjalnie tasków z przyszłości, bo po pierwsze nie można rozszerzać zakresu sprintu, a po drugie burndown chart ma zejść do zera. Efektem pracy programisty w scrumie nie jest działający kod czy inne takie nikomu niepotrzebne pierdoły tylko burndown chart.

Jakikolwiek wykres burn jest niewymagany w Scrumie. Na pewno nie służy do pokazywania na Review. To wewnętrzna rzecz dla zespołu w celu predykcji prawdopodobieństwa dowiezienia rzeczy w Backlogu Sprintu. I może iść do góry: przecież jak podczas Sprintu który ma cel wyjdzie Ci dodatkowa praca do wykonania do wrzucasz to do Backlogu Sprintu.

ArchitektSpaghetti napisał(a):

Tu właśnie widać, że Scum oparty jest na wyidealizowanych marzeniach. Jedno z założeń jest takie, że taski da się efektywnie podzielić na niezależne historyjki na kilka godzin pracy, gdzie całe DoD zamykamy w jednym dniu.

Ale skąd założenie, że jedno story zamknąć w 1 dniu? Skąd się te wszystkie rzeczy biorą :D

ArchitektSpaghetti napisał(a):

W takich warunkach dwutygodniowy sprint dobrze wygładza różne prędkości i burndown chart nadaje się na demo. Pamiętajmy, że głównym celem zespołu scrum jest osiągnięcie wykresu monotonicznie i płynnie zmierzającego w dół, tak aby można go było pokazać na sprint review.

Na Sprint Review to masz pokazać działający produkt, metryki pokazujące przydatność produktu, backlog, plany na następny Sprint. A nie burndown czy burnup chart....

ArchitektSpaghetti napisał(a):

W praktyce, jak mam proste zadanie, to: 3 godziny kodzę, dwa dni czekam na review, godzinę wprowadzam poprawki, czekam dzień na kolejny review,

No jako SM (tak znienawidzony na tym forum) pytam czemu czekasz 2 dni na code review? Miałem takie problemy. Zespół sobie wypracował zasadę, że na rzeczy do review zagląda się rano po Daily oraz po lunchu. Jak jest coś pilnego walisz na Slacku i prosisz o ASAP. Jak jest coś do obgadania siadasz obok i gadasz.

ArchitektSpaghetti napisał(a):
  • brać na sprint zadania różnego typu - nie tylko historyjki. Dług technologiczny, dokumentacja, optymalizacja samego procesu. Zadania bez wartości biznesowej to herezja w Scrumie. Tak, a o co chodzi?

Przecież zadania dotyczące długu, modernizacji, optymalizacji też mają wartość biznesową. Tylko trzeba to umieć sprzedać. Będzie działać szybciej, będzie bezpieczniejsze po podniesieniu na wyższą wersję frameworka (obecna nasza straci wsparcie za kwartał), będziemy mogli dzięki przepisaniu na nowy standard szybciej budować kolejne moduły, będzie nam się milej pracować w nowym języku/frameworku etc. więc będziemy efektywniejsi bo przestaniemy mieć wrażenie, że codziennie połykamy balasa etc. etc. etc. Tylko prawdą jest, że rzadko kiedy developer potrafi do PO sprzedać. Więc często robi tzw. lewiznę. Bierze taska a pod stołem robi coś z tego co chce.

AngryProgrammer napisał(a):

No niestety tak to wygląda

  • testerzy
  • backendowcy z 0 wiedzą o froncie
  • frontendowcy z 0 wiedzą o backendzie
  • kilku full stacków, niekiedy jedno story wymaga np. zmian w bazie danych i wyswietlenia tych zmian w tabelce na UI

Już Ci to skomentował @Shalom że to jest po prostu zło.
Nie macie zespołu, macie zlepek ludzi o swoich kompetencjach które sami tym bardziej silosują.
Ile ja z tym walczyłem, szczególnie przy błędach:
PO: "Nie działa"
Frontendowiec: "To nie u nas, to w backendzie, chyba zwrotka nie przychodzi"
Backendowiec: "Ch_ja, przychodzi tylko jej nie obsługuje. To nie u nas, zje__l front".
Po roku tłumaczenia im, że finalnie CEO w d_pie ma przez kogo nie działa bo jadą na tym samym wózku. Więc zaczęli się poszerzać w kompetencjach Jak odchodziłem z firmy byli w dużej mierze zastępowalni - nie było problemów z code review, z urlopami etc. Nie było tez problemu jak wjeżdżał temat typowo fronendowy albo backendowy. Da się. Ale trzeba było sporo pracy by ich przekonać.

2

@Fandarel,

Jakikolwiek wykres burn jest niewymagany w Scrumie. Na pewno nie służy do pokazywania na Review. To wewnętrzna rzecz dla zespołu w celu predykcji prawdopodobieństwa dowiezienia rzeczy w Backlogu Sprintu. I może iść do góry: przecież jak podczas Sprintu który ma cel wyjdzie Ci dodatkowa praca do wykonania do wrzucasz to do Backlogu Sprintu.

Albo nie łapiesz ironii, albo różnicy między teorią i praktyką.
Wiemy, że burndown chart nie powinien mieć znaczenia, ale rzeczywistość jest taka, że we wszystkich scrumowych projektach dochodzi do patologii z nim związanych. Najczęściej jest to dopychanie kolanem pod koniec sprintu, ale też fundamentalistyczna odmowa pracy nad zadaniem, które blokuje wszystko inne, ale nie możemy go ruszyć, bo zapomnieliśmy go zaplanować na sprint. Kiedyś nawet ja się tym strasznie przejmowałem, żeby mój zespół miał ładny wykres spalania, za co przepraszam.

Wiem, wiem, że zaraz odpowiesz, że w prawdziwym Scrumie to tak nie wolno. Analogicznie do socjalizmu, który jest idealnym systemem, ale jakoś tak zawsze słabo wychodzi implementacja.

No jako SM (tak znienawidzony na tym forum) pytam czemu czekasz 2 dni na code review? Miałem takie problemy. Zespół sobie wypracował zasadę, że na rzeczy do review zagląda się rano po Daily oraz po lunchu. Jak jest coś pilnego walisz na Slacku i prosisz o ASAP. Jak jest coś do obgadania siadasz obok i gadasz.

Bo może są obiektywne przyczyny, dla których nie da się zarezerwować czasu recenzentów. Nie każdy kod, który piszę, jest kontrolowany przez mój zespół. Np częścią zadania może być poprawka w projekcie OS na githubie, albo zmiana wymaga opinii germańskiego ciemiężcy. Trzeba poczekać na akceptację właścicieli i w ramach planowania uwzględnić takie potencjalne obsuwy.

4

Ale skąd założenie, że jedno story zamknąć w 1 dniu? Skąd się te wszystkie rzeczy biorą :D

Od ewangelistów Scruma. Pierwszy lepszy scrum guide (scrumguides.org):

For each selected Product Backlog item, the Developers plan the work necessary to create an Increment that meets the Definition of Done. This is often done by decomposing Product Backlog items into smaller work items of one day or less.

Już wiele razy dostawałem prośby o dzielenie tasków na mniejsze podzadania, żeby dało się je lepiej planować, bo tak będziemy bardziej Agile. Ja tak nie umiem. Jak podzielę pracę na podzadania dwugodzinne, to 20% czasu zmarnuję na obsługę tego w JIRA, a i tak się okazuje, że mój podział sensu nie ma i robię wszystko na raz.

2

Ja doświadczenia ze scrumem mam tylko złe i bardzo złe. Opisaliście Bracia wiele jego niedoskonałości, ale chyba nikt nie wspomniał o małej elastyczności w przypadku wystąpienia niespodziewanych przeszkód.
Przykład z życia wzięty - w obecnej firmie miałem stworzyć mechanizm reagowania na długie (>= 700ms) naciśnięcie klawisza na klawiaturze, przy użyciu frameworka Qt. Rzecz banalna, ale...no właśnie.
Istotnym czynnikiem określania owego wystąpienia jest badanie, czy QKeyEvent nie ma ustawionej flagi isAutoRepeat() - true oznacza, że klawisz jest wciśnięty, i odliczanie czasu czy nastąpi longPress winno być kontynuowane. Jeśli jest false to znaczy iż klawisz został puszczony przed longPressem.
I tu właśnie pojawia się niespodzianka - w Qt jest bug iż na linuksie QKeyEvent::isAutoRepeat() zwraca niepoprawną wartość. Całe więc planowanie i rozkminianie ile czasu potrzeba na zadanie poszło się kochać. Mało tego, nie ma jak wyestymować potrzebnego czasu na poprawki bo dopiero trzeba szukać jakiegokolwiek możliwego rozwiązania problemu.

Pomijam już fakt, że całe te planningi, estymaty i podobne to zwyczajne zawracanie d**y i zabieranie czasu który mógłby z pożytkiem być przeznaczony na kodowanie, pisanie testów, refactoring, czy chociażby chwilę również istotnego odpoczynku.

2
ArchitektSpaghetti napisał(a):

@Fandarel,

Jakikolwiek wykres burn jest niewymagany w Scrumie. Na pewno nie służy do pokazywania na Review. To wewnętrzna rzecz dla zespołu w celu predykcji prawdopodobieństwa dowiezienia rzeczy w Backlogu Sprintu. I może iść do góry: przecież jak podczas Sprintu który ma cel wyjdzie Ci dodatkowa praca do wykonania do wrzucasz to do Backlogu Sprintu.

Albo nie łapiesz ironii, albo różnicy między teorią i praktyką.
Wiemy, że burndown chart nie powinien mieć znaczenia, ale rzeczywistość jest taka, że we wszystkich scrumowych projektach dochodzi do patologii z nim związanych.

Ja mówię o samej praktyce. Tak jakoś wyszło, że wszystkiego się uczyłem z praktyki. A cały Scrum jest o nią operty.
Nigdzie jako Scrum Master nie dopuściłem do sytuacji by było to narzędzie dla managementu czy jakkolwiek wynoszone poza zespół. Jeśli zespół jest za to pałowany to ktoś nie robi swojej roboty. To jest dla zespołu. Koniec i kropka :) Przyznaję, dwa razy lata temu pokazałem to na Review. I zobaczyłem jakie to było głupie. Na tym też polega eksperymentowanie. Nikt nie jest wyrocznią :)

ArchitektSpaghetti napisał(a):

Najczęściej jest to dopychanie kolanem pod koniec sprintu, ale też fundamentalistyczna odmowa pracy nad zadaniem, które blokuje wszystko inne, ale nie możemy go ruszyć, bo zapomnieliśmy go zaplanować na sprint. Kiedyś nawet ja się tym strasznie przejmowałem, żeby mój zespół miał ładny wykres spalania, za co przepraszam.

No ale o czym Ty piszesz? :D Przecież jak jest coś krytycznego i jest to decyzja PO, że jest to krytyczne to takie rzeczy są wciągane. Zespół Scrumowy nie żyje w próżni np. nie olewa SLA utrzymania produktu. Dlatego zespołom zawsze mówię by nie brały pod korek. A jak PO chce wypełnić taczkę tak, że się g**no z niej przelewa mówię by dołożył drugie tyle bo czemu nie? Skoro wiadomo że i tak g_wno dojedzie to idźmy na całość :D

ArchitektSpaghetti napisał(a):

Wiem, wiem, że zaraz odpowiesz, że w prawdziwym Scrumie to tak nie wolno. Analogicznie do socjalizmu, który jest idealnym systemem, ale jakoś tak zawsze słabo wychodzi implementacja.

Nie, nie odpowiem. Nie jestem kapłanem, wyznawcą, nie odprawiam czarów, nie organizuje ceremonii i nie latam na kolorowych post-itach po biurowcu.
To do tego nie służy, a jak ktoś tego używa niezgodnie z przeznaczeniem to robi źle. I nie mówię, źle bo źle tylko dlatego, że to służy do czegoś innego. I cokolwiek zespołom nie mówię to W ŻYCIU nie powiedziałem "A bo w Scrum Guide jest napisane, że tak i tak". Znam takich, ale tego nie robię. Sam tłumaczę cel każdego spotkania i zadaję pytania.
Swoją drogą z kim będąc w USA masz problem. Rękawicę kuchenną jest napisane "don't etc" a jakiś koleś wcina posolone - do kogo masz pretensje, do producenta rękawicy czy do nieogara kolesia?
No i dalej. Czemu tak koniecznie Scrum? Jeden z moich zespołów pracuje w Kanbanie, i jest dobrze. Możliwości jest mnóstwo. Masz ramy i masz cały parasol agile i lean. Do wyboru do koloru. W zależności od kontekstu i potrzeb.

ArchitektSpaghetti napisał(a):

Bo może są obiektywne przyczyny, dla których nie da się zarezerwować czasu recenzentów. Nie każdy kod, który piszę, jest kontrolowany przez mój zespół. Np częścią zadania może być poprawka w projekcie OS na githubie, albo zmiana wymaga opinii germańskiego ciemiężcy. Trzeba poczekać na akceptację właścicieli i w ramach planowania uwzględnić takie potencjalne obsuwy.

No to lipa. Pytanie czemu to tak działa i czy nie można z tym czegoś zrobić? Przykładowo jeśli owy zespół zaciąga dużo rzeczy do sprawdzania niech ustawi sobie dyżurnych do takich rzeczy. Jeśli to mniejsza struktura, a sytuacje są incydentalne, prośba na Slack powinna wystarczyć. Jeśli dev nie daje rady prosi o pomoc PO (bo mu zależy) czy SM (bo odpowiada za proces).

ArchitektSpaghetti napisał(a):

Ale skąd założenie, że jedno story zamknąć w 1 dniu? Skąd się te wszystkie rzeczy biorą :D

Od ewangelistów Scruma. Pierwszy lepszy scrum guide (scrumguides.org):

For each selected Product Backlog item, the Developers plan the work necessary to create an Increment that meets the Definition of Done. This is often done by decomposing Product Backlog items into smaller work items of one day or less.

Już wiele razy dostawałem prośby o dzielenie tasków na mniejsze podzadania, żeby dało się je lepiej planować, bo tak będziemy bardziej Agile. Ja tak nie umiem. Jak podzielę pracę na podzadania dwugodzinne, to 20% czasu zmarnuję na obsługę tego w JIRA, a i tak się okazuje, że mój podział sensu nie ma i robię wszystko na raz.

No ale dalej, gdzie masz napisane, że masz to robić. Nie wiem czy wiesz, ale sam Guide zgodnie z zasadą inspect and adapt o czym pisał CI już @Charles_Ray także jest zmieniany. Czemu? Przez właśnie wyznawców każdego słowa. Tam jest napisane "often done". Nie masz to wymagane. Ja sam o to nie cisnę. Zespół na koniec planowania ma PO i SM przedstawić plan realizacji Sprintu. I są ludzie, którzy lubią to sobie rozpisać na podzadania (bez purystycznego podejścia że ma być na max. 1 dzień), a są ludzie, którzy tego nie lubią.
Natomiast tu jest jeszcze inny case, własne doświadczenia jako początkujący SM. Jeden dev, senior dev. przez 3 tygodnie przychodził na Daily i mówił to samo. "To jest już prawie skończone". I ewolucje tego. "Zostało tylko dopisanie dwóch testów", "Nie skończyłem bo napotkałem na jeden problem". I tak przez 3 tygodnie xD Nawet % sypał na początku, że już 70, 80, 95, no prawie.

MasterBLB napisał(a):

Pomijam już fakt, że całe te planningi, estymaty i podobne to zwyczajne zawracanie d**y i zabieranie czasu który mógłby z pożytkiem być przeznaczony na kodowanie, pisanie testów, refactoring, czy chociażby chwilę również istotnego odpoczynku.

Dorzućmy jeszcze do tego by nie gadać. Przecież nie po to został ktoś developerem za #15k by z ludźmi gadać. A w kiblach zamontować zagłuszacze Wi-Fi i sieci komórkowej - szybsze sranie, lepsze zdrowie devów bo mniej hemoroidów ;) I więcej czasu na kodowanie*.
Bez jaj. Kiedyś poproszono mnie o pomoc w takim agileowym zespołe pracującym według metodyki "pożar w burdelu". Nie ma w tym nic złego jeżeli ktokolwiek panuje nad priorytetami i generalnie organizacją. Ale tutaj zasadniczo było tak, że gdzie się bardziej pali na PROD, gdzie który Pan z biznesu mocniej mordę drze, tam zespół kieruje sikawki z wodą. "Utylizacja zasobów" była tak wielka, że po jakimś czasie wchodzenia w temat (najpierw jako obserwator) na osobności ludzie z zespołu mi mówili: tu naprawdę jest tak, że jest taki chaos, że realnie udajemy, że z taczką biegamy, a ona jest realnie pusta - zmiana priorytetów jest taka, że nic nie dowozimy. I chcieli czegoś spróbować, chcieli to usystematyzować. I nagle okazało się, że biznes jest w ogóle nieprzygotowany do rozwoju. Nie ma rzeczy określonych. Planning obnażył ich nieprzygotowanie.

Bo jest taka rzecz, którą niektórzy mówią a ja się z tym zgadzam z własnego doświadczenia. Scrum jest trudny do opanowania i sam w sobie nie rozwiązuje problemów, ale sprawia, że stają się one widoczne.

Co do czasu. 2 zespoły pracujące nad jednym produktem w Sprintach 2 tyg. Klasyka. Przegląd trwa 1,5h (pokazanie roadmapy, celów sprintów, zaprezentowanie co zostało zrobione, omówienie dalszych kroków, update backlogu). Planowanie OBU zespołów trwa 2h. Zespoły najpierw wspólnie dzielą się rzeczami a potem rozchodzą się na swoje Planningi. Retro osobne a potem wspólne, 2h. Wszystko Ci się zamyka w 5,5h w ciągu dwóch dni. Do tego Daily i na całość Ci wychodzi 10% czasu. Oczywiście refinementy w zależności od potrzeb PO czy zespołu dodatkowo.

2
Fandarel napisał(a):

Napiszę Wam, że jakoś przeraża mnie często co tutaj czytam :D

To dobrze, bo to jak firmy sabotują pracę swoich pracowników jest przerażające.

Możliwości jest mnóstwo? :) Oczywiście zakładamy, że w Backlogu Sprintu nie ma żadnego taska którym możesz się zająć:

  • pytasz czy komuś nie pomóc (zgłaszasz temat na Slacku, na Daily),
  • po skończonym kodowaniu uzupełniasz dokumentację
  • w ramach rozwoju T-shape testujesz kod który napisał ktoś inny?
  • robisz Spike jakiegoś nowego tematu, totalnie nieznanego
  • proponujesz PO wciągnięcia małego improvementu do Sprintu (polecam POsom robić sobie filtry gdzie pokazane są taski np. <3 SP typ improvement)
  • proponujesz grzebniecie czegoś w bebechach i spłacenie trochę długu albo jakąś modernizację np. podbicie biblioteki?
  • wymieniać dalej?

Jaki spike, jaki improvement, skoro historyjki są niedowiezione?
Zręcznie ominąłeś sedno problemu - rozjazd między developerami a testerami, czego efektem jest to, że raz nudzą się jedni, raz drudzy. A wszystko przez trzymanie się idiotycznej idei sprintów.

Jakikolwiek wykres burn jest niewymagany w Scrumie. Na pewno nie służy do pokazywania na Review. To wewnętrzna rzecz dla zespołu w celu predykcji prawdopodobieństwa dowiezienia rzeczy w Backlogu Sprintu. I może iść do góry: przecież jak podczas Sprintu który ma cel wyjdzie Ci dodatkowa praca do wykonania do wrzucasz to do Backlogu Sprintu.

Widać, że nie pracowałeś w scrumie w korporacji typu SH z prawdziwym scrum masterem obwieszonym certyfikatami.
A poza tym nie łapiesz ironii.

No jako SM (tak znienawidzony na tym forum) pytam czemu czekasz 2 dni na code review? Miałem takie problemy. Zespół sobie wypracował zasadę, że na rzeczy do review zagląda się rano po Daily oraz po lunchu. Jak jest coś pilnego walisz na Slacku i prosisz o ASAP. Jak jest coś do obgadania siadasz obok i gadasz.

Ludzie obciążeni zadaniami a przymuszeni do robienia review będą je po prostu zatwierdzać bez weryfikacji.

Przecież zadania dotyczące długu, modernizacji, optymalizacji też mają wartość biznesową.

Programiści to wiedzą. Management niekoniecznie.

To do tego nie służy, a jak ktoś tego używa niezgodnie z przeznaczeniem to robi źle. I nie mówię, źle bo źle tylko dlatego, że to służy do czegoś innego. I cokolwiek zespołom nie mówię to W ŻYCIU nie powiedziałem "A bo w Scrum Guide jest napisane, że tak i tak". Znam takich, ale tego nie robię. Sam tłumaczę cel każdego spotkania i zadaję pytania.

Cieszy mnie, że znasz takich.
To jeszcze zaakceptuj, że stanowią sporą część i są szkodnikami znienawidzonymi przez sporą część programistów, która musiała przez nich tracić czas.

No i dalej. Czemu tak koniecznie Scrum?

Bo ma dobry marketing, więc firmy sobie go kupują, aby być modne.

No ale dalej, gdzie masz napisane, że masz to robić. Nie wiem czy wiesz, ale sam Guide zgodnie z zasadą inspect and adapt

Nie po to zapłaciło się grube tysiące za szkolenie ludzi i wdrożenie metodyki, żeby coś w niej zmieniać.

Bo jest taka rzecz, którą niektórzy mówią a ja się z tym zgadzam z własnego doświadczenia. Scrum jest trudny do opanowania i sam w sobie nie rozwiązuje problemów, ale sprawia, że stają się one widoczne.

Zwłaszcza, że scrumem zajmują się ludzie nie mający pojęcia o realiach pracy.

0

Taki hint, nikogo poza zespołem zwykle nie obchodzi w jaki sposób pracuje. Oczywiście patologie w stylu "za mało zaplanowaliśmy i nic nie róbmy, bo burndown chart będzie brzydki" są powszechne, ale ostatecznie nikt was za bardzo nie skrzyczy za zrobienie czegoś więcej niż było planowane. Zawsze są bugi, długi.Kto wam zabrania dobierać jakiegoś kolejnego taska z backlogu?

8

Przypierniczę się tylko do jednego, bo nie chce mi się w kolejnym spuszczaniu na Scruma wiele pisać.

Jakikolwiek wykres burn jest niewymagany w Scrumie. Na pewno nie służy do pokazywania na Review. To wewnętrzna rzecz dla zespołu w celu predykcji prawdopodobieństwa dowiezienia rzeczy w Backlogu Sprintu.

Predykcji? Niby jakim cudem?

Jeśli mam zespół murarzy i taski to kładzenie kolejnych cegieł to miało by to jakiś sens.

W typowym projekcie gdzie jest jakies programowanie - taski są do siebie niepodobne i z każdym z nich jest związane jakieś ryzyko. Z kilku, kilkunastu zupełnie do siebie niepodobnych tasków w danym sprincie trudno coś wnioskować.

Jak mnie chcesz spytać co mniej więcej dowieziemy do końca sprintu - to obudzony o 3 ciej w nocy w dowolny dzień bym mnie więcej powiedział co będzie - nawet jeśli mam dosyć głęboko w duszy dany projekt. Oczywiście jest solidne ryzyko, że się pomylę.
Jakbym miał się posługiwac burndown chartem to pomogłoby mi to tak jak dodatkowe wypicie litra wódki przed północą (zanim ktoś mnie obudził o tej 3 ciej w nocy). Ryzyko, że się nie będzie zgadzać będzie podobne, za to dłużej będę bełkotać zanim coś z siebie wypluję.

Oczywiście mówię tu o typowych projektach do ośmiu ludzi i sprintach do max 2 tygodnie. Jak ktoś ma sprinty na 2 miesiące to i burndown chart może się przydać, ale tu IMO wpdadamy w jeszcze większą patologię.
Jak ktoś ma podobne do siebie taski, to nie pracuje w IT tylko w piekarni- co najwyżej o tym nie wie.

(btw. jak ja jestem szczęśliwy, że nie mam już Scruma i całej tej patologii )

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.