De onweerstaanbare verleiding van een generieke oplossing

Architecten vallen vaak in de valkuil van genericiteit: er zijn vergelijkbare toepassingen nodig dus pakken we het efficiënt aan en beginnen met een generieke, herbruikbare basis.

Het is een verleidelijke redenering die projecten in grote problemen brengt. De veronderstelling is dat je vooraf, op papier, kunt bepalen wat generiek gemaakt moet worden, zo precies zelfs dat je er software voor kunt maken. “No one is that smart,” stelden Don Roberts en Ralph Johnson al in 1996. En de miljoenen verslindende doch gefaalde pogingen om een multi-wetsysteem of een multi-regelingensysteem te maken tonen dat aan.

Beginnen met het generieke leidt tot lange discussies over abstracte concepten. De oplossing wordt mooier en ambitieuzer, omdat er altijd iets te vinden is dat misschien óók nodig is. En ingewikkelder, omdat met allerlei uitzonderingssituaties rekening moet worden gehouden. Als er dan ontwikkeld wordt, blijkt altijd dat er alsnog dingen zijn waar niet aan gedacht was, zelfs rond fundamentele aannames.

De aloude rule of three stelt dat je ervaring nodig hebt om een generieke toepassing of een raamwerk te maken. Voordat je aan generalisatie begint, moet je tenminste drie concrete toepassingen hebben gemaakt. En zelfs dan is generiek altijd moeilijker. Er ontstaan meerdere niveaus van programmeren, configureren of zelfs genereren. Met elk niveau wordt de ondersteuning door ontwikkel- en testtools lastiger en kunnen minder ontwikkelaars de complexiteit aan. Eindgebruikers zien vooral de beperkingen van een oplossing die net niet goed past of ze raken teleurgesteld omdat veel inspanning nodig is om het generieke stuk “af” te maken.

Generiek klinkt efficiënt, maar het is complex.

Referentie: Don Roberts, Ralph Johnson: Evolving Frameworks: A Pattern Language for Developing Object-Oriented Frameworks. In: Proceedings of the Third Conference on Pattern Languages and Programming. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.46.8767&rep=rep1&type=pdf