Lean

„Najnebezpečnejšou zbytočnosťou je zbytočnosť, ktorú nerozpoznáme.“

Shiego Shingo, Toyota

Lean , teda štíhla výroba, vznikla vo firme Toyota po druhej svetovej vojne ako Toyota Production System (TPS). Radikálne iné princípy na ktorých je postavená, viedli k rýchlemu úspechu spoločnosti a de facto sa stali štandardom vo výrobe automobilov, no nielen ich.

Lean mení rovnicu Náklady + Zisk = Cena na Cena – Náklady = Zisk.

Tieto princípy a praktiky boli vďaka Tomovi a Mary Poppendick neskôr transponované do softvérového priemyslu. Agile je postavené na týchto princípoch a priamo ich aplikuje v rôznych rámcoch aj praktikách. Aj preto je dôležité poznať čo Lean je a ako sa aplikuje.

Východiská Lean

Na akých predpokladoch je teda Lean postavené?

  • Zdrojom väčšiny chýb je spôsob akým ľudia pracujú, nie individuality samotné.
  • Ľudia, ktorí robia danú prácu, sami vedia najlepšie ako ju zlepšíť.
  • Pozorovanie ako sú veci robené je užitočnejšie ako ich najprv vymýšľať.
  • Meranie úspechu má byť dané časom od nápadu po jej dodanie klientom.
  • Manažment musí spolupracovať s tímom na zlepšovaní jeho vlastnej efektivity.
  • Tímy sú najefektívnejšie keď množstvo práce je limitované ich kapacitou.
  • Tímová efektivita sa zlepšuje minimalizovaním rozpracovanej práce v každom momente.
  • Musíme optimalizovať celok, nielen zlepšovať individuálne kroky procesu.
  • Musíme nasledovať správne princípy softvérového vývoja pre redukovanie zbytočností.

Zbytočnosť v softvérovom priemysle

Odstraňovanie zbytočností je v Lean nosnou praktikou umožňujúcou dosiahnuť rýchlosť, kvalitu a zníženie ceny dodávky. Vo výrobe Lean identifikuje sedem základných druhov zbytočností. V nasledujúcej tabuľke sú uvedené ich obdoby v softvérovom odvetví.

Zbytočnosť vo výrobe Zbytočnosť v testovaní Zbytočnosť vo vývoji softvéru
Veľké zásoby Veľké testovacie plány Čiastočne dokončená práca
Nadprodukcia Cieľ 100% pokrytie testami Vlastnosti navyše
Príliš dokonalé riešenie Strata kontextu Znovaučenie sa
Zbytočná manipulácia Cyklus testov riadený SDLC Preradzovanie úloh
Neefektívne pohyby a manipulácia Paralelné testovanie projektov Prepínanie medzi úlohami
Čakanie Termíny vývoja Oneskorenia
Opravy Defekty Defekty

Typy zbytočností v Lean

Zbytočné vlastnosti

Najčastejším typom zbytočnosti v softvérovom priemysle je implementácia zbytočných vlastností. Firmy až príliš často stavajú produkty tak, aby vyhovovali všetkým segmentom zákazníkov, súťažili s každou konkurenčnou firmou a prinášali čo najviac nápadov. Vysoký dopyt po rýchlych dodávkach je však v rozpore s doteraz používanými spôsobmi, pretože produkt je komplikovaný tak pre používateľa ako aj pre vývojový tím, čo výrazne znižuje adaptabilitu produktu na časté zmeny.

Pouzivanie vlastnosti v produktoch

Používanie vlastností v produktoch, Scott Ambler, The Standish Group Report

Scott Ambler robil pred niekoľkými rokmi výzkum ohľadom používnia dostupných vlastností produktov. Vo výsledku sa ukázala obrovská príležitosť pre zníženie nákladov vývoja produktu už len tým, že sa dá zamerať na 7% + 13% vlastností, ktoré sa používajú vždy a často. Samozrejme to neznamená že to stačí, no určite to pomáha s prioritami vlastností.

Aj preto sa v agilne vytváranom produkte uplatňujú prístupy ako Lean Startup s budovaním Minimum Viable Products, možnosťou postupnej dodávky častými a pravidelnými dodávkami nových verzií produktu.

Lean Princípy

Všetko čo robíme je nazeranie na čas. Od momentu keď si zákazník objedná produkt až po moment keď nám príde platba. A potom redukujeme odstraňovaním zbytočností bez pridanej hodnoty.
Taiichi Ono

Vývoj s použitím Lean sa dá zosumarizovať nasledujúcimi siedmymi princípmi:

Eliminuj zbytočnosti
  • Odstáňte zbytočné kroky v procese.
  • Nahraďte zbytočné dokumenty, ktoré nepridávajú hodnotu klientovi napr. komunikáciou.
  • Zjednodušte vykazovanie času.
  • Odstráňte duplicitný kód.
  • Odstráňte z produktu nepoužívané vlastnosti.
Posilňuj vzdelávanie
  • Poučte sa z chýb. Svojich aj vlastných.
  • Identifikujte root cause problémov.
  • Pravidelne robte  retrospektívy.
Rozhoduj tak neskoro ako sa dá
  • Vyhnite sa zahadzovaniu dokonalých plánov, ktoré sa aj tak neustále menia.
  • Požiadavky detailizujte tak neskoro ako sa dá.
  • Požiadavky pridávajte do verzií a iterácií tesne pred ich spustením.
Dodávaj tak skoro ako sa dá
  • Keď už ste sa rozhodli, že vlastnosť je potrebná, dodajte ju tak skoro ako sa dá.
  • Optimalizujte vývojový proces. Zrýchlite ho.
  • Automatizujte vývoj a testovanie.
Splnomocni tím
  • Tím musí mať všetky potrebné oprávnenia pre vývoj.
  • Tím musí mať autoritu sa postarať o vývoj samostatne.
Zabuduj kvalitu
  • Zákazníkov zaujíma celý systém a jeho integrita. Ako je prezentovaný, predávaný, vyvíjaný a nasadený.
  • Systémy a komponenty produktu by mali byť vytvárané s dosiahnutím flexibility a jednoduchej údržby.
  • Systém má byť jendoducho refaktorovateľný.
  • Odstraňujte duplicitné a nepotrebné časti kódu.
  • Integritu má podporiť aj testovanie ako súčasť výroby.
Vidieť celok
  • Produkt je tvorený systémamy a komponentami a ich interakciami.
  • Štandardizujte vývojové procesy vrátane procesov na strane biznisu.
  • Rozdeľte veľké celky na menšie časti a až tie vyvíjajte.
  • Zapojte do procesu optimalizácie aj subkontraktorov.
  • „Thinkg big, act small, fail fast, learn rapidly“

Lean Praktiky

Základné praktiky Lean

  1. Identifikácia zbytočností
  2. Mapovanie toku hodnoty
  3. Teória obmedzení
  4. Systém ťahania
  5. Motivácia
  6. Meranie

Príkladom je Mapovanie toku hodnoty

value stream mapping priklad

Ďalšie Lean techniky