Per Erik Strandberg /cv /kurser /blog

Lite Historia

Begreppen Lean (på engelska) i sammanhanget jag använder det i denna text (som filosofin man hade på Toyota) kommer från 1991 och nämndes i boken The Machine That Changed the World: The Story of Lean Production av James Womack, Daniel Jones och Daniel Roos.

Efter bara ett par år landade begreppen inom mjukvaruindustrin när Lean dök upp på två av varandra oberoende håll: på ESPRIT-konferensen i Stuttgart 1992 och 1993 när Robert "Bob" Charette undersökte riskhantering i mjukvaruprojekt.

Toyota Production System och Lean Produktion

Överblick

Lean tillverkning började på Toyota på sent 1940-tal och blev en filosofi med fokus på att eliminera faktorer i en process som inte tillför värde - slöseri. Muda på japanska, waste på engelska och slöseri på svenska. Syftet är mer värde för mindre arbete.

Slöseri - Waste - Muda, Mura & Muri

Enligt modellen och filosofin finns det tre huvudtyper av slöseri: muda, mura och muri, och de kan förklaras som:

Utifrån detta kan man då identifiera 8 (eller tidigare 7) typer av slöseri - det vill säga arbete som inte tillför värde, överbelastning eller ojämnhet:

  1. Överproduktion: Tillverkning av mer produkter än vad som behövs, eller att tillverka dem tidigare än vad som behövs. Detta är det värsta av slöserierna eftersom det orsakar flera andra slöserier.
  2. Transport: Vid varje förflyttning riskerar man att godset skadas, blir försenat eller tappas bort. Dessutom tillför transporten inte värde till godset eller produkten. Man kan ju tänka sig att en leverans har ett värde, men slöseriet avser onödig förflyttning.
  3. Lager: Råmaterial, pågående arbete och färdiga produkter har alla ett värde i sig. Att investera i dessa för att "bara samla på hög" är ett slöseri.
  4. Rörelse: Här tänker man sig inte transport utan snarare rörliga delar i en produktionsprocess: borrar, kugghjul, eller moment personal utför. Kan man minska denna typ av slöseri minskar man slitage på material och kan även slippa till exempel musarm eller tennisarmbåge hos personalen.
  5. Väntan: gods som inte processas eller transporteras väntar. Ett outnyttjat värde. En mycket intressant analogi i mjukvaruvärlden kommer senare i denna text - det visar sig att något konstigt händer med till exempel avvikelserapporter som väntar.
  6. Överarbete: att göra mer än kunden kräver eller betalat för.
  7. Omarbete (defekter): Att reparera, retrofitta eller på något annat sätta göra om en defekt produkt skapar inte mervärde för kunden. Även detta slöseri får en viktig följdsats i texten nedan.
  8. Oanvänd förmåga: Att inte ta till vara på sina anställdas kreativitet kan leda till missade förbättringar.

Principer, Värderingar, Mål

Några värderingar och begrepp som återkommer inom Toyota Production System och Lean Produktion är:

Punkter som karakteriserar lean produktion är typiskt (här direkt från Svenska Wikipedia):

5S Metoden

Ett annat begrepp som kanske inte tillhör Lean Produktions kärna, en som tilltalar mig är 5S metoden. Det är den oläsliga allitterationen seiri, seiton, seiso, seiketsu, & shitsuke som är de 5 S'en. En möjlig översättning till svenska (igen från svenska wikipedia) är sortera (seiri), systematisera (seiton), städa (seiso), standardisera (seiketsu) och se till (shitsuke). En alternativ översättning (igen: wikipedia) tycker jag är: Inventering, Placering, Initialrengöring, Rutiner och Disciplin.

I princip handlar det om ordning och reda på arbetsplatsen och i sitt arbete.

OPDCA - Observe, Plan, Do, Check, Adjust

En utvidgning av en tidigare modell utan O (plan, do, act, check). OPDCA är en processförbättringsprocess (jag älskar det ordet: process-förbättrings-process) eller en metod för hur man förbättrar sina processer. Stegen bildar en cykel (eller hjul, eller cirkel) som går runt och på så sätt förbättrar man sina arbetsmetoder. Stegen äro:

Som kuriosa kan man nämna att OPDCA i princip är en förlängning av den vetenskapliga metoden som Francis Bacon beskrev den år 1620: hypotes, experiment, utvärdering.

Sammanfattning

Lean Produktion går ut på designa arbetsprocessen så att man minskar slöseriet (arbetet som inte tillför värde, överbelastningen och ojämnheten). Långsiktiga och sunda värderingar går ofta hand i hand med lean och kaizen eller ständiga förbättringar är ett centralt begrepp.

Lean Utveckling

Hur förhåller sig då lean produktion till att utveckla mjukvara på ett leant sätt?

Exempel: Slöseri

Vi börjar med att titta på exempel på slöseri (min översättning och tolkning av engelska Wikipedia):

  1. Överproduktion, till exempel att implementera delsystem som inte behövs eller borde behövas.
  2. Transport, till exempel att låta ett större team än vad som behövs resa för att lösa tekniska problem. Med bättre kvalitet kanske resan kunde undvikits?
  3. Lager, till exempel för onödigt många (fysiska) servrar. Kanske flera konkurrerande administrativa system som tidrapportering i excel och på webb; eller källkodshantering i git, avvikelserapporter i bugzilla och kravhantering i team foundation server.
  4. Rörelse, kanske regressioner, eller upprepade "brandkårsutryckningar" för att lösa problem i IT-miljön.
  5. Väntan, till exempel lång svarstid från servrar, långsamma applikationer eller onödiga manuella steg.
  6. Överarbete, till exempel att rapportera tekniska detaljer som cyklomatisk komplexitet till en administrativ chef (eller en ekonom).
  7. Omarbete (eller snarare defekter) kan ge upphov till till exempel säkerhetsproblem och dålig mjukvara.
  8. Oanvänd förmåga kan leda till att personal inte ser problem eller förbättringspotential, eller att anställda vantrivs, eller att personal används till fel saker.

Boken Lean Software Development

Referensverket inom Lean Utveckling är Lean Software Development av Mary Poppendieck och Tom Poppendieck, ISBN: 9780321150783, från Addison-Wesley 2003. Samma författare har även skrivit en rad andra böcker inom Lean. De som finns på Adlibris är:

Principer från boken

Lean Systems Society

David J. Anderson startade Lean Systems Society och jag sammanfattar här en underbar artikel han skrev på MSDN 2011 som uppdaterades 2012 som handlar om Lean Utveckling. Han använder begreppet "knowledge work", kanske kunskapsarbete, och att det är stora skillnader mellan att bygga bilar och kunskapsarbete. Lean Utveckling ska därför inte direktöversättas från Lean produktion.

Värderingar

Principer

Typiska tekniker

Lean vs Agile vs XP vs Scrum vs V-model

Ett sätt att se på det är att se lean, agilt, scrum och xp som delar av samma sak. Lean kan vara företagsledningens syn på det som hos mjukvaruavdelningen blir agilt eller scrum. De enskilda utvecklarna använder kanske metoder från XP. En del hävdar att om man går agilt så får man lean på köpet. Andra hävdar bestämt att till exempel V-modellen kan anpassas för lean. Jag väljer att inte ta ställning i denna text - men tycker ni kan ta en titt på ett utkast jag tidigare gjorde om en Agil Testprocess som jag inte kan sluta tänka på. Den har med lite V-modellen och lite agilt.

Jag känner att jag även behöver nämna Kanban som har sina rötter i lean. Fem viktiga principer inom kanban är att:

  1. Visualisera arbetsflödet.
  2. Minska mängden pågående arbete
  3. Hantera flödet
  4. Gör processpolicys explicita
  5. Förbättra samarbetet

För en lite djupare analys av lean, kanban och scrum kan jag vart tipsa om The Lean of Scrum av David Starr skrivet på MSDN: [1].

Lean Testing

Inom Lean Utveckling verkar det inte finnas någon motsvarighet till den klockrena Boken Agile Testing och de Agila Testkvadranter. Istället verkar principer för testning man finner i agilt dyka upp lite här och där. På samma sätt som inom agil testning finner man en önskan om snabb och ständig feedback. Jag tänker mig även att testdriven utveckling vore bra eftersom det ofta leder till mindre komplex kod.

Referenser


Denna sida tillhör Kategori Test
Se även Agil Testprocess och Beräkna Testinsats
Se även Boken This Is Lean