Såsom en ritning används vid konstruktion och ett recept följs vid tillagning av en måltid finns det principer att följa för effektiv mjukvaruutveckling. Dessa principer kan sammanfattas i vad som brukar kallas en metodik för programvaruutveckling. En metodik för programvaruutveckling är absolut nödvändig eftersom den innehåller förfaranden som leder till att ett programvaruutvecklingsprojekt blir framgångsrikt.
Om man inte följer en ritning vid byggandet blir resultatet katastrofalt, och så är det också när man bygger en programvaruprodukt utan att följa de rätta principerna. Du kommer att missa många viktiga steg och så småningom få en myriad av problem med programvarukvalitet. Som projektledare är det viktigt att veta att det finns många tillvägagångssätt att följa för ett mjukvaruprojekt, inklusive leanutvecklingsmetoden, och att när den väljs på rätt sätt kommer en metodik för mjukvaruutveckling alltid att producera en högkvalitativ mjukvaruprodukt.
Lean Software Development
Leanutvecklingsmetodik är en typ av agilt tillvägagångssätt som grundades på leantillverkningsprinciper. Lean manufacturing omfattar mycket framgångsrika principer som först användes av Toyota Production System som en praxis för att hantera och optimera processen för fordonstillverkning för att öka kundvärdet och minimera slöseri.
Så, om lean-principerna har att göra med motorfordonstillverkning, var kommer då mjukvaruutveckling in i bilden? Vi vet att tillverkning och mjukvaruutveckling är olika – tillverkning innebär skapandet av fysiska produkter medan mjukvaruutvecklingsprodukten är immateriell och dess värde kan bara uppfattas och skapas i utvecklingsteamets medvetande.
Kartläggningen mellan lean tillverkning och lean mjukvaruutveckling uppstod först 2003 i en bok med titeln ”Lean Software Development”: An Agile Toolkit” av Mary och Tom Poppendieck. I boken tolkar Poppendiecks hur principerna för lean manufacturing kan tillämpas på ett produktivt sätt på programvaruutveckling. Både tillverkning och programvaruutveckling följer upprepbara förfaranden och kräver exakta kvalitetsstandarder. De är också beroende av lagarbete för att få saker och ting gjorda. Således kan de sju Lean Manufacturing-principerna tillämpas och användas inom mjukvaruutveckling.
Sju Lean-principer att följa för mjukvaruutveckling
På grund av att de möjliggör ett snabbare sätt att utveckla mjukvaruprodukter är agila utvecklingsmetoder populära för många utvecklingsföretag. Sådana företag tillämpar redan leanutvecklingsprinciper. Här är de 7 leanprinciperna som du kan tillämpa i dina programvaruutvecklingsprojekt:
- Eliminera slöseri
Den första principen att följa vid leanutveckling är att eliminera allt som inte ger ett värde till en slutanvändare. Inom mjukvaruutveckling kan denna princip genomföras genom att först identifiera värdet av den mjukvaruprodukt som ska byggas. När detta är gjort blir det lättare att upptäcka ”slöseri” – allt som inte tillför värde till produkten och så småningom till användarna, inklusive onödig kod, otydliga krav, extra funktioner och processer osv. Andra faser av metoden som inte tillför något värde måste också avlägsnas. Det finns verktyg som hjälper till att identifiera slöseri inom programvaruutveckling, bland annat Value Stream Mapping.
- Skapa kunskap
Mjukvaruutveckling är i sig själv en kunskapsgenererande progression. Principen om att skapa kunskap uppmuntrar därför utvecklingsteam att ha de rätta strukturerna för att möjliggöra ett ordentligt lärande. Det låter enkelt, men principen kräver totalt fokus och engagemang. Den kan genomföras genom att utföra utbildning, kodgranskningar, adekvata kodkommentarer, parprogrammering, projektdokumentation, delningssessioner med mera.
- Bygg kvalitet i
Ett lean utvecklingsteam bör se till att deras fokus ligger på att utveckla kvalitet i produkten. De bör därför inte vara beroende av begreppet att säkerställa en slutprodukt utan fel. Omvänt bör teamen fortsätta att förbättra utvecklingsprocessen och sluta sprida defekter i produkten redan från början för att få en funktionell slutprodukt.
- Snabba leveranser
Agila utvecklingstekniker fokuserar på att leverera programvara så snabbt som möjligt. Lean development som är en agil metod betonar också snabb programvaruleverans. Det innebär att ett projektteam måste leverera en målinriktad komponent till användarna vid rätt tidpunkt. För ditt team, skapa jämna och stabila arbetsflöden som kommer från förståelsen av processvärdet för att underlätta snabbare resultat.
- Stärk ditt team
För att stärka ditt projektteam krävs att du respekterar alla – människor som arbetar tillsammans som ett team bör respektera varandra. När saker och ting går fel, och det gör de oftast, ska du inte skylla på folk. Kontrollera i stället om det finns luckor i processen som kan leda till utmaningar och konflikter. Skapa en gynnsam arbetsmiljö för alla och föregå med gott exempel. Tillåt dessutom innovativ frihet för teammedlemmarna att välja och identifiera rätt tillvägagångssätt och verktyg för alla tilldelade uppgifter.
- Skyndighet att fatta beslut
Jag vet att detta låter kontroversiellt eftersom vi konventionellt sett tenderar att arbeta med att fatta beslut så snabbt som möjligt. Som en lean-princip innebär ett sent beslut inte att det är oansvarigt att fatta beslut. Istället uppmuntrar den ett projektteam att hålla alternativen öppna under en längre period för att samla in mer data och information som kan hjälpa dem att fatta viktiga beslut. Att dröja med att fatta ett beslut ger dig mer tid att lära dig och få mer kunskap, vilket leder till ännu bättre beslut. Som en följd av detta drabbas ditt projekt inte av negativa effekter som skulle kunna uppstå till följd av dåligt beslutsfattande. Tänk efter, skulle du hellre fatta ett förhastat beslut och ångra dig senare, eller ta dig tid att samla information och fatta rätt beslut?
- Optimera helheten
Satsa alltid på optimering av hela utvecklingsprocessen och inte bara delprocesser. Om du tillför värde till endast en eller ett fåtal av processerna kommer slutprodukten att påverkas och dina resultat blir suboptimerade. Du bör inte lansera en sämre produkt för att du inte hade tillräckligt med tid. För att hantera suboptimering uppmuntrar optimize as a whole-principen till att eliminera onda utvecklings- och testcykler och i stället arbeta med mycket bättre arbetskapacitet. Att optimera helheten gör det möjligt att identifiera processens värdeflöden för ett helt team, vilket möjliggör snabbare och värdefull leverans. Så fokusera på hela värdeflödet från början till slut för att uppnå optimering.