Hned na úvod musím zmínit, že netvrdím, že Scrum či Agilní praktiky nelze použít jinde než při vývoji software. Náš tým používá úspěšně Scrum a Agilní praktiky již více než 4 roky k plánování a vykonávání konzultantské činnosti a také jsme pomohli několika prodejním týmům organizovat práci pomocí Scrumu. Navíc praktiku jakou je retrospektiva může každý úspěšně používat i ve svém životě či ke zlepšení partnerského vztahu. Vím také, že Agilní principy lze aplikovat i na úrovni managementu produktů či rozsáhlých programů. Může existovat backlog na úrovni managementu, kde budou obsaženy produkty či organizační omezení. Lze plánovat jednotlivé verze a synchronizovat jejich závislosti a týmy a podobně.
Pohled tohoto článku je však jiný. Agile jako takový vznikl a řeší především vývoj, provoz a údržbu SW. Pokud však potřebujeme řešit omezení a problémy na jiné úrovni (mimo oblast SW), v jiné funkční jednotce (vedení, marketing, vztah se zákazníky, obchod, skladování, prodej, nákup, výroba), či optimalizovat jiné procesy než vývoj software, pak naráží Agilní přístupy na svoje limity a původ. Agilní přístupy mohou být dostatečné v malé či ve střední softwarové firmě a na svoje limity nemusí téměř narazit za celou dobu existence firmy. Pokud však dodáváte software interně jiným oddělením pro podporu jejich práce či máte množství rozličných externích zákazníků a produktů, pak Agile nebude stačit, jakmile omezení, která řešíte, dosáhnou střední úrovně managementu.
Agilní přístupy jsou primárně zaměřeny na produkční týmy vývoje software a jejich (operativní) řízení, plánování a vykonávání inženýrských disciplín (analýza, návrh, testování, programování), ne na úroveň managementu. Např. Scrum definuje 2 role (Scrum master a Product Owner), které nejsou zcela dostatečné. Například neřeší standardní roli liniového manažera v maticové organizaci, který se stará o rozvoj lidí a jejich kompetencí. V produkčních týmech mnohdy chybí znalost byznysu, konkrétní problematiky podnikání. Dále může být problém synchronizace mezi jednotlivými odděleními, funkcemi organizace a managementem s produkčními týmy.
Kdy tedy typicky Agilní přístupy již nestačí?
- pokud jsme narazili na střední vrstvu managementu,
- pokud je omezení či problém v jiném oddělení, než je vývoj software,
- pokud nemůžeme optimalizovat celek, součást týmu nejsou obchodníci
- a další.
V těchto případech nám může pomoci Lean přístup. Lean je česky někdy překládán jako štíhlý, což však nevystihuje jeho podstatu. Lean není jen a pouze o redukci zbytečných kroků, aktivit, zásob. Proto nebudeme toto slovíčko překládat. Agilní přístupy nám pomáhají zdola nahoru (motivace lidí, samo řízení, agilní inženýrské praktiky), kdežto Lean spíše shora dolů (definice hodnoty – vize, mise, služeb, produktů – a snaha o její doručení; změna kultury řízení, nastavení prostředí pro tuto změnu).
Co je to Lean?
Po druhé světové válce poslali Američané do Japonska chytré hlavy, aby pomohli zdevastované zemi. Jedním z nich byl také profesor Deming, který ovlivnil myšlení tamních schopných vůdců. Lean má kořeny (nejen) v Japonských poválečných výrobních firmách. Snad nejznámější instancí je společnost Toyota, s jejich systémem zvaným Toyota Production System (TPS). TPS je způsob myšlení stavějící na kultuře neustálého zlepšování, podpory zaměstnanců, doručování hodnoty. Nejedná se tedy o pouhou sadu zásad a principů, ale opravdu o filozofii, způsob myšlení (stejně jako Agilní přístupy). Díky úspěšnosti TPS a Lean přístupů byly zásady z výroby interpretovány v kontextu vývoje software. Nejznámější propagátorkou Lean Software Development je Mary Poppendieckspolečně se svým manželem Tomem či dále Alan Shalloway.
Pojďme tedy nastínit o čem je Lean přístup. Lean je zaměřen na:
- vytváření hodnoty pro zákazníka,
- respektování ostatních lidí (ať již kolegů, nadřízených, podřízených, zákazníků, byznys pracovníků),
- zkracování produkčního cyklu a doručení hodnoty tím, že odstraňujeme zbytečnosti (zbytečné kroky, meziprodukty, nepoužívanou dokumentaci apod.) a jiná omezení, která jsou ukrytá ve způsobu práce,
- okamžité řešení problémů a jejich příčin i za cenu okamžitého zastavení produkce (vývoje) – vestavěný princip kvality,
- vytváření kultury neustálého zlepšování.
Ale především je Lean o neustálém učení se a ne o tom, že se necháme vláčet událostmi kolem nás. K tomuto potřebujeme jistou dávku tvůrčího napětí, jelikož spokojený zaměstnanec nepřemýšlí nad zlepšeními. Je v kontextu zlepšení jistým způsobem „mrtev“
Pokud se mluví o Lean, mnoho lidí zmiňuje techniky jako analýza toku (Value Stream Analysis), A3 (ukázka šablony), běž a pozoruj (gentchi genbutsu), Kaizen a další. Ale pouhá sada technik není Lean přístup a ani nezaručí zlepšení (tak, jak se o to pokoušely a pochopily americké automobilky poté, co je ty japonské na jejich domácím trhu začaly válcovat kvalitou i cenou zároveň). To, co dělá pochopení a implementaci Lean těžkou je, stejně jako u Agile, její „forma“. Jedná se totiž o způsob myšlení, nejen o sadu principů a technik, kdy techniky samotné nejsou důležité, nejsou stěžejním jádrem přístupu. Techniky pouze napomáhají implementovat principy do praxe. Některé techniky jsme již zmínili v tomto odstavci, jaké jsou tedy ty principy?
- Odstraňte plýtvání (vytváření toho, co zákazník nepoužije či nepotřebuje; málo či žádný čas na učení, tvorba nepoužívané dokumentace).
- Vestavěná kvalita (lepší je chyby nedělat vůbec, než je umět efektivně opravovat).
- Odsuňte rozhodnutí do nejzazšího zodpovědného bodu – kdy máte potřebné informace (proč rozhodovat v zadání nového projektu o použité technologii, když ještě nevíme, jak rychlá, rozšiřitelná a udržitelná má aplikace být?).
- Učení je nezbytné (bez zpětné vazby se nemůžeme učit a zlepšovat, rozhodujte až se znalostí kontextu a možných variant).
- Doručujte rychle (rychlá zpětná vazba pro tým, zákazník může některé funkčnosti okamžitě používat = vyšší ROI, kratší doba dodání na trh, tzv. time-to-market).
- Neúprosně se zlepšujte (nespoléhejte na „best practices“, ověřte nové hypotézy v praxi, neustále vystavujte váš proces konstruktivní kritice a zlepšení, vychovávejte vůdce v týmech).
- Respektujte ostatní (abyste vytvořili vhodné prostředí pro jejich motivaci, to znamená také nastavení organizační struktury, systému, nástrojů a svobody).
- Doceňte systém (zaměřte se na celý tok – od zákazníka k zákazníkovi, nedodávejte jen software, ale produkt řešící potřeby zákazníka).
Základní kroky samozřejmě záleží na kontextu, nastavení a omezeních vaší organizace. Chcete-li však vybudovat Lean organizaci můžete začít s těmito kroky:
- Začněte vytvářet prostředí a kulturu podporující samořízené týmy (rozhodovací pravomoci co nejníže, spolu s odpovědností, ne jen ji) místo přikazování a rozdávání úkolů.
- Mentoring a koučing týmů a manažerů zkušenými vůdci (podpora učení, dodání expertní znalosti, omezení nutnosti znovu vynalézat kolo, sdílení mezi týmy navzájem).
- Limitujte množství paralelně vykonávané práce (přepínání mezi jednotlivými projekty/úkoly stojí čas a snižuje produktivitu).
- Snažte se zkracovat dobu vývoje/zpracování požadavku na změnu od sběru u zákazníka po finální dodání při zachování kvality.
- Zaměřte se na lidi, jejich podporu, vedení, umožněte jim a vytvořte prostředí pro kreativní práci (není to jen o nástrojích a redukci plýtvání, ale o změně prostředí a myšlení).
- Začněte používat praktiky jako: běž a dívej se (i Jack Welch, úspěšný CEO kolosu GE chodil pravidelně mezi lidi, pozoroval a ptal se) a Kaizen (zlepšování celku krůček po krůčku navrhované lidmi v týmech).
- a neustále vystavujte konstruktivní kritice váš aktuální způsob práce (upravte, co nefunguje zcela, přidejte, co chybí, odeberte zbytečnosti) nejen v rámci retrospektivy.
A především už konečně nahraďte sliby a zbožná přání, že byste mohli doručit ve slíbeném čase za transparentnost, akceptování reality se všemi omezeními a neustálé průběžné zlepšování s přispěním všech členů týmu…
Kde tedy může Lean pomoci Agile?
Pokud se dostaneme na úroveň řízení (střední management), často se střetneme s jiným světem ;). Pokud bychom se měli dopustit velkého zjednodušení, můžeme říct, že pokud následujeme Agile, prostě věci děláme a moc předem „nepřemýšlíme“. Pokud chceme něco ověřit, prostě to uděláme, vyzkoušíme (praktika „make your hands dirty“). Po zpětné vazbě to můžeme upravit, přepracovat. Když něco nefunguje, změníme to v přístí iteraci/sprintu (praktika „Inspect and adapt“)… Lean přináší navíc vrstvu myšlení. To znamená znát všechny možnosti, mít všechny informace a pomalu se snažit dosáhnout konsenzu mezi všemi, jichž se oblast dotýká. To dává smysl. Představte si transformaci podniku. Máme myšlenku a prostě ji jen vyzkoušíme, změníme role a organizační strukturu. Po měsíci zjistíme, že to nefunguje, tak uděláme další změnu. Jak byste se jako zaměstnanec asi cítili? Kolik by to stálo, jak rychlá je možnost reagovat a vidět výsledky? Další věc, co Lean doporučuje je specializace, mít experta dělající danou věc dlouhou dobu, aby mohl fundovaně rozhodovat. Určité přepracování implementace po demonstraci (+ nutný refaktoring) je v Agilních přístupech brána jako nutnost vzhledem ke změnám a nutnosti zpětné vazby od zákazníka. V Lean je toto bráno jako plýtvání (přepracování ještě ve fázi analýzy a návrhu však ne). Lean tedy může být brán spíše jako přístup shora dolů (začíná a měl by být podporován na všech úrovních managementu i v týmech), kdežto Agile zdola nahoru (řeší a zaměřuje se především na produkční úroveň). Lean:
- rozšiřuje kontext a hodnotový tok (neřešíme jen tok zákazník – my – zákazník, ale zahrnujeme i zákazníky zákazníků, společnost, trh, …; zaměřujeme se na Lean architekturu jako základ a znalost jasné cesty kupředu místo, pojďme to zkusit a pak to nějak změníme)
- popisuje, řídí a vyjadřuje vše (projekty, požadavky) řečí hodnoty pro zákazníka (což znamená i upřednostňování dlouhodobého ROI před krátkodobou úsporou např. v rámci čtvrtletí)
- se zaměřuje na systémové řešení (hodnota pro všechny, standardizace, chyba v systému, ne v lidech)
Je tedy možné úspěšně kombinovat Agile a Lean, vždyť například Scrum má kořeny v Lean.
Pozn.: Pokud vaše projekty následují riziky řízený přístup (v Elaboration fázi, viz článek o rizicích) a nejsou jen sadou sprintů, pak tento způsob myšlení a zaměření na architekturu částečně obsahují, ale to jsme opět jen na úrovni vývoje software, ne v jiných oblastech jako je management, marketing, výroba apod.
Další zdroje
Další zdroje, kde si můžete přečíst více o Lean, o principech, způsobu myšlení, příkladech:
- Domovská stránka Mary Poppendieck
- Lean SW konsorcium
- Liker: Jak to dělá Toyota (Toyota way)
- Alan Shalloway vysvětluje nejasnosti ohledně Lean
P.S.: jelikož je Lean opravdu způsob myšlení, který aplikujeme v našem kontextu a každý máme kontext jiný a jelikož neexistuje formální jednotná definice (naštěstí? J), je možné, že X lidí znalých Lean by napsalo X jiných pohledů a článků, než tento stručný úvod.
Máte k tomu co říct?