mei 22, 2017

Eenvoud is de waarheid

Ik begin mijn blog met een (ietwat) gedurfde uitspraak: “Alleen een eenvoudig ontwerp is een goed ontwerp”.

In mijn rol als applicatie architect heb ik de ontwerpen van veel IT-applicaties gezien en ook heb ik zelf veel applicaties of onderdelen ontworpen. Daarom heb ik vaak over de volgende vraag nagedacht: Wat is een goed ontwerp?

Net zoals een nieuw gebouw niet zonder ontwerp gebouwd kan worden, kan ook een IT-applicatie niet zonder ontwerp gebouwd worden. Het doel van een ontwerp is meervoudig, het is bijvoorbeeld bedoeld:

  • om de betrokken belanghebbenden te overtuigen dat de applicatie voldoet aan de bedrijfsbehoeften;
  • om het ontwikkelteam te helpen bij het implementeren van de applicatie;
  • om ervoor te zorgen dat de applicatie op een solide en – tegelijkertijd – uitbreidbare basis wordt gebouwd;
  • om te voorkomen dat stukken worden gedupliceerd, en – in plaats daarvan – herbruikbare onderdelen worden geïdentificeerd;
  • om ervoor te zorgen dat de applicatie transparant is en kan worden onderhouden (ook door ontwikkelaars die niet bij de initiële ontwikkeling betrokken waren).

Het is een uitdaging voor een architect om aan al deze doelstellingen te voldoen. Het ontwerp moet voor een grote groep mensen met verschillende achtergronden begrijpelijk zijn. Dat is alleen mogelijk als… het ontwerp eenvoudig is. Of de architect moet in ieder geval in staat zijn om de ideeën zodanig te organiseren, dat het bedoelde publiek het als eenvoudig ervaart. Enerzijds betekent dit dat de architecten in staat moeten zijn om het juiste (sub-)bouwblok te bepalen en aan te geven wat de juiste technieken zijn die moeten worden gebruikt. Anderzijds betekent dit dat hij ook de juiste visualisatietools moet kunnen gebruiken, zoals overzichtsbeelden, interactieschema’s, processtromen, UML-schema’s, etc.

Uit ervaring weet ik dat als het publiek een ontwerp moeilijk kan begrijpen, je het beter kunt aanpassen. Bijvoorbeeld door onderdelen van het ontwerp in kleinere stukken op te delen. Of door visualisatietools beter te gebruiken. En soms is het zelfs beter om een zeer flexibel, doch abstract ontwerp te vervangen door een minder generiek, maar begrijpelijker ontwerp. In zo’n geval wordt het verlies van de genericiteit terugverdiend met een ontwerp dat

  • beter te begrijpen is,
  • sneller te bouwen is,
  • minder kwetsbaar is (en daarom resulteert in minder testen op productiefouten),
  • en beter te onderhouden is,

hetgeen, naar mijn mening, de karakteristieken zijn van een goed ontwerp van een applicatie.

Maar wat als het gaat om een echte complexe applicatie? Dan is het de uitdaging om het op te splitsen in kleinere onderdelen met eenvoudige ontwerpen.

Dit heeft me tot de conclusie gebracht dat “Alleen een eenvoudig ontwerp een goed ontwerp is”. Of in andere woorden “Eenvoud is de waarheid”! Of is mijn perceptie van de waarheid te eenvoudig?

Gerelateerd