Podstawy zwinnego zarządzania wytwarzaniem produktów Flashcards
(49 cards)
Zasady Programowania Zwinnego
- Najwyższy priorytet ma dla nas zadowolenie klienta dzięki wczesnemu i ciągłemu wdrażaniu wartościowego oprogramowania
- Bądźcie gotowi na zmiany wymagań
nawet na późnym etapie jego rozwoju.
Procesy zwinne wykorzystują zmiany
dla zapewnienia klientowi konkurencyjności - Dostarczajcie funkcjonujące oprogramowanie często,
w kilkutygodniowych lub kilkumiesięcznych odstępach, im częściej, tym lepiej - Zespoły biznesowe i deweloperskie muszą ściśle ze sobą współpracować w codziennej pracy przez cały czas trwania
projektu
Zasady programowania zwinnego c.d
- Twórzcie projekty wokół zmotywowanych ludzi.
- Zapewnijcie im potrzebne środowisko oraz wsparcie i zaufajcie, że
wykonają powierzone zadanie. - Najbardziej efektywnym i wydajnym sposobem przekazywania
informacji zespołowi deweloperskiemu i wewnątrz niego jest
rozmowa twarzą w twarz - Działające oprogramowanie jest podstawową miarą postępu.
Zasady programowania zwinnego c.d 2
Procesy zwinne umożliwiają zrównoważony rozwój.
Sponsorzy, deweloperzy oraz użytkownicy powinni być w stanie
utrzymywać równe tempo pracy.
Ciągłe skupienie na technicznej doskonałości i dobrym
projektowaniu zwiększa zwinność.
Prostota – sztuka minimalizowania ilości koniecznej pracy – jest kluczowa.
Zasady programowania zwinnego c.d 3
Najlepsze rozwiązania architektoniczne, wymagania i projekty
pochodzą od samoorganizujących się zespołów.
W regularnych odstępach czasu zespół analizuje możliwości
poprawy swojej wydajności, a następnie dostraja i dostosowuje
swoje działania do wyciągniętych wniosków.
Jak myślisz, kto najlepiej wskaże/zdefiniuje wartość twojego produktu?
Klient/użytkownik
Każda organizacja ma swój cel istnienia i uprośćmy, że dla firmy prywatnej będzie to zysk. Tak definiowany sukces kieruje nas ku satysfakcji klientów - odbiorców, którym dedykujemy produkt bądź usługę, jako podstawowej miary sukcesu.
Zatem definicja czym jest wartość oferowanego produktu leży w gestii jego użytkowników.
Co mamy na myśli mówiąc o dbałości o zadowolenie klienta w zwinnym środowisku wytwarzania oprogramowania?
- Wczesne osiąganie oczekiwanej wartości
- Regularne wdrażanie oprogramowania
Zgodnie z 1. zasadą manifestu Agile najwyższy priorytet ma dla nas zadowolenie klienta dzięki wczesnemu i ciągłemu wdrażaniu wartościowego oprogramowania. “Zwinnie” oznacza dążenie do wczesnego zbudowania wartości i nabudowywania kolejnych jej przyrostów, dzięki czemu utrzymujemy zadowolenie klienta na wysokim poziomie.
Co w zwinnym środowisku wytwarzania oprogramowania oznacza zmiana w późnym etapie rozwoju?
Niemal tyle, co gdyby jej potrzebę odkryto w początkowym stadium
Podejście zwinne wskazuje, że klient odkrywa, czego chce w miarę jak produkt powstaje. Oznacza to, że zmiany są nieuniknione, a gotowość na nie oznacza zadowolenie klienta, gdyż daje mu przewagę konkurencyjną. Gotowość ta wynika z faktu, iż proces wytwórczy jest podzielony na etapy, w których od razu zawiera się projektowanie, implementacja i testowanie. Koszt późniejszej zmiany jest dużo niższy, niż w podejściu kaskadowym, gdzie wymaga powtarzania wcześniejszych kroków. Patrz: Zasada 2. manifestu Agile
Klient proponuje, by spotkać się w “połowie projektu” i sprawdzić postępy. Co odpowiadasz?
Sugerujemy częściej i regularnie. Spotkajmy się za 2 tygodnie, powtórzmy to 2-3 razy w takim odstępie i sprawdźmy, czy taki tryb jest wartościowy.
Odwołaj się do 3. zasady manifestu Agile, która mówi o dostarczaniu funkcjonującego oprogramowania często, w kilkutygodniowych odstępach. Celem jest budowanie okazji do regularnego feedbacku postępów, dzielenia się informacjami ze zmiennego otoczenia biznesowego i finalnie do ataptacji kolejnych kroków. Obecnie odstępy te to często 1-2 tygodnie.
Które aspekty należy wziąć pod uwagę chcąc zbudować zespół pod zwinny proces wytwórczy?
- różnorodność kompetencji
- zdefiniowane role (np. osoby decydującej o kolejności rozwoju produktu)
- jasny, precyzyjny i mierzalny cel biznesowy
5 zasada manifestu Agile mówi o zmotywowanych ludziach, jako kluczu do sukcesu. Oznacza to zapewnienie zespołowi środowiska, które nie będzie ich demotywowało np. brakiem niezbędnych umiejętności, brakiem decyzyjności czy brakiem celowości
Co zaproponujesz nowemu klientowi twojego software house’u jako początek współpracy z zespołem deweloperskim?
Spotkanie na którym opowie o potrzebie i oczekiwaniach
Najefektywniejszym i najwydajniejszym sposobem przekazywania informacji jest bezpośrednia rozmowa. Można się przy tym wspierać dokumentacją i wizualizacją, jednak elementem niezbędnym w podejściu zwinnym jest budowanie relacji opartej na dialogu i wymianie myśli, w celu lepszego zrozumienia (patrz zasada 6. Manifestu Agile)
Pytasz lidera obszaru produktowego, jak mierzy postęp prac nad wytwarzanym oprogramowaniem. Która odpowiedź świadczy o zwinności podejścia?
Gdy spotykamy się (biznes z zespołem deweloperskim) to oglądamy działające oprogramowanie i na tej podstawie dyskutujemy, co dalej
Podstawową miarą postępu jest działające oprogramowanie (patrz. zasada siódma manifestu agile). Chcemy mieć pewność, że tak samo rozumiemy (biznes i zespół wytwórczy) aktualny stan. Dodatkowo warto posiłkować się innymi miarami, by dyskutować najlepsze kolejne kroki rozwoju produktu.
Założenia Manifestu
- Najwyższy priorytet ma dla nas zadowolenie klienta
dzięki wczesnemu i ciągłemu wdrażaniu wartościowego oprogramowania. - Bądźcie gotowi na zmiany wymagań
nawet na późnym etapie jego rozwoju.
Procesy zwinne wykorzystują zmiany
dla zapewnienia klientowi konkurencyjności - Dostarczajcie funkcjonujące oprogramowanie często,
w kilkutygodniowych lub kilkumiesięcznych odstępach.
Im częściej, tym lepiej. - Zespoły biznesowe i deweloperskie muszą ściśle ze sobą
współpracować w codziennej pracy przez cały czas trwania projektu. - Twórzcie projekty wokół zmotywowanych ludzi.
Zapewnijcie im potrzebne środowisko oraz wsparcie i zaufajcie,
że wykonają powierzone zadanie. - Najbardziej efektywnym i wydajnym sposobem przekazywania
informacji zespołowi deweloperskiemu i wewnątrz niego jest rozmowa twarzą w twarz. - Działające oprogramowanie jest podstawową miarą postępu.
- Procesy zwinne umożliwiają zrównoważony rozwój.
Sponsorzy, deweloperzy oraz użytkownicy powinni być w stanie
utrzymywać równe tempo pracy. - Ciągłe skupienie na technicznej doskonałości i dobrym
projektowaniu zwiększa zwinność. - Prostota – sztuka minimalizowania ilości koniecznej pracy – jest kluczowa.
- Najlepsze rozwiązania architektoniczne, wymagania i projekty
pochodzą od samoorganizujących się zespołów. - W regularnych odstępach czasu zespół analizuje
możliwości poprawy swojej wydajności,
a następnie dostraja i dostosowuje
swoje działania do wyciągniętych wniosków
Zwinność
to nieustanne zapewnienie satysfakcji klienta (użytkownika), poprzez zdolność do reagowania na wszelkie zmiany – od priorytetów, do warunków rynkowych.
Oznacza to osiąganie sukcesu
(biznesowego) dzięki:
- wysokiej produktywności (wczesne i regularne dostarczanie wartości, definiowanej przez
klienta) i - jakości dostarczanych rozwiązań (klient wraca, jest zadowolony z braku błędów; zyskujemy
nowych klientów).
Zwinność to innymi słowy organizacja zwinna pracuje w systemie adaptacyjnym. Adaptuje się do potrzeb, czy
zmian rynkowych zarówno wprowadzając zmiany w produkcie, jak i w procesie. Elastyczność i responsywność oznacza inwestycję w:
Pracę zespołową – tworzenie międzyfunkcyjnych zespołów pracujących z krótką pętlą informacji zwrotnej od klienta/użytkownika.
Proces wytwórczy nie podzielony na fazy według kompetencji (analiza, programowanie, testowanie), a ciągłe zapętlenie wszystkich tych kroków w małych iteracjach (1-4 tygodnie). Przy
tym każda kończących się przyrostem wartości w postaci stale działającego oprogramowania.
Nieustanne usprawnianie wszystkich elementów procesu wytwórczego, ze skupieniem na
efektywnym dostarczaniu wartości klientowi.
Pierwszy wymiar (stopień niepewności)
opisuje skala od blisko pewności do daleko od pewności. Zagadnienia z początku skali charakteryzuje znane połączenie przyczynowo-skutkowe. Najczęściej dotyczy to spraw, z którymi mieliśmy już do czynienia wcześniej. Korzystając z doświadczenia
możemy przewidzieć wynik podejmowanej akcji z dużą pewnością. Zagadnienia z drugiego końca
skali charakteryzuje unikalny charakter zdarzenia (w ogóle lub dla osoby podejmującej decyzję).
Ciąg przyczynowo-skutkowy jest nieznany i bazowanie na doświadczeniu nie pomoże. Drugi wymiar
(skala wertykalna, stopień porozumienia) jest związany z poziomem zgodności co do decyzji. Dotyczy
spraw dotykających daną grupę ludzie, zespół, czy całą organizację.
Blisko zgodności i blisko pewności
W takim systemie korzystamy z gromadzenia danych z przeszłości, by użyć ich do prognozowania przyszłości. Planujemy konkretne kroki i akcje by osiągnąć oczekiwane rezultaty. Monitorujemy postępy w celu porównania z założonym planem.
W tej domenie celem jest powtarzalność gwarantująca wzrost produktywności.
Daleko od zgodności, a blisko pewności
W takim systemie mamy do czynienia z dużą pewnością jak osiągać dane wyniki, jednak brakuje
jasności, które z nich są najbardziej pożądane. Plan traci znaczenie, ważniejsze stają się negocjacje, koalicje i szukanie kompromisów, by wyznaczyć kierunek działania. W tej domenie najczęściej odnajdujemy politykę.
Blisko zgodności, a daleko pewności (wysoka niepewność)
W takim systemie mamy do czynienia z wysokim poczuciem zgodności, przy braku jasności co
do ciągu przyczynowo-skutkowego. W tym wypadku dokładne planowanie jest zastępowane
poczuciem wspólnej wizji i misji, a realne postępy weryfikowane względem nich. Nie jesteśmy
w stanie określić dokładnej ścieżki kolejnych kroków, za to celem jest podążanie w kierunku
wcześniej określonego stanu. W tej domenie bazujemy na logice i ocenie względem idei.
Daleko od zgodności i daleko od pewności – anarchia, chaos
Wysoki poziom niezgody i niepewności prowadzi często do zachowań anarchicznych. Plany, wizje, czy negocjacje nie są wystarczająco determinujące dla decyzji. W tej domenie, w krótkiej
perspektywie może zadziałać unikanie, które w długiej będzie destrukcyjne.
Domena złożona, nazywana też niekiedy granicą chaosu
znajduje się pomiędzy anarchią, a obszarami tradycyjnego zarządzania. Skuteczność działania i podejmowania decyzji zapewnia tu kreatywność, innowacyjność, podejście empiryczne polegające na eksperymentowaniu i doświadczaniu. Deterministyczne modele przewidywania7 oparte na wcześniejszych doświadczeniach i danych tracą tu
na swojej skuteczności, gdyż pojawia się zbyt wiele różnych od siebie kontekstów.
Domena chaotyczna (Chaos) – wiadome jest bardzo niewiele
Jest to system, który na matrycy Stacey’ego cechował wysoki poziom niezgodności (braku porozumienia) i niepewności. Nie działają tu tradycyjne metody zarządzania – za mało wiemy, za mało
rozumiemy. Unikanie działania odsuwa jedynie w czasie blokadę decyzyjną.
Najlepszym zachowaniem jest funkcjonowanie według schematu: działaj – odczuwaj – reaguj
(act – sense – respond). Działanie jest intuicyjne i oparte na reagowaniu na zmiany, które się pojawią
w następstwie naszego działania. Praktyki dopiero się pojawiają. Przykładem systemu opartego na
takim schemacie podejmowania decyzji są inicjatywy startupowe w pierwszym okresie funkcjonowania, gdzie następuje eksploracja zarówno w sensie produktu, jak i procesów.
Domena złożona (Complex) – więcej jest niewiadomych, niż wiadomych.
W sytuacji, w której niewiadome przewyższają wiadome zarówno w aspekcie technologicznym, jak
i oczekiwań, mamy do czynienia ze złożonością. Należy przy tym pamiętać, że niepewność wynika
z dużej ilości zmiennych w czasie kontekstów – ludzie zdobywają doświadczenie i wiedzę, zmienia się
skład zespołów, zmieni się otoczenie biznesowe, etc. Cechuje ją to, że ten sam efekt końcowy będzie
osiągnięty za każdym kolejnym podejściem w inny sposób, gdyż zmieni się choć jeden z kontekstów.
W tej domenie systemy naturalne radzą sobie samoorganizacją – mniej wymuszonego porządku,
wystarczają znane i jasne ramy oraz atraktory do działania.
Zatem sugerowanym sposobem funkcjonowania w biznesie jest eksperymentowanie: zbadaj
(próbkuj) – odczuwaj – reaguj (ang. probe – sense – respond). Oznacza ono umiejętność ustalenia ram eksperymentu i nazwanego celu, a zatem umiejętność interpretacji wyników.
Przykładem systemu opartego na takim schemacie podejmowania decyzji jest większość organizacji
IT tworzących oprogramowanie.
Domena skomplikowana (Complicated) – więcej wiemy niż nie wiemy.
System w tej domenie cechuje możliwość zarządzania ograniczeniami, gdyż je znamy i rozumiemy.
Mamy tu do czynienia z niską niepewnością technologiczną, bądź jasnością zrozumienia co do wymagań. Potrafimy nazwać dobre praktyki, praca ekspertów domenowych jest skuteczna i efektywna.
Domena prosta (Simple, Obvious) – wszystko jest znane.
W sytuacji niskiej niepewności (technologicznej) i wysokiego porozumienia (co do wymagań i rezultatu)
mamy do czynienia z systemem prostym. Analizując problem/zadanie jesteśmy w stanie je skategoryzować w celu zastosowania najlepszych, znanych nam i wykorzystane już wcześniej praktyki.