Agile (in het Nederlands betekent dit ‘behendig, lenig’) is een relatief nieuwe methode van software ontwikkeling. Hoewel veel principes die gebruikt worden bij agile software ontwikkeling ouder zijn, is de term ontstaan in 2001 toen een aantal ontwikkelaars het ‘agile manifest’ schreven. In dit manifest wordt gesteld dat goede software wordt gemaakt door:
- Mensen en hun onderlinge interactie boven processen en tools te verkiezen
- Werkende software boven allesomvattende documentatie te verkiezen
- Samenwerking met de klant boven contractonderhandelingen te verkiezen
- Inspelen op verandering boven het volgen van een plan te verkiezen
- In agile projecten is het van groot belang dat er veel betrokkenheid is vanuit de organisatie van de opdrachtgever. Eindgebruikers zijn dagelijks betrokken bij het project. Voor veel organisaties is het een uitdaging om deze mensen vrij te maken voor een dergelijk project.
- In de meeste agile methodes (zoals bijvoorbeeld Scrum) worden er strakke afspraken gemaakt over kosten en doorlooptijd per sprint of iteratie, maar moet de opdrachtgever het vertrouwen hebben dat het team zijn uiterste best doet om zoveel mogelijk functionaliteit te bouwen. Dit vertrouwen is vooral bij een nieuw project niet altijd vanzelfsprekend.
- Agile projecten zijn in de regel slechts vaag omlijnd. In plaats van een uitgebreid functioneel en technisch ontwerp is er alleen een planning op hoofdlijnen. De opdrachtgever weet van tevoren niet in detail wat hij gaat krijgen. Het lijkt daarom alsof er een blanco cheque wordt gegeven.
- Daarnaast denken opdrachtgevers bij aanvang vaak dat agile projecten niet goed beheersbaar zijn. Als er geen uitgebreid ontwerp is, hoe kan de voortgang dan worden bepaald?
Natuurlijk klinkt deze ontwikkelmethodologie in theorie heel mooi, voor opdrachtgevers is het echter niet altijd makkelijk om een agile project aan te gaan met een softwareleverancier. Dat heeft te maken met een aantal factoren. Mijn ervaring is dat tegenover deze (schijnbare) nadelen een aantal grote voordelen staan ten opzichte van meer traditionele ontwikkelmethodes. Juist deze voordelen doorbreken het traditionele patroon en maken agile projecten in de regel succesvoller dan traditionele ‘waterval’ projecten.
De nadelen van traditionele software ontwikkeling
Doordat er grote betrokkenheid van eindgebruikers wordt gevraagd, is er maar heel weinig afstand tussen de programmeurs van het systeem en de mensen die het systeem gaan gebruiken. Bij traditionele software ontwikkeling wordt van gebruikers in de ontwerpfase heel veel input gevraagd, maar is er tijdens het ontwikkelen niet of nauwelijks meer feedback totdat het systeem wordt opgeleverd. Dan blijkt pas of het systeem dat ooit is bedacht ook functioneert in de praktijk. In veel gevallen sluit dit niet meer aan doordat er in de tussentijd dingen zijn veranderd, de eindgebruikers voortschrijdend inzicht hebben, of doordat ze ten tijde van het ontwerp nog niet alle consequenties konden overzien.
Het werken met sprints
Een ander belangrijk punt is dat er in korte sprints of iteraties wordt gewerkt, waarbij steeds de meest waardevolle functionaliteit als eerste wordt gebouwd en direct wordt opgeleverd en in gebruik genomen. Dit betekent ten eerste dat er veel sneller geprofiteerd kan worden van de verbeteringen die het systeem brengt, vaak al na de eerste sprint. Daarnaast kunnen gebruikers meteen werken met het systeem dat ze aan het bouwen zijn. Dat is gemakkelijker dan werken aan een ontwerp dat alleen op papier bestaat.
Doordat het systeem niet van tevoren in een gedetailleerd ontwerp is gegoten, is het veel makkelijker en goedkoper om veranderingen door te voeren tijdens de bouw van het systeem. De opdrachtgever heeft na elke sprint een werkend systeem en kan na elke sprint de koers omgooien. Voortschrijdend inzicht en een veranderende organisatie zijn niet langer een probleem, maar kunnen direct worden meegenomen.
Transparante kosten
Tot slot zijn agile projecten in mijn opinie juist heel goed beheersbaar. Het werkende systeem is de beste voortgangsindicator die je je kunt wensen en is beter verifieerbaar dan een uitspraak over de voortgang ten opzichte van een gedateerd ontwerp. Na elke sprint bestaat ook de mogelijkheid om te stoppen met de bouw van het systeem. In het ideale geval wordt er precies gestopt op het moment dat de kosten van nieuwe toevoegingen geen evenredige baten meer opleveren (een teken dat aan alle ‘must haves’ is voldaan). De voortgang en kosten van agile projecten zijn daarom juist zeer transparant en beheersbaar.
Bij Qics geloven wij dat de agile projectaanpak leidt tot beter beheersbare projecten en bovenal tot grotere klanttevredenheid. Neem contact met ons op als u meer wilt weten over de mogelijkheden om uw volgende softwareproject op een agile manier uit te voeren.