Ve čtvrtek a v pátek se v Praze konal první ročník konference o agilním přístupu k vývoji - Agile Prague Conference, které jsem se zúčastnil.
Pokud bych měl krátce zhodnotit akci jako takovou, tak moc nevím, co bych ji vytknul - vše probíhalo podle plánu, catering fungoval jak měl, na žádné nedostatky technického rázu jsem nenarazil. Kvalita přednášek a přednášejících byla nadprůměrná - z mého osobního pohledu se mi více líbil pátek a až na jednu hodně slabou přednášku ve čtvrtek jsem byl celkově spokojený. Nejvíce mě zaujaly čtyři "case-study" přednášky českých firem, které se podělili se zkušenostmi se zavaděním agilních metodik u nich ve firmě. Také asi pro mnoho lidí bylo překvapením, že o jednotlivých metodikách se skoro vůbec nemluvilo, vše bylo spíše o důvodech pro agilní vývoj, o organizaci týmů, o zkušenostech ze zavádění agilních přístupů.
Dále nechci procházet jednotlivé přednášky a hodnotit je, chci zmínit zajímavé postřehy a myšlenky, které jsem si odnesl:
- agilní přístup k vývoji má velice úzký vztah ke správné organizaci/struktuře společnosti - pokud chce být firma "agilní", tak musí být agilní celá a ne jen vývojové oddělení a i organizace jako taková tomu musí být přizpůsobena - místo klasické hierarchie šéf - product manager - project manager - tým vytvářet Self Organizing Teams, tj. reorganizovat odpovědnosti na celý tým, podpořit kreativitu a přenést zodpovědnost na všechny členy týmu.
- všechny case-study přednášky se týkaly firem, které mají produkty, takže zákazníkem vývoje jsou interní product manažeři. Hodně by mě zajímal pohled na agilní firmu, které funguje zakázkově pro externí zákazníky (a ještě navíc pro státní sektor)
- došel jsem k názoru, že pro úspěšné zavedení agilních metodik je nezbytné využití externího konzultanta, který díky tomu, že je externí, má mnohem lepší přesvědčovací pozici než interní vedení. Nejčastějším přístupem lidí při zavádění agilních přístupů je, že říkají, že to nebude fungovat, že my máme něco speciálního, co jinde nemají a proto to zde nemůže fungovat. Toto dost často externí člověk může vyvrátit.
- dále mi přišlo velice důležité začínat pilotním týmem/projektem, protože ve všech firmách, které své zkušenosti prezentovali, byla skladba lidí před zaváděním přibližně tato - třetina se moc těší, třetině to je jedno a třetina lidí si myslí, že to nemůže fungovat. Pilotní projekt dokáže hodně lidí z poslední skupiny přesvědčit, že to fungovat může.
- stále více se mi líbí Kanban, jako metodika pro vývoj softwaru - jednoduché, názorné, zábavné a "hravé".
- pro mě osobně nový zajímavý pojem Lean software development
- bez osobního potkávání a intenzivní spolupráce to nejde. Pokud chci co nejvíce omezit psaní dokumentace a pokud chci co nejvíce zodpovědnosti přenést na celý tým, pak musím tento tým dát dohromady, na jedno místo. I když preferuji práci na dálku (zejména kvůli mému osobnímu pohodlí), tak sám vím, že je něco úplně jiného mít tým v jedné kanceláři, kde lítají myšlenky vzduchem, kde všichni táhnou za jeden provaz.
- zpětná vazba od zákazníka musí být co nejkratší - pokud chci něco řídit (viz Teorie řízení z kybernetiky), tak kvalita řízení je přímo úměrná kvalitě zpětné vazby. Na jedné přednášce byla prezentována přímá úměra mezi délkou sprchy a nastavením správné teploty vody. Jak trefné :)
- Dnes (snad již) nikdo nevěří tomu, že vodopádový model může efektivně fungovat. Mnoho firem postoupilo o krok dále a praktikují iterativní způsob vývoje a včetně zavedené postupné integrace. To je ale pořád jen víceméně technický posun, ale pokud se nezmění organizace práce, struktura firmy a předání odpovědnosti týmům, pak není možné se bavit o agilním způsobu vývoje.
- Líbila se mi přednáška, kde přednášející trefně říkal, že dlouhá léta se softwarové inženýrství snažilo okoukávat přístup k vývoji a řešení problémů od průmyslu, který tu už přes sto let byl a dobře fungoval. Až nyní v poslední době se ukázalo, že vývoj softwaru potřebuje zcela něco jiného.
- Vždy bude více požadavků než jaké jsou možnosti realizace - nutná prioritizace požadavků, čím kratší a rychlejší zpětná vazba, tím lepší.
- Častěji bych se měl ptát, zda dělám správnou věc než zda dělám danou věc správně.
- Posunu resp. zlepšení není možné dosáhnout beze změn.
- "When in doubt, leave it out" - pokud si nejsme jisti při výběru a návrhu nějaké nové funkce, tak to raději nechme ať zákazník sám řekne, jak a co chce.
- Kvalitní zpětná vazba od zákazníka není možná bez kvalitní komunikace s ním.
- Čím jednoduší je architektura celého systému, tím rychlejší je přidávání nových vlastností do systému. I proto refaktoring je tolik důležitý.
- Realita se mění, to je realita. Pokud chci vytvářet reálnou aplikaci, pak musím být na každodenní změny připravený.
- Kód píšeme kvůli tomu, že ho ještě nikdo jiný před námi nenapsal. Pokud již někdo napsal, pak není důvod to psát znovu.
6 komentářů:
Principles behind the Agile Manifesto:
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
7. Working software is the primary measure of progress. 8. Agile processes promote sustainable development. The sponsors, developers,
and users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity--the art of maximizing the amount of work not done--is essential.
11. The best architectures, requirements, and designs emerge from self-
organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
Chtel jsem se take zucastnit, nakonec me ale predbehly pracovni povinnosti. Nejhutnejsi a zakladni charakteristika agile je velmi dobre popsana v jednom malem odstavci http://en.wikipedia.org/wiki/Agile_software_development#Characteristics
Pro zavadeni agilniho pristupu ve firme je konzultant dobry, ale vubec ne nutny. Staci neprehlizet problemy, ktere dany (stary) pristup ma, zacit je resit a snazit se prakticky ukazat vyhody noveho, treba agilniho pristupu, na starych problemech. Hlavne se nenechat odradit, vetsina lidi nerada meni zajete veci. Pak aplikovat svoje napady v ramci pilovniho tymu, ktery udela PoC a v pripade, ze je clovek dost energicky, snazi se a ma uspech, dokaze pres manazery protlacit svuj zpusob i do jinych tymu. Cesta protlaceni pres manazery a potom a aplikace rovnou na vsechny projekty neni dobra, kazdy chce alespon minimalni podlozeni toho, ze i u vas to bude fungovat.
Jak aplikovat nejaky inovatni pristup je hezky popsane v http://www.amazon.com/Art-Unit-Testing-Examples-Net/dp/1933988274 (sice je to .NET) kde je primo kapitola, kde se pragmaticky mluvi o zavedeni testu ve firme, jak toho dosahnout, ikdyz vsichni krici, ze je to nesmysl. Tohle lze aplikovat na jakoukoliv inovaci ve firme, at uz testy, agile nebo treba IoC
Jeste co se kanbanu tyce: urcite je to popularni vec, ktera cely proces vyvoje velmi zjednodusuje. Existuje celkem pekna knizka zdarma http://www.infoq.com/minibooks/kanban-scrum-minibook ktera podava kanban velmi srozumitelnou formou a celkem vtipne. Doporucuji precist, potom si ujasnit zakladni principy, vizualizace tasku a work-in-progress limit, a potom hura do praxe - tim se clovek nejvic nauci, pochopi ty nejvetsi vyhody a muze si znova precist tu kratkou knizku, aby si to ujasnil. Protoze ma kanaban jen opravdu pramalo principu a jsou jednoduche, lze to zacit pouzivat velmi rychle.
Co se tyce podpurneho softwaru, pokud to clovek nechce delat rucne na tabuli, asi nejlepsi je http://kanbantool.com/, prochazel jsem tusim ze 13 ruznych veci, kdyz jsme to zacinali pouzivat a tahle je nejlepsi.
Uz si ani nepamatuju kdy jsem pracoval v teamu ktery by o sobe nerikal ze je agilni.
Podle me je jsou agilni metodiky jen dalsi managerska abstrakce skutecneho problemu.
Neco podobneho jako ma ekonomie v Homo economicus - tam je to clovek ktery ma dokonaly prehled o trhu a dela dokonale racionalni rozhodnuti. Nekdo rika ze takovy clovek je neco mezi kalkulackou a psychopatem.
Managerum se libi ze diky spolecnemu vlastnicvi kodu nejsou teoreticky zavisli na konkretnich lidech, ze teoreticky nepali penize na psani dokumentace protoze teoreticky se veskera vedomost magicky rozsiri v teamu. nebo ze nemuseji planovat protoze ciste teoreticky zmeny jsou jednoduche.
Tak to ale nefunguje.
Jaky na to mate nazor ?
Moc s Vámi nesouhlasím.
Jednak si myslím, že agilní přístup není z hlav manažérů, že je právě od těch programátorů, těch lidí, kteří dělají ten vývoj.
Za druhé to jsou převážně manažeři (aspoň z mých zkušeností), kdo má s agilním přístupem největší problém, protože nejsou schopni stav projektu přesně sledovat, "klasický" projekt manager je nyní trochu mimo.
A za třetí mě napadá, že agilní přístup prostě funguje. Většinou není problém s agilním přístupem jako takovým, ale s tím, jak přejít ve firmě z "klasického" vývoje na agilní přístup. Člověk mění své zvyky, učí se věci dělat jinak a to prostě může "bolet".
Taky souhlasím s tím, že agilní přístup nepochází od manažerů, ale spíš vývojářů, stačí se podívat na lidi za agilním manifestem.
ad Kanban, spíš než výše odkazovanou knihu bych doporučil přečíst Kanban přímo od jeho zakladatele Davida J. Andresona, není sice tak krátká, ale zato poskytuje daleko lepší náhled jak na to.
Okomentovat