Obsah
- proč agilní metodiky
- Scrum
- praktické zkušenosti
Metodika
- soubor doporučených postupů jak tvořit software
- algoritmus vývoje software
- softwarový proces (anglicky Software development process)
- Když se bavíme o metodikách tak co to je ta metodika
-
program jak psát software
Vodopád
- hypotetická metodika, zmiňuji kvůli fázím
- popsat fáze
Náklady opravy chyby
- čím dříve najdeme chybu, tím levnější bude oprava
- rozdíl nákladů na opravu může být ohromný
- platí nejen ve vodopádu
- je to základní myšlenka
- rozdíl může být i 300x
Riziko vodopádu
- zákazník vidí výsledný produkt až na konci projektu
- riziko je vysoké až do konce projektu
- proč je to riziko?
- kvůli riziku je to někdy vodopád
Jak snížit riziko?
- rizika
- špatné požadavky
- špatný návrh
- chyba v programu
- dodržení termínu
- ...
- jediná jistota je, že bude změna
- Když jedu autem pořád otáčím volantem
- opravné procesy (zatáčím)
-
zpětná vazba
Iterace
- riziko snížíme zpětnou vazbou
- zákazník uvidí prototyp
- tester najde chybu
- uspěje automatizovaný test
- program jde spustit
- uspěje překlad
- IDE nabídne správnou metodu
- ...
- iterace na všech úrovních
- co nejkratší iterace
- fail fast
- proto je obliba interpretovaných jazyků (nemíchat s dynamickými)
- proto je obliba typově silných jazyků
Rizika u iterace
- díky iteracím se riziko snížilo
- u první iterace bývá riziko největší - nová technologie, ...
Co je nejdůležitější?
- Co je při vývoji software nejdůležitější?
- abychom mohli pokračovat dále - co je nejdůležitější?
-
Alistair Cockburn v IBM:
- nejdříve matematický popis požadavků zákazníka
- modelovací nástroj
- velké metodiky (RUP, UP)
- míra selhání byla vždy stejná
- zapomněli na to nejdůležitější: Lidi
- lidé nejsou důslední (dostatečně dobrý)
- lidé nedávají stejný výkon v čase
- s dobrým ProjMan špatný tým produkt nedodá
- výborný tým se špatným ProjMan projekt dodá
-
metodika by měla popisovat jak tým opravdu
funguje, ne nereálnou představu jak by měli
Co je nejdůležitější?
- lidé
- jejich chuť (motivace)
- komunikace
- zkušenosti
- komunikace
- mezi zákazníkem a sw. společností
- mezi analytiky a vývojem
- mezi členy týmu
- s nejlepšími lidmi dokážu vše
- některý vývojař může být až 10x výkonnější než jiní
- nejlepších výsledků dosáhnu pokud se zaměřím na lidi - o tom je agilní
Rozsahy metodik
- metodiky zasahují do těchto oblastí
- chování vývojařů
- chování v týmu
- tým týmů (velký tým)
- moje dělení
- jeden člověk
- unit testy
- kompilace
- kontinuální integrace
- párové programování
- coding style
-
malý tým
- jak komunikovat v týmu
- jak zadávat úkoly
Rozsahy metodik
- metodiky zasahují do těchto oblastí
- chování vývojařů
- chování v týmu
- tým týmů (velký tým)
Metodiky
- máme lidi, ne role
- vlastní zájmy, motivace
- různé znalosti
- kultura, zvyky
- neškálují
- nejsou dokonalí
- algoritmus vývoje software
- vágně popsaný <> příliš podrobné
- musí se přizpůsobit
- lidé nejsou stroje
- nedokážeme je dělat přesně (metodiky)
- lidé nejsou dokonalí - tu samou věc dělají dostatečně dobře
- neměla by se firma spíše věnovat vyšší kvalitě produktů? (zákazník nechce procesy, chce produkt - Lean development)
- klasické
- je nutné konfigurovat co používat
- jejich nasazení je náročné (drahé)
Co to je agilní metodika?
- zjednodušení metodik (odlehčení) a soustředění se na důležité věci
- klíčové vlastnosti
- iterace
- změna je život a je vítána
- jednoduchost (KISS)
- přímá a častá komunikace – omezení dokumentů
- pozornost věnována dobrému designu a technické zdatnosti týmu
- změna je dobrá - znamená to, že zákazník ten produkt potřebuje a něco mu přinese
- některé myšlenky agilních se používají i v klasických metodikách
- u klasické metodiky musíme "vyhazovat"
- do agilní si můžeme něco přidat
- i u klasických projektů je mnoho neznámých, které se řeší později (agilně)
- používat zdravý rozum
- není to:
- divočina
- když neděláme analýzu a plánování označíme za agilní
Typy agilních metodik
- Extreme programming
- Scrum
- Lean Development
- ...
- Škoda, že je nazvané extrémní - já bych do projektu nic extrémního nenasadil
- dost často kombinujeme - XP a Scrum
- Lean manufacturing - co nechce zákazník neděláme
výsledkem produktu:
- je to program + dokumentace
Extrémní programování
- definuje především chování vývojařů
- testy řízený vývoj
- párové programování
- sdílený kód
- jednoduchost
- odvaha pro změnu
- kontinuální integrace
- ...
- trošku i vývoj v týmu
- nejznámnější agilní metodika
- párové programování - sdílení znalostí - z juniora uděláte rychle seniora, jejich rotace
- Má smysl nasazovat i postupně u jiných metodik - obecně dobrá pravidla.
- Jediné kontroverzní je párové programování.
Cena extrémního programování
- cílem je minimalizovat náklady na vývoj
- párové programování je dražší, ale ...
- psaní testů je dražší, ale ...
- Jsou projekty kde se to nevyplatí - např. PHP web za 40 000,-
- tohle funguje, když máte zkušené lidi
- je to vždy o hranici - začínáme testy na to kritické (např. platby)
Scrum
- krátké iterace – sprinty
- backlog – seznam akcí pro danou iteraci, vlastníkem je tým
- denní scrumy
- plánovací schůzky před sprintem
- retrospekce po sprintu
- scrum je v rugby když hráč leží hromada hráčů a ten s míčem vylézá ze spoda
- demokracie
- 2 až 4 týdný (3 týdenní)
- termín iterace je fixní - neposouvá se
Scrum – lidé
- žádné týmové hierarchie
- zákazník je členem týmu
- Scrum master
- žádné týmové hierarchie
- máme scrum mastera
- zákazník je členem týmu - mnoho dalších rozhodnutí
- pak máme členy týmu
- V souvislosti s rolemi v agilních metodikách je Bajka - kuřátko a prasátko.
- Kuřátko přijde a povídá
Založíme restauraci, a jak se bude jmenovat?
- podílet (involved),
- obětovaný (commited)
mějte dostatek prasátek v týmu
Scrum master
- odklízení překážek
- dbaní na dodržování principů Scrumu
- zkušenost se Scrumem
- možnost certifikace (nebo kuchařka Scrum Checklist)
- nerozhoduje o prémiích
- chodí pro bagety a kafe :-)
Scrum plánování
- product backlog
- popisy úkolů
- priority
- hrubé odhady dodané týmem
- release backlog
- sprint backlog
Plánování sprintu
- sestavení release backlogu
- sestavení sprint backlogu
- banka hodin
- ideální inženýrská hodina
- plánovací poker
- možná i redukce
- určen čas na sprint, ...
- lidé dělali na dané vlastnosti a ví proč tak trvala
- všichni ví co se bude dělat (zkušenost u nás)
- závazek týmu
- jasný termín lidem pomáhá
Denní Scrum
- každý den
- max 15 minut
- odpověď na otázky
- co jsem udělal za posledních 24 hodin
- co budu dělat dalších 24 hodin
- co mně blokuje v další práci
- děláme jej po obědě
- doporučujeme ve stoje, déle stát nevydržíme - i když mi u toho sedíme
- všichni ví co se zrovna dělá
- lidi se snaží udělat to za kratší dobu než byl odhad
- veřejný závazek
- práce strhuje
- výběr partnera do párového programování - my se zatím párového programování bojíme
Sledování času
- burndown chart
- aktualizováno denně
- někdy je potřeba věci vyhazovat
Ohlédnutí za sprintem
- co jsme stihli
- co bylo dobré a co špatné
- tvorba ideální inženýrské hodiny
Kdy ne agilně
- musíte mít tým :-)
- náročnější u velkých projektů
- u "přesného plánování"
- jeden člověk je vždy agilní :-)
- velké projekty jsou náročné i s jinými metodikami
- Scrumu Scrumů
- pro některé zákazníky je důležitější přesné plánování než levnější produkt
- problém přesného plánování - omezujeme riziko i pozitivní - nedovolíme členům týmů to udělát lépe
Shrnutí
- agilní metodika je soubor pravidel, která jiným fungovala
- agilní metodiky nejsou žádnou stříbrnou kulkou
- Scrum můžete nasadit potají :-)
- kladou důraz na důležité věci
- ale takhle my fungujeme
- agilně - pro některé lidi můžeme být agilní a pro některé ne - agilnost můžeme i ztratit (stačí blbý člen týmu)
- dnes je trend přesunu od popisů procesů k popisu praktických úkolů (practices). Agilní vývoj je toho důkazem.
- i u velkých projektů lze pracovat agilně - v kombinaci s RUPem