Over modellen. Waar gaat het nu mis?

Het maakt eigenlijk niet zoveel uit wat we doen, wie het doet, hoe het gebeurt en wanneer het gebeurt. Het maakt eigenlijk ook niet zoveel uit wat dat ‘het’ dan is. Er gaat altijd een heleboel mis. We doen enorm ons best om het goed te doen, om het goede te doen en om te leren van onze fouten. Toch slagen we er op de een of andere manier niet in om goede grip te krijgen op waarom zaken nu lopen zoals ze lopen. Vaak denken we dat processen of de techniek niet goed zijn, dat bepaalde mensen het probleem zijn of dat we niet goed kunnen communiceren. Uiteindelijk komen we er achter dat het aanpassen van processen, techniek, mensen of de communicatie niet de ultieme oplossing is.

De reden hiervoor (Het “Waarom?”) is complex, maar eigenlijk ook heel simpel: mentale modellen.

Wat bedoelen we hiermee?

De Amerikaanse theoretisch fysicus David Orlin Hestenes onderscheid 3 werelden:

  • Wereld 1: de werkelijkheid. Echte dingen. Dingen zoals ze objectief zijn.
  • Wereld 2: ons mentale model van de werkelijkheid. Onze interpretatie van de wereld.
  • Wereld 3: een conceptueel model van de werkelijkheid (een vereenvoudiging).

De 3 werelden hebben een grote mate van samenhang.

Ons mentale model (wereld 2) is een persoonlijke perceptie van de werkelijkheid (wereld 1). Het is daarmee voor ieder individu anders. We zien de wereld en de objectieve dingen niet allemaal op dezelfde wijze omdat ons eigen mentale model er een interpretatie aan geeft. En we proberen allemaal de complexe wereld te begrijpen door deze te vereenvoudigen in een conceptueel model (wereld 2). Bij het maken van een conceptueel model gebruiken we ons persoonlijke mentale model.

Een voorbeeld: racen op een circuit

Vraag een coureur om een conceptueel model te maken van een rondje racen op een circuit. Vraag daarnaast ook aan een niet-coureur om datzelfde te doen. Hiervoor zijn een aantal factoren uit wereld 1 aanwezig. Denk hierbij bijvoorbeeld aan de auto, de snelheid, het circuit, de weeromstandigheden, de bestuurder en gevaren en risico’s. Daarnaast heb je te maken met 2 verschillende mentale modellen van een rondje racen. De coureur zal een snelheid van 250 km/h in haar mentale model zien als een rustig tempo zonder reëel risico of gevaar en daarmee gevaar of risico in relatie tot snelheid op een hele andere manier verwerken in het conceptuele model van een rondje racen. Dat zal ook gelden voor bijvoorbeeld de weersomstandigheden. Dat betekent dat de werkelijke wereld (250 km/h en regen) blijven zoals ze zijn en dat er 2 verschillende conceptuele modellen zullen zijn omdat verschillende personen met verschillende percepties van die werkelijkheid, middels hun eigen mentale model, tot een ander conceptueel model van diezelfde werkelijkheid zullen komen.

Als we dit nu plaatsen in het perspectief van software ontwikkeling dan zien we hetzelfde beeld. De uiteindelijke software is iets in de werkelijke wereld, maar tegelijk een conceptueel model van die wereld omdat software onmogelijk alles kan omvatten uit de werkelijkheid. De software is gemaakt op basis van een conceptueel model waarin we enorm ons best doen om te beschrijven hoe iets uit de werkelijke wereld moet worden vertegenwoordigd door software. Zo maken we bijvoorbeeld een conceptueel model voor het ‘openen van een bankrekening’.

Wat gebeurt er dan?

We gaan enorm ons best doen om een interpretatie te maken van de werkelijkheid van het openen van een bankrekening en hieruit een conceptuele modellen te maken. Denk daarbij bijvoorbeeld aan het bedenken en beschrijven van features, user stories, design schetsen, testen en datamodellen. Deze conceptuele modellen representeren dan gezamenlijk de werkelijkheid. Er lijkt weinig aan de hand op dit punt. Toch is er heel veel aan de hand. Ten eerste is een model altijd een versimpeling van de werkelijkheid. Het is onmogelijk om de hele werkelijkheid op te nemen in een conceptueel model. Als we dat zouden willen doen, dan zouden we niets kunnen maken omdat het model nooit gereed zal komen. Het tweede essentiële probleem is dat het conceptuele model is gecreëerd door ons mentale model dat een persoonlijke individuele  interpretatie heeft van de werkelijkheid, maar dat zelf ook weer een begrip is van andere conceptuele modellen. Een voorbeeld:  je mentale model over het maken van toast wordt ondersteunt door je begrip over het conceptuele model van bijvoorbeeld brood en warmte). Laat 5 personen een conceptueel model maken van iets simpels als het maken van toast en de resultaten zullen je verbazen.

 

Het laatste probleem is dat we vervolgens het enigszins ‘dubieuze’ conceptuele model gaan omzetten in software waarbij opnieuw verschillende personen, met ieder hun eigen mentale modellen, betrokken zijn. Zij interpreteren de conceptuele modellen allemaal op basis van hun belevingswereld. Daar helpt geen enkele uniforme wijze van opschrijven of modelleren tegen. Het is de potentiële garantie op mislukking.

Is het dan allemaal kommer en kwel of is er hoop?

Niet alles gaat fout, we hebben inmiddels de nodige ervaring met het ontwikkelen van software en op bepaalde vlakken vertonen onze mentale modellen (en als afgeleide daarvan ook de conceptuele modellen) een mate van overeenkomst in de perceptie van de werkelijke wereld. Daarnaast gaan we ook steeds meer en meer als team samenwerken om in kleine stappen software te ontwikkelen om daarmee sneller inzicht te krijgen of ons conceptuele model dat verworden is tot software ook werkt in de werkelijke wereld.

Daarnaast zou het enorm helpen om bovenstaand figuur van de modellen in ieder team aan de muur te hangen om een constant bewustzijn te creëren hoe modellen werken en wat de invloed is op waar we dagelijks aan werken. Hiermee erkennen we dat we allemaal de werkelijkheid zien door een bril die ons eigen mentale model heet.

 

Mentale modellen zijn onderdeel van de training Agile- United Certified Practitioner in Agile Testing en van Agile-United Certified Specialist in Agile Testing. Wil je hier als software tester meer over weten of beter in worden, kijk dan op onze site en volg de training.

Naar het overzicht

Alain Bultink | Directeur
alain@deagiletesters.nl
06-15361077

Benno Kuipers | Directeur
benno@deagiletesters.nl
06-52600438

James Johnson | Managing Director
james@deagiletesters.nl
06-15022781