“Bezint eer ge begint”, “eerst denken dan doen”. De gezegden zijn zo oud als Methusalem en toepasbaar in alle vakgebieden. Zo ook in de ICT, waar studenten tijdens hun studie worden overladen met UML-diagrammen, design patterns en het abstraheren van problemen. Toch blijkt dat als puntje bij paaltje komt het formele, technische ontwerpen van code wordt overgeslagen en iedereen zo snel mogelijk begint met het schrijven van slecht doordachte code. We zijn tenslotte ontzettend agile en dat betekent dat we zo snel mogelijk werkende software willen opleveren.
Eerst designen, dan coden
Het probleem ligt in de mindset. Zo gauw iemand de woorden “software design” durft uit te spreken, gaan de nekharen overeind staan en krijgt iedereen spontaan flashbacks naar het waterfall-tijdperk waarin software oeverloos gespecificeerd en ontworpen werd. Tegen de tijd dat de ontwerpen klaar waren voor implementatie was het budget al op en de oplossing achterhaald. Met agile is gelukkig alles beter geworden en werken we “all-inclusive”. We schatten per user story de tijd die het kost om van software van begin tot eind op te leveren, inclusief interactie ontwerp, visueel ontwerp, ontwikkelen en testen. Daar hoort het ontwerpen van de code natuurlijk ook bij!

In tegenstelling tot wat vaak gedacht wordt, hoeft het designen van code helemaal niet zo lang te duren als men vaak denkt. Met een uurtje serieus nadenken over een oplossing kan je de meeste scenario’s en flows al overzien. Als je er goed over hebt nagedacht, kan je deze oplossing overigens ook duidelijk op papier zetten. Hippe tools zoals websequencediagrams.com helpen je daarbij en bevorderen de “deelbaarheid” van jouw software design. Zorg dus dat je ook dat uurtje ontwerpen meeneemt in je planning en maak daar gerust twee uur van, zodat je het design ook door een collega kan laten reviewen. Als je die feedback vervolgens gebruikt om de laatste puntjes op de i te zetten, kan je de oplossing pas echt in een keer goed programmeren.