door: Macaw - gepubliceerd op 25-6-2009
“Dit had ik zo niet verwacht” is helaas een vaak gehoorde opmerking van klanten bij de oplevering van software met veel maatwerk. Blijkbaar kunnen de verwachtingen van het uiteindelijke opgeleverde product maar moeilijk onderling afgestemd worden. Dit is zeker het geval wanneer er weinig communicatie plaatsvindt tussen de opdrachtgever en de softwareleverancier. Deze situatie komt juist voor indien er voor een fixed-price, fixed-date contract gekozen wordt.
Wat is dan het “probleem” van fixed-price, fixed date opdrachten? Het gevaar van het vooraf “vastzetten’ van functionaliteiten en een eventuele opleverdatum is dat er een schijnzekerheid ontstaat bij de opdrachtgever over het uiteindelijke resultaat. Veel van de “zekerheden” zullen gebaseerd zijn op onvolledige specificaties en aannames op technische haalbaarheid. Deze risico’s van het project worden zichtbaar in de prijs of erger nog, in de kwaliteit van de opgeleverde software. De details van de functionaliteiten en de technische haalbaarheid komen namelijk pas tijdens het ontwikkelen van de software naar voren. De opdrachtgever kan ogenschijnlijk een contract afdwingen maar niet het uiteindelijke resultaat.
Het is een feit dat het ontwikkelen van nieuwe software per definitie een complexe onderneming is. Bij de start van het project is het daarom bijna onmogelijk om in groot detail het hele projectplan over de lange periode vast te leggen. Om het project met de “vastgezette” functionaliteiten toch onder controle te houden, wordt het project in een aantal project faseringen opgesplitst. Meestal in deze volgorde:
In de werkelijkheid veranderen de functionaliteiten, zijn de aangenomen architecturele aannames toch niet haalbaar en blijken de grootste risico’s toch in andere delen van het project te zitten.
De volgorde van een project moet juist in grote mate bepaald worden door de business prioriteiten van dat moment. Dit lijkt in eerste instantie niet de juiste volgorde, maar in de praktijk geeft dit wel de beste resultaten. Een klant zou daarom meer invloed moeten hebben en nemen in een software ontwikkelproject. De invloed zal niet zozeer liggen op het proces, maar juist in de prioriteitstelling. Functionaliteiten en technische haalbaarheid moeten continu getoetst worden met het ontwikkelteam. Dus het ontwikkelteam moet in eerste instantie bouwen wat de opdrachtgever belangrijk vindt.
Stel iemand in de rol van ‘Product Owner’ aan. De Product Owner is iemand met uitgebreide kennis van het product en heeft het mandaat van een stuurgroep om beslissingen te mogen nemen. Laat hem of haar onderhandelen met het gehele team om vast te stellen welke functionaliteiten haalbaar zijn. Laat een coach het proces bewaken en geef hem de vrijheid om belemmeringen die ontstaan weg te nemen. Wat haalbaar is en in welke tijd (meestal 30 dagen) moet vooraf met elkaar vastgesteld worden. Wat haalbaar is, kan een team met zijn ontwikkel-specialisten uitstekend bepalen.
Bij de start van een timebox bespreekt de Product Owner de visie en de top prioriteiten met het gehele team. Het team is direct op de hoogte en kan gerichte vragen stellen indien er onduidelijkheden zijn. Het team zal vervolgens de keuze maken welke functionaliteiten voor de komende 30 dagen haalbaar zijn. Voordeel is dat het team zelf de keuze maakt wat haalbaar is en zal daarom extra gemotiveerd zijn om deze functionaliteiten tot een goed einde te brengen. Belangrijk is dus om heel duidelijk de doelen van de timebox vast te stellen en vast te stellen wanneer iets klaar is. Aan het einde van de timebox zal de gebouwde software en opleverdocumenten direct aan de opdrachtgever getoond worden. Er wordt dus tussentijds inzichtelijk gemaakt wat er bereikt is.
Ja, deze vorm van ontwikkelen is een Agile ontwikkelmethodiek. In de basis gaat het om de volgende uitgangspunten:
Met een aantal eenvoudige regels kunnen de verwachtingen tussen de opdrachtgever en een software leverancier eenvoudig en sterk verbeterd worden. De opdrachtgever weet exact wat er per timebox opgeleverd gaat worden. De softwareleverancier kan eenvoudig het proces aanpassen en de noodzakelijke wijzigingen in het product aanbrengen.
Uiteraard is het noodzakelijk om een aantal regels met elkaar af te spreken. Deze regels zijn nodig om de samenwerking en verwachtingen op een hoog peil te brengen en te houden. De beste manier om bovenstaande aanpak te realiseren is om de methode ‘Scrum’ te gebruiken. Scrum levert een uitstekend raamwerk waarin de bovenstaande regels vastgelegd zijn. Scrum kan de productiviteit en kwaliteit sterk verhogen, juist omdat de opdrachtgever nu een voorname rol in het proces heeft. Nogmaals de rol van de opdrachtgever ligt niet in het proces en de dagelijkse voortgang, maar juist in het stellen van de business prioriteiten en het gezonde spanningsveld tussen de opdrachtgever en de softwareleverancier.
De voordelen op een rijtje:
We ontkomen er niet aan door te zeggen dat we als Macaw alleen maar op de Agile manier projecten uitvoeren. Er zitten bij ons ook fixed-price, fixe-date projecten bij. Echter, we omarmen de Agile manier en staan hier ook achter. Daarom proberen we in onze projecten wel zoveel mogelijk onze klanten op deze manier met ons te laten werken. Onze ervaring is dat met Agile betere projectresultaten bereikt worden wat onder andere ook resulteert in een hogere klanttevredenheid.
