@Miang: (w komentarzach):
Trójkąt projektu to czas, koszt, jakość - wybierz jedno. Agile pozwala dostać jakość, czyli działające oprogramowanie robiące to czego się od niego oczekuje. Na pytania "ile to będzie kosztować" i "kiedy to będzie" nie jest w stanie odpowiedzieć z definicji, bo poza kilkutygodniową perspektywą agile nie działa. Możesz podzielić sobie duża porcję pracy na elementy, a później nanosić ich wykonanie na wykres skończonaFunkcjonalność(czas) i wtedy masz sensowne szacunki "kiedy". Im więcej zrobione i im mniej do zrobienia zostało, tym szacunki bardziej wiarygodne, ale to działa w projektach o elastycznym czasie dostarczenia, albo elastycznej funkcjonalności. Czyli zgodnie z założeniem projektów zwinnych - robimy to co właśnie teraz jest potrzebne, przez ileś tam, za ileś tam i klient decyduje, czy przy takiej historii dostarczonych funkcji i przepalonej kasy chce iść dalej, czy mu się to nie opłaca.
Jeżeli masz projekt fixed price, to robisz to co masz w umowie, na takim poziomie jakości, żeby zmieścić się w czasie i budżecie. Skoro nie ma elastycznego zakresu projektu, elastycznego czasu i elastycznego budżetu, to manipuluje się jakością na poziomie DoD - wywalamy testy, refaktoryzację w trakcie pracy itp. Czyli wszystko jak w typowym Software House. Polak, hindus dwa bratanki.
@piotrpo: opisujesz waterfall nie agile
- najlepszą architekturę zgodnie z agile robi zespół
Nie, opisuję proces tworzenia oprogramowania. Czynności w których nie bierze udziału SM. Robi je człowiek lub ludzie w roli architekta. Nie musi być (i nie powinien) ktoś na zewnątrz zespołu. Wiedza na temat sensowności (i bezsensowności) wybranego rozwiązania pojawia się stopniowo. Powinien w to być zaangażowany cały zespół, ale w praktyce senior będzie miał tutaj więcej do powiedzenia, niż gość, który zaczął dopiero pracę.
- zespół ma znać potrzeby biznesowe i rozmawiać z "klientem", nie tylko product ownerem
Jasne, tyle teorii. W jaki sposób zespół ma znać potrzeby klienta kiedy pracuje nad np. usługą SaaS przewidywaną do posiadania np. miliona użytkowników? Pojawia się wtedy dodatkowa wyspecjalizowana osoba w postaci PO. Jeżeli projekt ma ogarnąć dużą i hermetyczną domenę, to "zespół rozumiejący biznes" jest mitem. Interesuję się tym co ma robić mój produkt, mam sporą wiedzę domenową z tej dziedziny jak na programistę. Nie ma natomiast szans, żebym wiedział więcej niż 5% tego co wie gość pracujący w tej domenie od 20 lat. Nie ważne, czy to jest bankowość, ubezpieczenia, czy lotnictwo. Naprawdę dużą wiedzę o domenie i potrzebach użytkownika miałem w 2-3 projektach w życiu, 2 były hobbystyczne (robiłem coś dla siebie i przy okazji publikowałem) i raz był to serwis do ustawiania spotkań - czyli narzędzie do czegoś z czym mam do czynienia na codzień. Co ciekawe, w tych projektach nie było SM.
- pilność zadania to nie to samo co priorytet, PO określa priorytet, pilność to bardziej data, a ta w scrumie sprowadza się do tego który to sprint (ale np. Kanban to obsłuży, ale piszesz o PO, a Kanban nie ma takiej roli, taką ma Scrum)
Nie ważne jak to nazwiesz, musi być ktoś (osoba/kawałek osoby/zespół), który to ogarnie.
- na kiedy będzie zrobione to wiadomo, po to są estymacje, które zmieniały się na przestrzeni scrum guide, ale są zawsze, więc jak nie wiesz kiedy będzie coś zrobione, to znaczy że backlog nie jest ready do sprintu, a jak wiesz -> no to wiesz czy to będzie w tym sprincie czy następnym
Dobre. Przypomnijmy że SP nie jest jednostką czasu (podobno), tylko zawiera w sobie element niepewności. Efekt jest taki, że możesz sobie planować, że coś będzie, a na koniec okaże się, że jednak nie wyszło. Bo ktoś złamał rękę, bo metoda, która wydawała się fajna okazała się nie działająca w praktyce. No i cały czas piszesz o sprincie. Powiedz ile będzie trwał średniej wielkości projekt przewidziany początkowo na 3 lata z budżetem ~10 000 000 USD.
- ile będzie kosztowało też wiadomo = sprint to timebox czasowy, koszty zespołu developerskiego są czasowe, chyba że mówimy o tym że nie wiadomo z jaką złożonością obliczeniową zakończymy task i to zmienia czy w GCP przepalać będziemy 1k miesięcznie czy 20k miesięcznie.
Ok, radzę sobie z arytmetyką. Tylko to jest "trochę" bardziej złożone. W perspektywie 2 tygodni oczywiście, że możesz z dokładnością ~10% przewidzieć co zostanie dostarczone i ile to będzie kosztowało. Tylko najkrótszy projekt w którym brałem udział trwał kilka miesięcy.
Proces który opisujesz ma bardzo długi value stream (lean), nie przewiduje współpracy biznesu z developerami (agile manifesto #4 principle), oraz wprowadza rolę pozazespołowego UX designera i architekta (wbrew agile manifesto #11 principle). Tak da się robić oprogramowanie ale zamiast "zbędnej roli SM" masz w bezpośrednim sądziedztwie zespołu inne role, które tak samo zużywają zasoby firmy i bez tych ról oprogramowanie nie powstanie.
Znowu - to czy UX/architekt będzie w zespole, czy poza nim nie ma znaczenia. Kolejna partia roboty, którą trzeba zrobić (kto i gdzie to wtórny problem), której nie wykonuje SM.
Uczciwie oceniając - to bardziej waterfall niż agile. Czy to źle? Niekoniecznie tj. masę oprogramowania tak zrobiono, wciąż robi się oprogramowanie w ten sposób, ten soft działa, ale ma to swoje określone i udowodnione wady - częste wyprodukowanie złej funkcjonalności (taką jaką klient chciał, ale nie taką jaką potrzebował), zdemotywowany zespół (architekt przerzuca wymagania przez płot, a ja wiem że za dwa tygodnie będziemy to przepisywać i lepiej być na to gotowym), długi value stream (wycena, budżet, zatwierdzenie -> 6 miesięcy, a potem zlecenie żeby było na za dwa dni) etc.
Agile i waterfall to to samo, istotnie różnią się jedynie liczbą iteracji i ich częstotliwością. W takim Kanbanie mamy iterację na poziomie pojedynczej historyjki, w Scrum na poziomie 2 tygodni a w waterfall będzie to np. 5 lat na stworzenie i wdrożenie sytemu informatycznego dla ZUS.
I teraz albo robimy agile, albo przestańmy się wygłupiać że jesteśmy zwinni (jeśli nie jesteśmy i nie chcemy być), tylko róbmy waterfalla porządnie - też się da. Wszystko lepsze niż tryb pożaru i burdelu, który jest defaultem.
Nieprawda. Agile powinien podlegać zmianom. Twoje "róbmy agile porządnie" oznacza "róbmy jak w komiksie dla SM". W efekcie czego celem projektu staje się "zrobienie adżajla" zamiast "zrobienie produktu". Ale pierniczenia o szacunku i dostarczaniu rzeczywistej wartości klientowi jest oczywiście niezwykle dużo.
Stwierdzenie "w przypadku kiedy zespół radzi sobie z organizacją własnej pracy jest zbędny" jest osobnym zagadnieniem. Zawsze da się coś poprawić.
Tylko jeżeli koszt zmiany jest duży a zysk z tej zmiany mały to nie ma sensu jej wprowadzać, bo netto wyjdzie na minus. Im lepiej zespół sobie radzi, tym mniejszy zysk z udoskonaleń (bo jest mniej do udoskonalania). To nie jest "osobne zagadnienie". To temat tego wątku. SM, jako człowiek, który robi jedynie robotę SM to wyrzucanie pieniędzy w błoto. Nie ma wiedzy biznesowej, nie ma wiedzy technicznej. Pół biedy, jeżeli nic nie robi, ale zwykle lubi poprzeszkadzać w pracy.
Jedyną osobą, która może to efektywnie zrobić jest osoba, która wykonuje dane zadanie. Niemniej osoba wykonująca zadanie nie ma możliwości stanąć z boku i przyjrzeć się jak to robi, albo co gorsza - nie ma na to czasu. Scrum dba o to by była przestrzeń na rozwój i refleksję, Scrum Master ma dbać o to by ta przestrzeń tam była oraz ma identyfikować co w ogóle jest do poprawy, bo jest w unikalnej pozycji w której pracę obserwuje z boku, więc łatwiej wychwytywać problemy, albo pomagać zespołowi identyfikować problemy. Rozwiązanie problemu (lub jego zignorowanie) to kwestia zespołu developerskiego.
Tak, wiem "ja tu się jedynie przyglądam i podpowiadam. Moją rolą jest zachęcenie was do korzystania ze Scrum" Słyszałem zbyt wiele razy w życiu.
Agile tylko z nazwy i scrum master prasujący koszule w pracy, to na pewno problem firm i programistów. Byłbym jednak ostrożny ze stwierdzaniem, że źródło problemu to scrum masterzy jako tacy.
Nie wszyscy. Miałem dobre doświadczenia z SM, ale w większości przypadków naprawdę to prasowanie koszul w trakcie pracy byłoby mniejszym złem.