Follow Us on Twitter

Snel succesvolle projecten uitvoeren

Gepubliceerd in

Juli 2009 - Veel softwareprojecten hebben te maken met uitdagingen. Er zijn veel boeken en rapporten over geschreven maar de succesratio blijft vaak te laag. Hoe komt dat? Hoe kunnen we een software project wel succesvol uitvoeren?

In dit Whitebook beschrijf ik een aantal zaken, die vaak bij projecten voorkomen en de werkwijzen die wij in onze projecten hanteren. Met onze werkwijze kunnen we snel een goed resultaat boeken.

Waar begint een project eigenlijk mee?

In dit artikel ga ik ervan uit dat er voldoende onderbouwing is om een software ontwikkel project te starten. De beoogde doelen en resultaten rechtvaardigen dus een investering.

Hoe groot is die investering? Als er bekend zou zijn welke functionaliteit nodig is, welke eigenschappen het systeem moet hebben en we hebben de beste specialisten tot onze beschikking, dan kunnen we redelijk precies bepalen wat de kosten zullen zijn. Het bouwen van een huis of een vliegtuig kun je zo prima begroten. Het ontwikkelen van software vaak helaas niet, omdat teveel variabelen en onbekende factoren hierbij een rol spelen. Het gewenste resultaat is op voorhand vaak niet goed genoeg duidelijk te krijgen.

Requirements analyse en volledig ontwerp

Het lijkt daarom zinvol om alles volledig te weten te komen zodat er een nauwkeurige begroting kan worden gemaakt. Alle eisen worden in kaart gebracht. De functionaliteit, de systeemeisen en op welke manieren het systeem in de toekomst moet kunnen worden aangepast. Dat is een behoorlijke investering maar geeft wel duidelijkheid en zekerheid met betrekking tot de oplossingen en kosten.

Doen dus, of niet?

In de praktijk blijkt dat het voor veel projecten niet verstandig is om alles van te voren uit te werken en vervolgens te bouwen. De ervaring leert dat bij softwareprojecten de inzichten die bij de start van een project bekend zijn vaak wijzigen doordat de omgeving, waarin de software een oplossing moeten bieden, snel verandert.

De zekerheden die volledige analyse en ontwerp van de software opleveren dragen te weinig bij aan de uiteindelijke resultaten. Deze zekerheden zijn meestal schijn en blijken op basis van de statistieken over projectsuccessen weinig waard, of zelfs waardeloos. Zo valt te lezen in het Chaos Report van de Standish Group dat 32% van de projecten succesvol is, 44% is te laat, te duur of bevat te weinig functionaliteit en 24% wordt voortijdig gestaakt.

Hoe dan wel?

Om met een project van start te gaan, moet een budget gekozen worden of een "best effort" inschatting worden gemaakt die voldoende vertrouwen geeft. Een overzicht, over wat er gevraagd wordt en wat dat ongeveer zal kosten, is in een aantal dagen te maken.

De belangrijkste doelstelling is om zo snel mogelijk resultaat te boeken en het project af te ronden en te beëindigen. Daardoor zullen ook de kosten niet hoger worden dan strikt noodzakelijk.

Succesvolle projecten

De projecten die wij voor ogen hebben en graag doen hebben een focus op het gewenste resultaat. De zekerheid die wij bieden is dat we na maximaal een maand ontwikkelen resultaat kunnen tonen. Na acceptatie van de software kan het gelijk na die maand ook in productie gaan.

Succesvolle projecten leveren het juiste resultaat op op het juiste moment. Dat zijn de pijlers van onze projectaanpak.

Projectuitvoering

De projectuitvoering begint op basis van een voldoende compleet beeld van de vraag. Alle voorbereiding die niet noodzakelijk is (zoals vooraf alles ontwerpen) wordt ook niet gedaan. We beginnen zo snel mogelijk met echt resultaat realiseren! We doen dat door prioriteiten te stellen, samen te werken, mee te denken en transparantie te bieden. De samenwerking uit zich in een efficiënte communicatie over wat er ontwikkeld moet worden. Op hoofdlijnen zijn de keuzes al gemaakt, maar de details worden ingevuld wanneer dat nodig is. Dat geeft ook ruimte om nieuwe inzichten direct te kunnen verwerken in plaats van later toe te voegen.

We zijn absoluut niet bang om het verkeerde te maken. De feedback die we krijgen op resultaten is veel beter dan op papieren analyses en ontwerpen. Mochten we merken dat we een verkeerde keuze hebben gemaakt, dan kunnen we dat direct corrigeren. Door samenwerking en communicatie worden onduidelijkheden en eventuele misverstanden snel zichtbaar, daardoor kunnen deze onduidelijkheden direct worden opgelost. De opdrachtgever en de teamleden leren op deze manier veel sneller. Hierdoor kunnen beslissingen sneller en beter gemaakt worden. Dat resulteert in hogere kwaliteit, minder tijdbesteding en daardoor ook minder kosten.

Onze projecten willen we graag zo open en transparant mogelijk uitvoeren. Waar wordt tijd aan besteed? Waar wordt aan gewerkt? Wat moet er nog gebeuren om bepaalde functionaliteit op te leveren? Die transparantie wordt bereikt door openheid te geven in wat er gedaan wordt aan werkzaamheden en door dagelijkse voortgang te tonen. Dit bestaat uit zowel tastbaar resultaat (de software) als een rapportage (middels een burndown chart).

Om overzicht en inzicht te bieden in de status en voortgang wordt met een Taskboard gewerkt. Dat is meestal een whiteboard met een overzicht van uit te voeren werkzaamheden en uitgevoerde werkzaamheden.


Een voorbeeld van een Taskboard

Het Taskboard laat links de zaken zien die moeten worden uitgevoerd (To Do). Rechts daarvan zie je de kolommen In Progress en Done. Soms is het verstandig een Test of Verify stap te plaatsen voor Done, dat is afhankelijk van de aard van het project en de organisatie.


Voorbeeld van een burndown chart

De burndown chart laat de resterende teamcapaciteit in de iteratie/Sprint zien (IDEAL) per dag en daarnaast de hoeveelheid werk (TO DO) binnen de Sprint. In dit voorbeeld is er tussen 28 januari en 29 januari werk bijgekomen, er zijn taken toegevoegd zonder dat het einddoel onbereikbaar werd.

Voldoening, resultaat en gedrevenheid

Er wordt op een intensieve wijze naar een resultaat toegewerkt waarbij het resultaat snel zichtbaar wordt en toch nog gekneed kan worden. Er wordt stapsgewijs concreet zichtbaar wat er in een abstracte vorm gewenst was. Dat levert voldoening op bij alle betrokkenen.

We werken direct naar het resultaat toe en zodra er iets getoond of getest kan worden, dan bieden we dat aan. Het systeem wordt direct gebruikt en daardoor snel bekend bij de betrokkenen.

Om snel resultaat te bereiken, hanteren we technologie waarmee we flexibel zijn. De benodigde servers en omgevingen zijn binnen één dag operationeel. Dit maakt het mogelijk om een project per direct te kunnen starten als de opdrachtgever en het ontwikkelteam er klaar voor zijn.
De snelheid, het concreet werken aan resultaat en het alleen met zinvolle zaken bezig zijn levert snel resultaat op. De onderlinge verhoudingen, de samenwerking en de resultaatfocus zijn succeselementen en leveren bijna altijd een gedrevenheid op die veel mensen niet meer willen missen.

De ontwikkelteams zijn klein (een team van 7 is het maximum) en multifunctioneel. Dat maakt het mogelijk goed samen te werken en de werkzaamheden en afhankelijkheden goed te overzien.

Geschikte projecten

Eigenlijk is elk project geschikt voor deze aanpak. De opdrachtgever moet de juiste mensen voldoende beschikbaar stellen. Beslissingen moeten door de opdrachtgever, indien mogelijk, op de dag zelf gemaakt kunnen worden, waardoor de voortgang wordt geborgd.

Om het succes beheerst uit te bouwen richten we ons op projecten die niet te groot zijn en niet te lang duren. Een doorlooptijd van ongeveer een half jaar en een teamomvang van circa 15 manjaar vormen de bovengrens. Dat houdt de zaken overzichtelijk en alle neuzen dezelfde kant ophouden vraag niet teveel organisatie.

Hoe doen we dat dan?

Het recept dat we hanteren is Scrum in zetten en een goed passend team te selecteren voor het project. Daarnaast maken we gebruik van flexibele technologie waarmee het team bekend is, snel productief kan zijn en goede resultaten kan behalen. Zoals bij heel veel resultaten is het team de bepalende factor en niet de spelregels of de technologie. Een project start met een voorbereidingsfase. Deze voorbereiding levert een concreet projectdoel op en een Product backlog. Dit traject kan, als de opdrachtgever de benodigde input kan leveren en beslissingen kan nemen, binnen een week worden uitgevoerd. Na deze week wordt er gestart met het project.

Voor een beschrijving van Scrum zie: Scrum_(development) en Release Planning met Scrum.

Team focus

Een goed team, goede mechanismen en tools en het meest belangrijk een resultaatfocus, vormen de kernelementen van onze projectaanpak. Het team vraagt zich continu af of wat ze aan het realiseren zijn wel het goede is en of het niet slimmer of sneller kan. Kunnen we voorkomen dat we met waste bezig zijn (een lean principe)?

Dat betekent dat het team betrokken is, meedenkt, creatief is en zich flexibel opstelt. Het zal er geen probleem mee hebben om af en toe een stap te zetten die het verschil kan gaan maken (risico nemen). Wie wil er niet een dergelijk team hebben of er deel van uitmaken?

In Scrum is het aspect van teamverantwoordelijkheid heel belangrijk. Het team stuurt zichzelf bij als het toch beter of anders moet. Er worden reflectie- en retrospectietechnieken gebruikt die de goede en minder goede processen en gewoonten blootlegt zodat deze kunnen worden verbeterd.
Zie voor meer informatie ook: Beginnen met evalueren.

Praktijk situaties, hoe gaan we daar mee om

Bij sommige projecten lijkt het stellen van een concreet doel lastig. Denk in dat geval aan de voordelen die bereikt kunnen worden. Als het onmogelijk blijkt om duidelijke voordelen te benoemen, dan is er geen reden om te investeren in het project.

Wat moet je doen als de snelheid van het team te laag is? Zoek naar de oorzaak en elimineer die. Elk probleem heeft een oorzaak. We hebben vaak de neiging een probleem complexer en omvangrijker te maken dan noodzakelijk is.

Een probleem is soms lastig te vinden. De methode van "5 times why" kan hierbij helpen, vraag door naar het waarom iemand iets doet of wil (5 niveaus diep of dieper dan in eerste instantie nodig lijkt). Als je daarin geoefend bent, kun je snel uitkomen op de "root cause" van een probleem. RCA (Root Cause Analysis) kan je in dit soort situaties helpen.

De hele opzet van dit type projecten hebben we gebaseerd op het uitgangspunt dat verandering normaal is en vaak voorkomt. De opzet is flexibel van aard, de kwaliteit wordt door het team bewaakt en ondersteund door de gebruikte technologie en principes (zoals "unit testing"). Een goede architectuur is flexibel. Als het fundament van de architectuur geraakt wordt (het inflexibele deel), is het project waarschijnlijk teveel gewijzigd en zijn grotere maatregelen nodig.

Nazorg of beheer van een applicatie blijkt in de gehele life-cycle van software de meeste kosten met zich mee te brengen. Ook de nazorg na de laatste Sprint blijkt zeer goed te verlopen. Het project is qua realisatie afgerond en opgeleverd. Helaas zitten in elk product fouten of onvolkomenheden, die pas tijdens echt intensief gebruik ontdekt worden. Het is onze ervaring dat de teamleden die werkzaam zijn geweest binnen het project, dit vaak erg snel kunnen reproduceren en oplossen.

Is volledige openheid wel goed voor het vertrouwen? Ja, door open te zijn en te presteren deel je de successen en ook problemen met de opdrachtgever. Vooral dat laatste is iets dat minder leuk is maar het is in elke vertrouwensrelatie wel datgene wat het verschil maakt. Het creëert ook begrip en de betrokkenheid zorgt er tevens voor dat de verwachtingen reëel zijn en direct bijgesteld kunnen worden. Niet iedereen staat daar voor open of wil op die manier samenwerken, dat is dan lastig en geen succesfactor voor Scrum projecten. Scrum kan ook dan nog een succes worden, maar vraagt veel meer aandacht voor de organisatie en communicatie.

Snelle projecten uitvoeren met succesvol resultaat

Het uitvoeren van projecten met succesvol resultaat heeft Whitehorses altijd nagestreefd. De laatste jaren zijn we actiever bezig onze ervaringen en visie te borgen binnen onze organisatie. Scrum is onze voorkeursaanpak en we werken op dit moment aan een verdere standaardisatie van onze projectaanpak.

Wij vinden projecten leuk en zijn er goed in! Wij vinden het leuk om samen met onze klanten resultaat te boeken en zo mee te bouwen aan hun succes en toekomst!

Referenties:

Waardering:
 

Reacties

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.