Agila arbetsmetoder i webbutveckling
Vad är agil projektmetod?
Agil projektmetodik är ett iterativt arbetsflöde som betonar flexibilitet, samarbete och snabba leveranser av fungerande mjukvara. Till skillnad från traditionella metoder, såsom vattenfallsmetoden, främjar agilt arbete adaptiv planering, evolutionär utveckling, och kontinuerlig förbättring. Det tillåter arbetsgrupper att svara snabbt på kravändringar och andra situationer som påverkar arbetet, vilket ger gruppen möjlighet att mer regelbundet leverera värdefulla delar av arbetet till kunden1.
Nyckelkomponenter i agila projekt:
- Individer och interaktioner framför processer och verktyg. Alltså att man fukuserar på människor och hur man samarbetar, snarare än att följa rigida processer.
- Fungerande programvara framför omfattande dokumentation. Fokus ska ligga på att producera en utmärkt produkt, inte en utmärkt rapport.
- Kundsamarbete framför kontraktsförhandling. Att arbeta nära och kontinuerligt med kunden istället för att förlita sig på oflexibla kontrakt.
- Att svara på förändring framför att följa en plan2. Fokus på att vara flexibel och redo att anpassa sig till förändrade förutsättningar istället för att strikt följa en fördefinierad plan som inte tar hänsyn till förändringar.
Vanliga agila metoder
Scrum
Scrum är ett populärt agilt ramverk som delar upp ett projekt i korta tidsbestämda iterationer – sprintar – som generellt sett brukar vara mellan en och fyra veckor.
Nyckelkomponenter i Scrum:
- Sprintplanering: Gruppen bestämmer vad som ska göras i den kommande sprinten.
- Daily Scrum: Ett kort dagligt möte där gruppmedlemmarna kan reflektera över vad de gjort, hur det har gått, och vad de ska göra nu.
- Sprint Review: Ett möte där man demonstrerar färdigt arbete.
- Sprint Retrospektiv: Ett möte där gruppen reflekterar över processen och identifierar eventuella förbättringsområden3.
Kanban
Kanban är en mer visuell metod för att hantera arbete, som lägger vikt vid kontinuerlig leverans, utan att överbelasta gruppen. Med hjälp av en ’Kanbantavla’ visualiserar man arbete, begränsar pågående arbete, och maximerar effektivitet.
Nyckelkomponenter i Kanban:
- Att visualisera arbetsprocessen: Kanban-tavlan ger en tydlig överblick vilket effektiviserar arbetet.
- Att begränsa pågående arbete (work-in-progress, ’WIP’): Genom att lägga all fokus på några specifika uppgifter i taget ökar man kvalitén på slutresultatet.
- Att ha tydliga policyer för arbetsprocessen: Genom tydliga regler och riktlinjer vet alla i gruppen alltid vad de ska göra och hur de ska hantera problem, vilket skapar snabbare processer.
- Att implementera feedback-loopar: Genom kontinuerlig feedback och revidering kan man snabbare leverera en bättre produkt snabbare4.
Extreme Programming (XP)
XP fokuserar på tekniska metoder för att förbättra programvarukvalitet, och responsivitet gentemot förändringar i kundkrav.
Nyckelkomponenter i XP:
- Par-programmering: En person skriver kod, medan den andre analyserar koden rad för rad medan den skrivs.
- Test-driven development (TDD): Testdriven utveckling. En kort repetitiv process där programmeraren först skriver ett test, och därefter skriver precis så mycket kod som krävs för att klara testet.
- Kontinuerlig integration och implementering: Genom att kontinuerligt se hur programvara integreras och fungerar kan man snabbt upptäcka fel och vara flexibel för förändringar.
- Enkel design: Man lägger inte onödig tid på design.
- Refaktorisering (omstrukturering) av kod: Genom systematisera och förenkla kod ökar man kodens återanvändbarhet, förenklar underhåll och förståbarhet5.
Verktyg för agila webbprojekt
Det finns ett stort antal verktyg för att stötta en grupp i den agila arbetsprocessen, allt från planeringsverktyg, kommunikation och versionshantering.
Några vanliga verktyg är:
- Jira - Ett omfattande projekthanteringsverktyg för bland annat planering och måluppföljning6.
- Trello - Ett visuellt samarbetsverktyg som använder sig av tavlor, listor, och kort, för att organisera projekt7.
- GitHub - Ett verktyg för versionskontroll, samarbete och kodhantering8.
- Slack - Ett kommunikationsverktyg för realtidskommunikation och fildelning inom gruppen9.
- Jenkins - En automationsserver för kontinuerlig integration och leverans10.
Agila webbprojekt
Fördelar med att anamma agil projektmetodik i webbutveckling:
- Snabbare leveranser: Iterativ utveckling tillåter snabbare släpp av funktionell programvara.
- Förbättrad kvalité: Kontinuerlig testning och integration hjälper till att tidigt identifiera och åtgärda problem.
- Förbättrat samarbete: Regelbunden kommunikation leder till bättre samarbete och ’teamwork’.
- Ökad flexibilitet: Förmåga att anpassa sig till kravförändringar och förändringar i marknaden.
- Högre kundnöjdhet: Frekvent leverans av fungerande programvara och därmed kontinuerlig feedback ökar den slutliga kundnöjdheten11.
Sammanfattning
Agila metoder har revolutionerat webbutveckling genom att möjliggöra större flexibilitet, samarbete, och kund-centrerade approacher. Genom att förstå och implementera dessa metoder och verktyg kan utvecklingsteam öka sin produktivitet, kvalitet och förmåga att möta kunders behov i den snabbföränderliga webbutvecklingsvärlden.
Under de senaste veckorna har jag haft chansen att agera SCRUM-master i min grupps agila grupparbete, och det har varit otroligt lärorikt. Den största utmaningen har nog varit att hantera balansen mellan flexibilitet och stabilitet, särskilt i en grupp där de olika gruppdeltagarna har olika förutsättningar, intresse och erfarenhet. Att hantera oväntade förändringar i planen, eller att prioritera om när något visat sig inte fungera, har varit utmanande men skönt! I mina tidigare studier har jag framför allt fått jobba utifrån vattenfallsmetoden, vilket inte har tillåtit samma flexibilitet. Tack vare våra dagliga stand-ups, sprintplaneringar och sprint-reviews/retrospectives har det gått bra att hålla projektet på rätt spår. Särskilt tack vare verktygen i Jira och GitHub.
En annan viktig och lärorik aspekt i rollen som SCRUM-master har varit att försöka skapa en positiv och engagerande arbetsmiljö, där alla kan och vill bidra. Det är inte alltid det lättaste, men jag tycker att det har gått bra. Genom att uppmuntra till diskussion och idéutbyte, samt inofficiella möten där man kan hjälpas åt i arbetet, har gruppen kommit långt och hanterat uppgiften väl. Jag har sett stor utveckling hos mina gruppmedlemmar, men den kanske största utvecklingen har vi gjort tillsammans, som grupp och team.