Der er principper, der skal følges for effektiv softwareudvikling, ligesom en tegning bruges i byggeriet, og en opskrift følges, når man tilbereder et måltid, ligesom der er principper, der skal følges for effektiv softwareudvikling. Disse principper kan koges ned til det, der normalt betegnes som en softwareudviklingsmetodologi. En softwareudviklingsmetodologi er absolut nødvendig, da den indeholder procedurer, der fører til et vellykket softwareudviklingsprojekt.
Og hvis man ikke følger en plan i byggeriet, bliver resultatet en katastrofe, og det samme gælder for opbygning af et softwareprodukt uden at følge de rigtige principper. Du vil gå glip af en masse afgørende trin og i sidste ende få et utal af udfordringer med softwarekvaliteten. Som projektleder er det vigtigt at vide, at der er mange tilgange at følge til et softwareprojekt, herunder lean udviklingstilgang, og at en softwareudviklingsmetode, når den vælges korrekt, altid vil producere et softwareprodukt af høj kvalitet.
Lean Software Development
Lean udviklingsmetodologi er en type agil tilgang, der blev grundlagt på lean manufacturing-principper. Lean manufacturing omfatter meget succesfulde principper, der først blev brugt af Toyota Production System som en praksis til at styre og optimere processen for bilproduktion for at øge kundeværdien og minimere spild.
Så, hvis lean-principper har noget med bilproduktion at gøre, hvor kommer softwareudvikling så ind i billedet? Vi ved, at fremstilling og softwareudvikling er forskellige – fremstilling indebærer skabelse af fysiske produkter, mens softwareudviklingsproduktet er immaterielt, og dets værdi kan kun opfattes og skabes i udviklingsteamets hoveder.
Kortlægningen mellem lean fremstilling og lean softwareudvikling opstod først i 2003 i en bog med titlen “Lean Software Development: An Agile Toolkit” af Mary og Tom Poppendieck. I bogen fortolker Poppendiecks, hvordan lean manufacturing-principper kan anvendes produktivt på softwareudvikling. Både fremstilling og softwareudvikling følger gentagelige procedurer og kræver præcise kvalitetsstandarder. De er også afhængige af teamwork for at opnå resultater. De syv lean manufacturing-principper kan således anvendes i softwareudvikling.
Syv lean-principper til softwareudvikling
Da de giver mulighed for en hurtigere måde at udvikle softwareprodukter på, er agile udviklingsmetoder populære for mange udviklingsvirksomheder. Sådanne virksomheder er allerede i gang med at implementere lean-udviklingsprincipper. Her er de 7 lean-principper, som du kan anvende i dine softwareudviklingsprojekter:
- Eliminer spild
Det første princip, der skal følges i lean-udvikling, er at eliminere alt, der ikke giver værdi for en slutbruger. I softwareudvikling kan dette princip gennemføres ved først at identificere værdien af det softwareprodukt, der skal bygges. Når det er gjort, bliver det lettere at opdage “spild” – alt det, der ikke tilfører produktet og i sidste ende brugerne værdi, herunder unødvendig kode, uklare krav, ekstra funktioner og processer osv. Andre faser af metodologien, som ikke giver nogen værdi, skal også fjernes. Der findes værktøjer, der kan hjælpe med at identificere spild i softwareudvikling, herunder Value Stream Mapping.
- Skab viden
Softwareudvikling er i sig selv en vidensskabende udvikling. Princippet om at skabe viden tilskynder således udviklingsteams til at have de rette strukturer for at muliggøre korrekt læring. Det lyder enkelt, men princippet kræver total fokus og engagement. Det kan gennemføres ved at udføre uddannelse, kodegennemgange, passende kodekommentarer, parprogrammering, projektdokumentation, delingssessioner og meget mere.
- Byg kvalitet ind
Et lean udviklingsteam bør sikre, at deres fokus er på at udvikle kvalitet i produktet. De bør derfor ikke at afhænge af begrebet om at sikre et fejlfrit slutprodukt. Omvendt bør holdene blive ved med at forbedre udviklingsprocessen og ophøre med at sprede fejl i produktet fra starten for at opnå et funktionelt slutprodukt.
- Snav levering
Agile udviklingsteknikker fokuserer på at levere software så hurtigt som muligt. Lean-udvikling, der er en agil tilgang, lægger også vægt på hurtig softwarelevering. Det betyder, at et projektteam skal levere en målrettet komponent til brugerne på det rigtige tidspunkt. For dit team skal du skabe jævne og stabile arbejdsgange, der kommer fra forståelse af procesværdien for at fremme hurtigere resultater.
- Styrk dit team
Styrk dit projektteam kræver, at du respekterer alle – folk, der arbejder sammen som et team, skal respektere hinanden. Når tingene går galt, og det gør de oftest, skal du ikke give folk skylden. I stedet skal du undersøge, om der er huller i processen, som kan føre til udfordringer og konflikter. Skab et gunstigt arbejdsmiljø for alle, og gå foran med et godt eksempel. Giv desuden teammedlemmerne innovativ frihed til at vælge og identificere de rigtige tilgange og værktøjer til de opgaver, der er tildelt dem.
- Delay in Making Decisions
Jeg ved godt, at dette lyder kontroversielt, da vi konventionelt set har en tendens til at arbejde med at træffe beslutninger så hurtigt som muligt. Som et lean-princip betyder det at beslutte sent ikke, at det er uansvarligt at træffe beslutninger. I stedet tilskynder det et projektteam til at holde mulighederne åbne i en længere periode for at indsamle flere data og oplysninger, der kan hjælpe dem med at træffe afgørende beslutninger. Når man venter med at træffe en beslutning, får man mere tid til at lære og få mere viden, hvilket resulterer i endnu bedre beslutninger. Som følge heraf lider dit projekt ikke under de negative konsekvenser, der kan opstå som følge af dårlig beslutningstagning. Tænk over det, ville du hellere træffe en forhastet beslutning og fortryde senere, eller ville du hellere tage dig tid til at indsamle oplysninger og træffe den rigtige beslutning?
- Optimer det hele
Gå altid efter optimering af hele udviklingsprocessen og ikke kun delprocesser. Hvis du kun tilføjer værdi til en eller få af processerne, vil slutproduktet blive påvirket, og dine resultater vil blive suboptimeret. Du bør ikke lancere et ringere produkt, fordi du ikke havde tid nok. For at håndtere suboptimering tilskynder optimize som et helhedsprincip til at eliminere onde udviklings- og testcyklusser og i stedet operere med langt bedre arbejdskapaciteter. Optimering af helheden gør det muligt at identificere procesværdistrømme for et komplet team, hvilket muliggør hurtigere og værdifuld levering. Så fokuser på hele værdistrømmen fra start til slut for at opnå optimering.