Wie Software-Entwickler Kathedralen bauen

Mein Rückblick auf ein Vierteljahrhundert Softwareentwicklung

Wenn ich über meine tägliche Arbeit als professioneller Software-Entwickler nachdenke, fühle ich mich an den fiktiven Charakter Tom Builder aus Ken Follets berühmten Roman „Die Säulen der Erde“ erinnert. Als Steinmetz im England des 12. Jahrhunderts reist er auf der Suche nach Arbeit von einer Baustelle zur nächsten. Zu jener Zeit steckte das Bauhandwerk und die Architektur in Europa noch in den Kinderschuhen, und das Fachwissen war spärlich und verstreut. Aber er hat eine Leidenschaft, die ihn antreibt: Der Traum, eine Kathedrale zu bauen, als Opus Magnum seiner Karriere.

Eine Kathedrale bauen war im mittelalterlichen England eine der komplexesten Aufgaben, die man sich vorstellen und meistern konnte. Dasselbe gilt heute für das Entwickeln von Software.1 Und ebenso steckt die Informatik und Software-Entwicklung noch in den Kinderschuhen. Gestern bin ich an meiner Schule vorbeigefahren, wo ich vor 25 Jahren das erste Mal mit HTML und JavaScript in Berührung gekommen bin. Sieben Jahre vorher, nämlich 1991, hatte Tim Berners-Lee das World-Wide-Web erfunden. Wir haben das Frameset-Attribut kennengelernt, noch bevor die Besessenheit von Pixel-Perfektion Tabellen für Layouts missbrauchen konnte. Wir haben mit Linien und Kreisen gespielt und eine Echtzeit-Uhr auf einem JavaScript-Canvas in Netscape gezeichnet. Dann haben wir uns endlich den wichtigen Themen wie Datenbanken und Anwendungen in Borland Delphi gewidmet.

Mittlerweile ist Delphi das nostalgische Relikt einer vergangenen Epoche. Relationale Datenbanken haben die Zeit überdauert und bilden nach wie vor die Grundlage vieler Anwendungen, wie wir tagtäglich nutzen. Das WWW dagegen hat die Welt in nur 30 Jahren komplett verändert, basierend auf HTML und JavaScript. Soviel zu meiner Fähigkeit, die Zukunft vorauszusagen. Dennoch darf man nicht vergessen, dass wir auf Technologien aufbauen, die noch keine 50 Jahre alt sind. Und trotz der Verankerung in der Mathematik wurden die theoretischen Grundlagen wie das Lambda-Kalkül von Alonzo Church, die von-Neumann-Architektur und das abstrakte Berechnungsmodell der Turing-Maschine vor weniger als einem Jahrhundert von genialen Köpfen erarbeitet.

Was bedeutet das für uns, die wir heute großartige Software bauen wollen? Nun, wie die Baumeister der alten Kathedralen müssen wir unser Wissen infrage stellen, um Dinge zu bauen, die sich bisher niemand vorstellen konnte. Gebäude sind eingestürzt, weil der Einfluss des Windes unterschätzt wurde. Genauso müssen wir Fachwissen entdecken und aus Fehlern lernen. Damals wie heute ist Veränderung die einzige Konstante. Wie beim Bau eines Turms, der zu hoch für das ursprünglich vorgesehene Fundament wird, werden Stakeholder die Anforderungen ändern und unsere Software auf eine harte Belastungsprobe stellen. Manchmal wird sie zerbrechen und episch scheitern. Ein guter Entwickler lernt deshalb aus seinen Fehlern. Ein herausragender Entwickler lernt aus den Fehlern anderer.

So wie das Baugewerbe und die Architektur über die Jahrhunderte gereift sind, reift heute auch die Softwareentwicklung. Es tauchen Muster (Patterns) auf, die sich als geeignete Lösung für wiederkehrende Probleme bewährt haben. Andere Lösungen scheinen vielversprechend, werden aber als Sackgassen oder Anti-Patterns identifiziert. Dieses Wissen verbreitet sich und transformiert die Softwareentwicklung von der Kunst einiger weniger Vordenker in ein Handwerk, dass wir beide beherrschen können. Teil dieses Wandels zu sein ist aufregend und lohnend, ein Abenteuer ganz ähnlich dem von Tom Builder im Roman.

Noch einmal zur Architektur: Es gibt da ein paar erstklassige historische Artefakte, wie das Pantheon in Rom oder die Pyramiden in Ägypten. Heute staunen wir darüber, wie sie gebaut wurden, und zweifeln, ob unsere moderne Technik ausreicht, um sie nachzubauen. Sicherlich wird das WWW in den kommenden Jahrhunderten als eines der erstklassigen Artefakte unserer Zeit betrachtet. Wenn Softwareentwicklung also deine Leidenschaft ist: Sei kreativ. Strebe nach Höchstleistungen. Baue deine Kathedrale. Und zögere nicht im Angesicht des Scheiterns. Vielleicht baust du gerade jetzt das monumentale Artefakt unserer Zeit.


  1. angelehnt an Andy Hunt in Pragmatic Thinking & Learning

Softwareentwicklung Architektur Entwurfsmuster Rückblick