Projectaanpak

Het doorlopen van een software project is de uitvoering van een complex proces dat we hebben beschreven in onze projectaanpak. We hebben hierin 2 grote fases geidentificeerd, de analysefase en een implementatiefase.

Analyse fase

In eerste instantie organiseren we enkele intake gesprekken om een beeld te vormen van de klantvraag. Op basis hiervan stellen we een offerte voor analyse op die de effort beschrijft die we nodig achten om een gefundeerde inschatting te kunnen maken van de kostprijs en timing van de implementatie van het project.

Na goedkeuring van deze offerte kan de analyse fase van start gaan. Hierin gaan we een analyse uitvoeren van de gewenste functionaliteiten en indien nodig kijken we hiervoor naar de huidige situatie (AS-IS) en omgeving. Er worden workshops gehouden om een goed beeld te vormen van de requirements op functioneel gebied. Indien het om een project gaat met een gebruikersinterface, nemen we ook al een UX-design mee in deze fase.

Hierna volgt een technische analyse om te bepalen hoe we de oplossing willen bouwen. Naast de applicatie architectuur wordt hier ook de nodige aandacht besteed aan het inpassen van de nieuwe applicatie in het bestaande IT-landschap van de klant, of er nood is aan datamigratie, de securitycontext waar we mee te maken hebben enz…

Hoe ver de analyse moet gaan, is steeds een evenwichtsoefening tussen net voldoende informatie hebben om een goede budgetinschatting te kunnen maken en niet te diep te gaan in de details omdat dit tijdrovend is maar vooral ook de wet van het voortschrijdend inzicht in de weg staat.

Belangrijk is alvast dat de mogelijke risico’s, de scope en het technisch ontwerp gekend zijn. Qframe zal daartoe ook een replay-sessie met de klant houden, zodat er gemeenschappelijk begrip, inzicht en consensus is over de project scope.

Het resultaat van deze fase is een offerte voor implementatie die bestaat uit een functionele analyse, een technisch ontwerp, een gefundeerde inschatting van kostprijs en timing, en een product backlog die als leidraad dient en dieper uitgewerkt wordt tijdens het verdere verloop van het project.

Onze geprefereerde manier van samenwerken is een vaste prijs dynamische scope context waarbij een gezond evenwicht wordt gevonden tussen de noodzakelijke behoefte aan het kennen van een budget vóór aanvang van het project enerzijds en het natuurlijk laten groeien van de software op een iteratieve Agile manier anderzijds.

Implementatie fase

Na goedkeuring van de offerte voor implementatie starten we met de effectieve implementatie van het project.
Merk trouwens op dat we – zeker voor grotere projecten – altijd zullen proberen om die op te splitsen in meerdere fasen of modules. Dit om de risico’s aan beide kanten te beperken en toe te laten het wederzijds vertrouwen langzaam op te bouwen.

Onze werkwijze tijdens de implementatiefase is gebaseerd op de Scrum methodologie en de Agile principes. Zo stellen we het incrementeel opleveren van werkende en waardevolle software voor de klant, voortschrijdend inzicht, samenwerking en open feedback in de aanpak centraal.

Volgens de Scrum principes wordt de ontwikkeling opgedeeld in ‘sprints’ met een vaste tijdsduur en kent dit een cyclisch verloop. Voor elke sprint bepaalt de Product Owner de prioriteit van de gewenste stories op basis van business value. Bedoeling is om op het einde van de sprint een bruikbaar ‘product’ te hebben voor de ‘business’, dat kan geëvalueerd, getest of in gebruik genomen worden. De scope zelf en de prioriteit wordt bij elke sprint herbekeken of verder verfijnd en uitgewerkt, zodat het project kan bijgestuurd worden bij een wijzigende context of door nieuwe inzichten. Elke sprint heeft een aantal communicatiemomenten zoals de sprint planning, de dagelijkse stand-ups met het ontwikkelteam, de sprint demo’s en de retrospectives waarbij teruggekeken wordt op wat goed ging en wat nog beter kan in de volgende sprints. Samenwerking, betrokkenheid en openheid zijn duidelijk de sleutelelementen in deze sprints.

Nazorg

Na oplevering van het project voorzien we nazorg en ondersteuning. De concrete invulling is afhankelijk van het al dan niet aanwezig zijn van developers van de klant in het projectteam. Alleszins zorgen wij voor beschikbaarheid van (een deel van het) team om bugs die na oplevering nog naar boven komen aan te pakken zolang nodig is.
Merk op dat dankzij de agile projectaanpak en de nauwe samenwerking tijdens de implementatie zelf hier typisch veel minder issues naar boven komen dan bij een ‘klassieke’ projectaanpak.

Productieproces

Deze gehele flow hierboven hebben we uitgedetailleerd tot ons productieproces. Dit bestaat uit een duidelijk gedefinieerde set van meer dan 200 activiteiten die we bij ieder project van a tot z uitvoeren. Alleen op die manier kan je zeker zijn dat ieder project goed loopt en er geen problemen opduiken. Alleen zo kan je op ieder project een gelijkaardig niveau van kwaliteit leveren.

Maar we verliezen hierbij de agile principes niet uit het oog. Het is geen benauwend keurslijf. Ieder project is ten dele anders, en zijn er bepaalde activiteiten op een bepaald project niet nodig, worden ze ook niet uitgevoerd. Belangrijkste is dat er wel over nagedacht wordt.

Dat productieproces is ontstaan uit de praktijk en wordt gedragen en continu verder ontwikkeld door onze teams op basis van bijkomende inzichten. Het is een kapstok waarrond veel kennisdeling plaatsvindt tussen de teams. Het is de enige manier om te voorkomen dat ieder team alles moet leren door alle problemen in de praktijk zelf aan den lijve te ondervinden.