Den første gang, jeg hørte om lean manufacturing, var i forbindelse med Toyota i mit kursus i virksomhedsdrift. Alle, der ligesom jeg læste om lean-princippet, var fuldstændig fascineret af konceptet om at mindske spild og øge produktiviteten gennem et bevidst design.
Med tiden er lean-principperne for produktudviklingsflowet blevet overtaget af en række brancher, også uden for fremstillingsindustrien, hvilket omfatter softwareudvikling.
Lean udviklingsprincipper er en agil tilgang, som blev udviklet på lean manufacturing-principper. Den samme, der bliver brugt af Toyota som en metode til styring og optimering af processen for bilproduktion med henblik på at minimere spild og øge kundeværdien.
Jeg ved, hvad du må tænke. Hvis lean-principperne stammer fra køretøjsfremstilling, hvordan passer softwareudvikling så ind?
Sammenhængen mellem lean agil metodologi og softwareudvikling blev første gang introduceret i 2003 i en bog ved navn “Lean Software Development”: An Agile Toolkit” af Tom og Mary Poppendieck.
I bogen fortolkede Poppendiecks, hvordan de lean principper kunne anvendes i softwareudviklingsprocessen. Både softwareudviklings- og fremstillingsprocesser følger gentagelige strukturer og er afhængige af høje kvalitetsstandarder. De er også i høj grad afhængige af teamwork for at få tingene gjort.
Spørgsmålet er imidlertid, hvordan det kan lade sig gøre. I denne artikel vil vi se på, hvordan vi tilpasser vores softwareudviklingsproces til lean-softwareprincipperne.
Indholdsfortegnelse
- Hvad er styrkerne og svaghederne ved lean agil softwareudvikling?
- De 7 principper for lean softwareudvikling
- Afpasning af de 7 lean-principper i vores softwareudviklingsprojekter:
- Fasevis anvendelse af lean-softwareudviklingsprincipperne
- Overvinde udfordringerne ved at bruge lean-principper
Lean-softwareudvikling sætter nogle centrale principper i spil for at optimere produktiviteten. Softwareudvikling kommer med flere nøglefunktioner, der gør det til den bedste proces til at implementere lean softwareudvikling.
- Processer, der kan gentages
- Team-samarbejde
- Enhedlige standarder
- Hvad er styrkerne og svaghederne ved lean agil softwareudvikling?
- De 7 principper for lean softwareudvikling
- Afpasning af de 7 lean-principper i vores softwareudviklingsprojekter:
- 1. Eliminer spild
- 2. Skab viden
- 3. Byg kvalitet ind
- 4. Hurtig levering
- 5. Empower Your Team
- 6. Forsinkelse i beslutningstagningen
- 7. Optimering af helheden
- Fasevis anvendelse af Lean Software Development Principles
- Overcoming The Challenges of Using Lean Principles
Hvad er styrkerne og svaghederne ved lean agil softwareudvikling?
Styrkerne ved lean produktudviklingsprincipper omfatter:
- En strømlinet tilgang, der gør det muligt at levere funktionaliteter på begrænset tid
- Eliminering af unødvendige aktiviteter, hvilket kan sænke omkostningerne
- Empowerment af udviklingsteamet, hvilket hjælper dem til at træffe beslutninger, der kan øge deres moral.
Svaghederne ved lean softwareudviklingsmetodikken omfatter:
- Den afhænger i høj grad af det involverede team, hvilket gør den mindre skalerbar sammenlignet med andre rammer
- Den er afhængig af stringent dokumentation. Mangler man på denne del, kan det føre til tunge udviklingsfejl.
De 7 principper for lean softwareudvikling
Der er syv nøgleprincipper for lean softwareudviklingstilgangen, der arbejder med det formål at fastgøre leveringen og skabe høj værdi for slutbrugerne:
- Eliminere spild
- Skab viden
- Skab kvalitet i
- Snav levering
- Styrke dit team
- Tilbage i beslutninger
- Optimere det hele
For at opfylde disse mål cum principper, gør vi brug af værktøjer som f.eks:
Lagerstyring – Vi følger den praksis, hvor vi sænker antallet af operationer, der er i gang på én gang, gennem anvendelse af teori eller begrænsninger eller kø-teori.
Kanban – Det er et pull-projektstyringssystem, hvor vi begrænser de opgaver, der bliver udført samtidig. Dette hjælper os med at forhindre overbelastning af udviklingsprocessen.
Value stream mapping – Det er en visualiseringsmetode, hvor vi visualiserer udviklingscyklussen – fra kundeanmodning til implementering. Dette hjælper os med at demonstrere og hjælpe med at optimere den tid, der bruges på at holde og på den faktiske behandling.
Lad os nu se på, hvordan vi tilpasser de syv lean-principper til vores softwareudviklingscyklus i vores rolle som en førende virksomhed inden for lean-softwareudvikling.
Afpasning af de 7 lean-principper i vores softwareudviklingsprojekter:
1. Eliminer spild
Det vigtigste princip for lean produktudvikling, som vi anvender, er eliminering af alt det, der ikke giver slutbrugerne nogen værdi. Vi starter med at identificere værdien af det produkt, vi skal bygge.
Det gør det nemt at identificere spild som unødvendig kode, uklare mål, ekstra funktioner og ekstra processer osv.
Spild er en af de største udfordringer i forbindelse med digital transformation. I vores erfaring kan findes i en række domæner:
- Affald af igangværende arbejde dvs. det delvise arbejde. Dette kan sænkes ved at sætte begrænsninger i work-in-progress, ved hjælp af Kanban-formen.
- Spild af overproduktionsspild. Disse opstår, når feedbackcyklusserne bliver for lange, og der efterspørges en række ekstra funktioner.
- Spild af processer. Disse elimineres af vores softwareudviklingsfirma gennem parprogrammeringstilgange og bedre samarbejder.
- Handsoff-spild. Vi løser problemet ved ikke at lade vores team fungere som siloer. Vi arbejder som et tæt sammensat tværgående team, hvilket hjælper med at øge effektiviteten.
- Softwarefejl. Spild har en tendens til at sive ind, når kvaliteten ikke gøres til en del af softwareudviklingsfirmaets proces med forskellige balancer og kontroller.
2. Skab viden
Softwareudviklingsprocessen er i sig selv en proces, der i høj grad er vidensgenererende. Appinventiv har fra starten været en yderst vidensfokuseret virksomhed. Dette er en af hovedårsagerne til, at vi har været i stand til at inkorporere blockchain- og AI-teknologi i projekterne før nogen anden softwareapplikationsudviklingsvirksomhed i branchen.
Vi tilpasser princippet til vores udviklingsproces ved at implementere nogle nøglemetoder som: koderevisioner, udførelse af træning, kodekommentarer, projektdokumentation, parprogrammering og delingssessioner osv.
3. Byg kvalitet ind
Vores softwareudviklingsteam sikrer, at fokus altid er på at levere produkter af høj kvalitet. Vi bliver altid ved med at forbedre vores udviklingsproces for at eliminere projektet fra det første trin til slutproduktet.
Der er forskellige lean agile softwareudviklingstilgange, som vi anvender for at forbedre produktkvaliteten:
- Pair programming – for at mindske spild af fejlkommunikation og maksimalt output.
- Testkriterier – at tilbyde ingeniørerne et system, der sikrer, at det opfylder kravet.
- Inkrementel udvikling – at forbedre kvaliteten gennem rettidig, konsekvent feedback.
- Mindre ventetilstande – for at beskytte kvaliteten og strømline effektiviteten, samtidig med at vi sænker vidensgabet.
- Automatisering – ved hjælp af aktiver som AI og maskinlæring for at mindske og i sidste ende fjerne fejlene i udviklingsprocesserne.
4. Hurtig levering
Det agile udviklingsgrundlag fokuserer i høj grad på hurtig levering af softwareprocesser. Lean agile principper, der er en del af tilgangen, sætter også fokus på hurtig levering. Det betyder ganske enkelt, at projektteamet skal levere modulerne i henhold til milepælsplanerne.
Det bliver lettere at opnå hurtig app-udviklingstid, når der er en stabil arbejdsgang, der hjælper teamene med at forstå værdien af processen og dermed letter hurtige resultater.
5. Empower Your Team
Dette ene lean-princip er det, vi følger uanset team og projekt. Vores team, der fokuserer på softwareudvikling til startups, forstår, at når man arbejder sammen, skal man respektere hinanden. Og når tingene går galt eller ikke går efter planen, skal man holde fokus på at tjekke, om der er huller i arbejdsprocessen, som kan have ført til konflikter og udfordringer.
Siden vores start har vi haft fokus på at skabe et gunstigt arbejdsmiljø, hvor vi går foran med et godt eksempel. For at forbedre moralen giver vi også kreativ frihed til vores teams og giver dem mulighed for at finde den bedste tilgang til enhver opgave.
6. Forsinkelse i beslutningstagningen
Vi ved, hvad du tænker – forsinkelse i beslutningstagningen må være en dårlig idé.
Men når vi følger de lean agile principper, mener vi, at det at beslutte sent ikke er lig med at blive uansvarlig. Faktisk tilskynder det teamet til at holde deres muligheder åbne i en lang periode, så de kan indsamle data, som kan hjælpe med at træffe vigtige beslutninger.
Resultatet af dette er, at vores projekt aldrig lider under negative konsekvenser, der opstår på grund af dårlig beslutningstagning.
7. Optimering af helheden
Vi går efter optimering af hele udviklingsprocessen, som ikke kun er begrænset til delprocesserne. Vi arbejder ud fra en forståelse af, at hvis vi tilføjer værdi til et specifikt sæt processer, vil slutproduktet ende med at blive påvirket, og slutresultaterne vil blive suboptimeret.
For at håndtere suboptimering opfordrer vi til at operere med gode arbejdskapaciteter. Vi optimerer hele processen, hvilket gør det muligt at identificere værdistrømme for hele holdet, som igen lover værdifuld og rettidig levering.
Fasevis anvendelse af Lean Software Development Principles
Overcoming The Challenges of Using Lean Principles
Selv om artiklen, indtil dette punkt, har været tilbøjelig til at være rettet mod, hvordan Lean-metodologi gør det fordelagtigt for en glat softwareudviklingsproces, er der nogle udfordringer, der er fremherskende, som skal løses.
- Teammedlemmerne skal være selvledende og være i stand til at arbejde som en sammenhængende enhed.
- Der kan være tilfælde, hvor kravene kan blive ved med at stige uden en færdiggørelse i sigte. Disse skal håndteres med nænsomhed, når man taler med kunderne.
- Lean-metoden er stærkt fokuseret på løbende forbedringer. Tidslinjerne for implementering er også generelt lange. Dette kan til gengæld forlænge tidslinjen, når man er i stand til at høste fordelene.