Agil utveckling: Hjälper projektgrupper att hantera vanliga fallgropar

Väldigt många organisationer och företag inom tech-branschen säger sig numera använda sig av några av de agila metoderna för utveckling av mjukvara, eller i alla fall någon slags version av metoderna. Agil utveckling har nämligen blivit allt mer och mer populärt under årens lopp, och ersatt de mer traditionella sätten för utveckling. Ordet agil kommer från engelskans agile, vilket betyder lättrörlig, snabb och smidig.

 

Agil utveckling är ett samlingsbegrepp för en grupp olika metoder som alla syftar till att organisera en utvecklingsprocess på bästa sätt, och så smidigt som möjligt utefter marknadens ständigt föränderliga och komplexa förhållanden. De agila metoderna inom utveckling av system och mjukvara hjälper företagen att arbeta med förändring istället för mot förändring. Den här texten reder ut begreppet agil utveckling lite mer på djupet, genom att bland annat titta närmre på de principer som bygger upp en agil metod, samt vilka fördelarna och utmaningarna med agila metoder är i praktiken.

 

Vad är Agil utveckling?

En agil metodik inom utveckling innebär ett slags tillvägagångssätt som uppmuntrar till kontinuerliga iterationer, det vill säga upprepningar, av utvecklandet och testandet av en mjukvara igenom hela livscykeln av ett projekt. I en agil modell så sker både utveckling och testning av en produkt simultant och samtidigt, vilket skiljer sig från de mer traditionella och linjära metoderna inom utveckling som brukar följa vattenfalls-modellen.

Metoderna som räknas som agil utveckling är några av de enklaste och mest effektiva processerna för att förvandla en vision eller idé om ett affärsbehov till en lösning i form av en mjukvara, system eller programvara. Ordet agil står för egenskaper så som kontinuerlig planering, lärande, förbättring, teamwork, evolutionär utveckling samt tidiga leveranser och resultat. De agila metoderna lägger ett stort fokus på att vara flexibel så att man snabbt, enkelt och så billigt som möjligt kan anpassa sig efter oundvikliga förändringar eller nya situationer. När de agila metoderna först formulerades för cirka 20 år sedan så grundade man modellen i dessa fyra stycken kärnvärderingar:

  1. Interaktioner på individ- och teamnivå är viktigare än processer och verktyg.
  2. Att mjukvaran fungerar som den ska är viktigare än omfattande dokumentation.
  3. Samarbete med kunderna är viktigare än kontraktsförhandling.
  4. Att anpassa sig till förändring är viktigare än att strikt följa en plan.

 

Skillnad mellan de agila metoderna och vattenfallsmetoder

De agila metoderna skiljer sig som sagt från de mer linjära metoderna inom utveckling som brukar kallas för vattenfallmetoder och det var i reaktion mot vattenfallsmodellen som idén om agila metoder först föddes. Benämningen vattenfall kommer från den klassiska flödes-lika struktur som formar den här typen av processer, nämligen där väldigt detaljerade faser av en process följer efter varandra i en förbestämd ordning med siktet inställt på ett enda slutmål. Den här typen av metoder uppstod först i tillverkningsindustrin.

En av de främsta nackdelarna med metoderna som följer vattenfallsmodellen är att det ofta kan bli väldigt dyrt när man behöver göra ändringar i sin ursprunglig plan, eftersom att man inte lägger särkilt stort fokus på att vara flexibel och anpassningsbar. Det är något av det som skiljer sig som mest från den agila modellen för utveckling, eftersom att agila metoder i princip alltid planerar utifrån att förutsättningar och situationer onekligen kommer att förändras under en process eller ett projekt. Till exempel så ser de agila metoderna till att hela tiden göra de anpassningar som krävs på sin produkt för att se till så att slutprodukten fortfarande möter kundernas krav även om det har gått lång tid från det att de gjorde sin beställning till dess att produkten når marknaden. Man utgår heller inte ifrån att man vid ett projekts start besitter all den kunskap som behövs, utan istället så utgår man ifrån att teamets kunskap och kompetens kommer att utvecklas under projektets gång. Den kunskap som man utvecklar appliceras sedan i projektet allt eftersom.

 

De 12 principerna inom agil utveckling

När de agila metoderna inom utveckling av mjukvara och system togs fram så formulerade man också tolv stycken grundprinciper som var tänkta att vägleda arbetet när man jobbar med agil utveckling. De tolv principerna fungerar som konkreta sätt på vilka man kan applicera det agila tänkandet i sitt dagliga arbete. Eftersom att tech-branschen är en av de branscher som har utvecklats som mest och snabbast sedan de agila metoderna utvecklades så händer det ofta att företag inte anser att samtliga av de tolv principerna är lika relevanta för deras verksamhet idag, men det skiljer sig från företag till företag.

1. Tidiga och kontinuerliga leveranser av fungerande mjukvara

Enligt den första principen så bör den högsta prioriteringen alltid vara att göra kunden nöjd, genom tidig och kontinuerlig leverans av produkten. Som företag så kan man säga att man använder någon annans tid och pengar för att utveckla en produkt, så om man väntar för länge med att visa upp resultat för den betalande kunden så kan det leda till missnöje.

Det här stämde år 2001 när de agila metoderna togs fram, men stämmer ännu mer idag. Det är nämligen inte bara otroligt användbart att kunna ta emot feedback under arbetets gång, utan en tidig leverans och uppdatering av arbetet är många gånger något som kunderna till och med förväntar sig. Varje gång man levererar någonting till kunden så borde mervärdet på produkten ha ökat på något sätt, om det så gäller exempelvis funktionalitet eller användarvänlighet.

2. Välkomna förändring

Enligt den andra principen så bör man alltid välkomna förändrade krav och förutsättningar, även i de senare stadierna av utvecklingen. De agila processerna använder sig nämligen av förändring för att skapa mer konkurrenskraftiga fördelar för sina kunder. I en värld som ständigt förändras så går det knappt att ta fram några prognoser för vad kunderna kommer vilja ha som är 100 % tillförlitliga. Om man välkomnar förändring som en del av utvecklingen så är risken betydligt mindre att man skapar en produkt som inte längre är relevant när den når marknaden. En produkt som har utvecklats med förändring med i bilden kommer vara konkurrenskraftigare på marknaden eftersom att den tillfredsställer de allra senaste kundbehoven.

3. Frekvent leverans

Den tredje principen säger att man bör leverera fungerande mjukvara till kunden med jämna och korta mellanrum, helst inte med fler än några veckors mellanrum. Den här principen kan verka upprepande från den första principen, vilken den är på sätt och vis. Den första principen betonar dock att man bör börja leverera i ett så tidigt skede som möjligt, medan den hör principen ämnar till att förtydliga vad som menas med kontinuerligt. När de agila metoderna kom till så ansågs ett par månader vara en lagom tidsintervall för leveranser. Idag förväntas allting gå betydligt snabbare än så, och man bör istället sikta på några veckor eller ännu hellre några dagar.

4. Business och utvecklare tillsammans

Enligt den fjärde principen så bör affärsfolket och de som utvecklar mjukvaran arbeta tätt ihop. Utvecklare arbetar ofta skiljt från de som har hand om företagets övriga processer, både de interna och de externa. Analytiker brukar många gånger arbeta emellan dessa två yrkesgrupper och på så sätt fungera som någon slags förmedlare. Den fjärde principen för de agila metoderna menar att den här barriären bör tas bort så att samarbetet kan öka.

5. Motiverade individer

Den femte principen menar att man bör bygga projekt omkring motiverade individer och skapa den miljö för dem som de behöver som kan stötta dem i deras arbete, och lita på att de får jobbet gjort. Ett agilt team inom utveckling är moget och ansvarsfullt nog att producera högkvalitativ mjukvara, men det kräver en hel del tillit.

6. Samtal öga mot öga

Enligt den sjätte principen så är det mest effektiva sättet för att utbyta information ett samtal som sker öga mot öga. Den teknologiska utvecklingen har skapat otroligt många sätt som människor kan använda för att kommunicera med varandra, men enligt denna agila princip så är inget av de sätten lika effektiva som ett riktigt samtal. Det beror på att den mänskliga hjärnan under ett samtal plockar upp en mängd olika signaler, och inte bara ljudvågor. Signaler som sänds via ansiktsuttryck och kroppsspråk är ofta minst lika viktigt som de ord som sägs.

7. Fungerande mjukvara

Enligt den sjunde principen så är en fungerande mjukvara det främsta och tydligaste måttet på framsteg. Att utveckla en mjukvara kan ta lång tid, vilket gör det ännu viktigare att man kontinuerligt mäter sina framsteg. Färdiga analyser, kompletta modeller eller vackra prototyper spelar i realiteten ingen roll om de inte konverteras till en faktisk fungerande mjukvara.

8. Hållbar utveckling

Den åttonde principen menar att de agila metoderna och processerna ska kunna stötta en jämn takt och hastighet för utveckling, som är hållbar i det långa loppet. Det innebär att ett team etablerar en upprepningsbar iteration och en jämn och hanterbar takt som de kan leverera fungerande mjukvara med, som de sedan upprepar vid varje leverans eller release. Sponsorer, utvecklare och användare bör kunna bibehålla den här hastigheten i princip hur länge som helst.

9. Teknisk excellens

Enligt den nionde principen så kan kontinuerligt fokus på teknisk excellens och bra design göra att man börjar arbeta ännu mer agilt. Många företag och kunder bryr sig mer om en kort produktionstid så att produkten hamnar på marknaden snabbare än vad de gör om bra teknisk design. Men om ett team börjar försumma en god teknisk design under en längre tid så kan det innebära att de börjar arbeta långsammare, vilket innebär att det kommer ta längre tid för deras produkter att nå marknaden eller kunden. Deras förmåga att göra snabba anpassningar som svar på förändrade omständigheter på marknaden kommer minska. De är helt enkelt på väg att bli mindre agila.

10. Enkelhet

Enligt den tionde principen är konsten att maximera mängden arbete som inte görs grundläggande, och det kan man göra på flera olika sätt. Man kan till exempel ta bort processer som inte längre är relevanta eller nödvändiga, man kan automatisera manuellt arbete, annan kan använda sig av existerande material istället för att skriva nytt på egen hand med mera. Allt det hjälper till att spara in både på pengar och tid, och skapar mer utrymme för att fokusera på att leverera ett högre mervärde till kunden.

11. Självorganiserande team

Den elfte principen säger att de bästa arkitekturer, strukturer, krav och designs uppstår i självorganiserande teams.  Den här principen är en kombination av några av de tidigare principerna. Om man vill att business och utvecklare ska kommunicera mera med varandra, om man vill kunna mäta sin framgång med hjälp av fungerande mjukvara istället för med en teoretisk modell och om man arbetar tillsammans med motiverade individer så borde det innebära att man har ett team som producerar högkvalitativ mjukvara utan allt för mycket kontroll uppifrån i organisationen.

12. Regelbunden reflektion och anpassning

Den tolfte och siste principen säger att ett team bör reflektera med jämna mellanrum kring hur man kan bli ännu mer effektiva, för att sedan finjustera och anpassa sitt beteende. Den här principen kommer alltid att ha hög betydelse och är vad som gör individer, teams och företag framgångsrika genom att inte acceptera status quo, utan istället alltid leta efter sätt att förbättra sig själva på.

 

Fördelar och utmaningar

De agila metoderna används som sagt mycket och brett idag. Agil utveckling har många fördelar, men eftersom att det gått 20 år sedan metoden togs fram så kan agil utveckling ibland också innebära en del utmaningar.

Fördelar med agil utveckling

  • Förbättrad kvalitet: En av de främsta fördelarna med agil utveckling är att det leder till förbättrad produktkvalitet. Genom att bryta ner ett projekt i mindre och mer hanterbara bitar så kan teamet fokusera på utveckling av hög kvalitet, att testa mjukvaran samt att samarbeta bättre. Genom att applicera de agila metoderna för utveckling så kan företagen leverera sina lösningar i tid, och med en högre nivå av kundbelåtenhet.
  • Fokus på användarna/kunderna: Genom att fokusera produktionen och utvecklingen av mjukvaran och dess funktioner på behoven som de framtida faktiska användarna har, så skapar man ett inneboende värde för varje funktion istället för att varje funktion enbart ses som en komponent av mjukvaran.
  • Engagerade aktörer: Den agila processen skapar många möjligheter för ett team att interagera med och skapa engagemang hos viktiga aktörer, nämligen före, under och efter varje iteration. Genom att involvera många olika typer av aktörer i processen så skapar teamet bättre förutsättningar för sig själva att förstå den större visionen, bygga upp aktörernas förtroende för dem samt leverera fungerande mjukvara i ett tidigt skede.
  • Transparens: De agila metoderna för utveckling erbjuder kunder och användare en unik chans att vara involverade igenom hela projektet. De kan vara med och prioritera funktioner och features, planera iterationerna eller testa mjukvaran. Kunderna måste dock vara medvetna om att de bevittnar ett pågående projekt som inte är färdigt, i utbytet mot en ökad nivå av transparens.
  • Förutsägbara kostnader och scheman: Eftersom att varje iteration och cykel bör ha en fast varaktighet så brukar kostnaderna också vara förutsägbara och begränsas efter den mängd arbete som ett team kan hinna med inom den angivna tidsramen.
  • Förändring är tillåtet: En annan av de främsta fördelarna med de agila metoderna är att man välkomnar förändring av olika slag, till skillnad från vattenfallsmodellen.

 

Utmaningar med agil utveckling

Det finns ett par utmaningar med den agila utvecklingen som är relativt vanligt förekommande, vilka ofta ligger i vägen för företag att fullt utnyttja de agila metodernas fulla potential:

  • Människors beteendeförändring: Att förändra hur människor beter sig eller arbetar kan vara väldigt svårt och vanor och kultur på arbetsplatsen sitter ofta djupt rotat. Människor har en tendens att kämpa emot förändring, och så är ofta också fallet när det kommer till att implementera en agil metod i ett företag. Att acceptera förändring innebär att man också accepterar att man hittills kanske inte har utfört sina uppgifter på bästa möjliga sätt, vilket kan vara svårt att smälta.
  • Brist på dedikerade multifunktionella team: Språket som bland annat används i de tolv principerna bakom de agila metoderna, vilket benämner de tekniska medarbetarna som utvecklare, har gjort att många har den feluppfattade tron att det bara är den typen av anställda som behövs i ett agilt team. Därför är det viktigt att betona att det gäller produktutveckling, vilket innebär att alla möjligt sorters roller kan vara användbara för att utveckla en produkt inom ett agilt team.

 

Slutsats

Agila metoder är ett kraftfullt verktyg för utveckling av mjukvara. Det ger inte bara process- och effektivitetsfördelar för teamet som arbetar med utvecklingen, utan också ett antal viktiga affärsfördelar för organisationen som helhet. Agil utveckling hjälper produktgrupper att hantera många av de vanligaste fallgroparna, så som exempelvis kostnader och deadlines, på ett mer kontrollerat sätt.

Genom att omorganisera de aktiviteter som är involverade i en kundanpassad utveckling av mjukvara så kan de agila metoderna uppnå samma mål på ett smidigare och mer affärsfokuserat sätt än de mer traditionella metoderna som följer vattenfallsmodellen. Den agila utvecklingen vägleds av tolv stycken grundprinciper, vilka togs fram 2001 i samband med skapandet av de agila metoderna. De flesta av principerna är relevanta än idag, viss mer och andra mindre.