Eind jaren negentig begonnen verschillende methodologieën voor softwareontwikkeling publieke aandacht te krijgen. Elke methodologie had een andere combinatie va oude en nieuwe ideeën, maar ze legden allemaal een nadruk op nauwe samenwerking tussen het ontwikkelingsteam en de stakeholders aan de businesskant en op frequente oplevering van waardevolle software. Ook draaide het in alle benaderingen om zelforganiserende teams. Begin 2001 is de term agile toegekend aan deze verzameling methodologieën toen zeventien softwareontwikkelaars bij elkaar waren gekomen in Snowbird, Utah, om hun ideeën en verschillende benaderingen van softwareontwikkeling te bespreken.
Voordat we in agile software development duiken, moet mij iets van het hart… Agile softwareontwikkeling is in feite géén innovatietechnologie… Sorry mensen.Agile is een methodologie voor softwareontwikkeling. Niets meer, niets minder.Agile hoort eigenlijk niet echt thuis in een artikel over innovatiemethodologieën (Zie ook de andere delen over Design Thinking en Lean Startup). Ik heb het echter toch meegenomen om dit punt duidelijk te maken – ik heb namelijk gezien dat veel mensen design thinking, lean en agile behandelen alsof het een en hetzelfde ding is. Dat is het niet. Wat niet wegneemt dat agile softwareontwikkeling heel goed kan werken zij aan zij met een innovatiemethodologie, en zoals we in het eerder artikel over de lean startup al hebben gezien is het feitelijk in het lean-startupproces gebakken. De andere reden dat ik agile meeneem, is dat de onderliggende principes ervan erg lijken op de besproken innovatiemethodologieën.
Proces
De agile ontwikkelingsmethoden splitsen productontwikkeling uit in kleine time increments, vaak ‘sprints’ of ‘iteraties’ genoemd, om de hoeveelheid voorafplanning en -design te minimaliseren. Iteraties (‘herhalingen’) of sprints zijn korte tijdsraamwerken die doorgaans één tot vier weken duren. Bij elke iteratie werkt een crossfunctioneel team aan alle functies: planning, analyse, ontwerp, codering, unittesting en acceptatietesting. Aan het einde van de iteratie wordt er een werkend product uitgegeven aan stakeholders en gebruikers om te meten hoe succesvol het is. Dit proces minimaliseert het risico en de onzekerheid en maakt het mogelijk om het product op basis van gebruikersfeedback snel aan te passen aan veranderingen.Geüpdatete versie
- Zoek uit waar je bent.
- Neem een kleine stap vooruit richting je doel.
- Pas je inzicht aan op basis van wat je hebt geleerd.
Doel en toepassing Agile
Het hoofddoel van agile softwareontwikkeling is risico’s en onzekerheid verminderen en meer inzicht in gebruikers krijgen door veel versies uit te brengen. Daardoor kun je je snel aanpassen aan de feedback die je je gebruikers ontlokt. Dit doel lijkt heel erg op wat we bij design thinking en de lean startup hebben gezien. In essentie zijn deze innovatie– en softwareontwikkelingsmethoden ontwikkeld om het risiconiveau omlaag te brengen, wat je ook terugziet in hun processen en onderliggende principes. Agile softwareontwikkeling gaat hand in hand met elke innovatiemethodologie zolang er software nodig is voor het ontwikkelen van je experimenten of als je testontwerpen of MVP’s (is hetzelfde) nodig hebt om je meest kritieke hypothesen te valideren. Het is op zichzelf ook een nuttig proces als het grootste deel van je onzekerheid zich bevindt in de haalbaarheid van de technische oplossing die je voorstelt.Agile principes
Aangezien het oorspronkelijke Manifesto for Agile Software Development een lijst met principes is, kopieer en plak ik ze hier gewoon:- Stel de klant tevreden door vroegtijdige en continue oplevering van waardevolle software.
- Verwelkom veranderende eisen, zelfs laat in de ontwikkeling. Agile processen benutten verandering ten dienste van het concurrentievoordeel van de klant.
- Lever werkende software frequent aan, liefst om de paar weken of maximaal paar maanden.
- Mensen aan de businesskant en ontwikkelaars moeten dagelijks samenwerken gedurende het hele project.
- Zet projecten op rond gemotiveerde individuen. Bied ze de omgeving en ondersteuning die ze nodig hebben en vertrouw erop dat ze de klus klaren.
- De beste vorm van communicatie is het face-to-face gesprek (colocatie).
- Werkende software is de belangrijkste maatstaf voor de voortgang.
- Agile processen bevorderen constante ontwikkelsnelheid. De sponsors, ontwikkelaars en gebruikers moeten voor onbepaalde tijd een constant tempo kunnen volhouden.
- Voortdurende aandacht voor technische uitmuntendheid en goed ontwerp versterken de agility.
- Eenvoud – de kunst om het niet-gedane werk te maximaliseren – is essentieel.
- De beste architecturen, eisen en ontwerpen komen voort uit zelfsturende teams.
- Het team onderzoekt geregeld hoe het effectiever kan worden en past zich daarop aan.