Het zal niet de eerste keer zijn dat er opnieuw in het nieuws een bericht voorbij komt dat beschrijft hoe een software project opnieuw gigantisch uitgelopen is. Het systeem is nog niet eens af maar de kosten zijn niet meer te overzien. Een eindtijd van het project kan niet geschat worden. Zelfs in organisaties waarvan niemand het had verwacht, blijkt het succesvol afronden van een software project bijzonder lastig. Een goed begin is het halve werk geldt hier niet. De instelling: “Zolang wij blijven geloven in de meerwaarde van het systeem, komt het goed” zorgt niet voor een succesvolle implementatie. Wat dan wel? Hoe kan je er voor zorgen dat de sceptici (“Achja.. het zal ze toch wel niet lukken”) het niet winnen? Het antwoord is simpel — en je kent het al.
Elke studie of opleiding heeft het wel eens aangestipt: als iets te moeilijk is om in één keer op te lossen, hak het dan in stukken. Zoals elk complex vraagstuk moeten ook software projecten opgedeeld worden in duidelijk gedefinieerde deelvraagstukken. Op een complex vraagstuk is niet gelijk een antwoord te geven. Een groot softwarepakket is niet in één maand te implementeren binnen uw organisatie. Accepteer dat de uiteindelijke finish nog niet in zicht is. Dit is niet erg. Besef dat je de eindstreep niet in zicht hoeft te hebben om te weten dat er verandering nodig is.
Hoewel dit raar voelt is het wel de enige manier waarop je een uitzichtloos doel kunt halen. Denk zo: aan het begin van de marathon is het onmogelijk te weten waar het einde is — maar daar komen, zal, en gaat, je lukken.
Om toch verder te komen moeten binnen het project kleinere problemen worden gedefinieerd. Van deze kleinere deelproblemen is het essentieel dat elke eindstreep wel behapbaar is. Door telkens naar een deeloplossing te streven komt het project steeds verder en kom je dus steeds dichterbij de (eerst onzichtbare) finish.
Ook wij hebben last gehad van project die uitlopen. Nu gelukkig niet meer! De bovenstaande denkwijze heeft ons hierbij geholpen. We delen graag onze implementatie hiervan.
Structuur. Van groot -> klein.
Hoe verdeel je het maken van een groot software systeem dan in overzichtelijkere kleinere problemen?
1. De scope (maanden tot jaren)
Een team werkt goed wanneer elk lid eenzelfde doel voor ogen heeft. In dezelfde gedachtegang: een samenwerking werkt goed wanneer beide partijen naar hetzelfde einddoel streven. Vóórdat een samenwerking vorm krijgt is het dus erg belangrijk dat hier over gesproken wordt. Bij aanvang is het niet belangrijk om te bespreken welke werkzaamheden precies uitvoerig moeten gebeuren; het is veel belangrijker dat beide partijen straks aan hetzelfde probleem gaan werken. Eerst moet de scope (omvang) van het project duidelijk worden.
2. Fases (weken tot maanden)
Pas als de scope van het project duidelijk is (en dit kan soms langer duren dan dat je verwacht), is het tijd om hét grote abstracte probleem te compartimentaliseren. Met de scope van het project in je achterhoofd kan het al best snel duidelijk worden wat de eerste stappen zijn. Deze eerste stappen vertalen zich naar fase 1. Het hoeft op dat moment nog helemaal niet duidelijk te zijn wat er in fase 2 aan bod gaat komen — dat wordt pas tijdens de eerste fase duidelijk. De oplevering van één fase: een release versie van het systeem.