Podstawy zwinnego zarządzania wytwarzaniem produktów Flashcards
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.