Biografie

Als Kind hatte ich viel Freude daran die Großeinkäufe unserer Familie im Keller in die Vorratsregale einzuräumen. Eine wiederholbare Struktur habe ich dabei jedoch nicht entdeckt. Optimal war jedes Mal anders. Mit 12 Jahren malte ich ganze Nachmittage Baum-Strukturen auf Reste von Tapetenbahnen, um die Lösung für Aufgaben aus einem Buch über kreatives mathematisches Denken erschließen zu können.

Mein erstes, eigenständige Computer-Programm habe ich mit 14 Jahren auf einem ausgedienten Heimcomputer meines Bruder anhand des beiliegenden Handbuches in Basic erstellt, ohne das Buch jemals zuvor gelesen zu haben. Dazu genügten mir die Tipps aus dem gerade begonnen Informatik Unterricht in der Schule. Der CPC 6128 verfügte über eine 8 Bit Prozessor-Architektur, war mit großzügigen 128 kB Hauptspeicher und einem flinken 3,5 Zoll Diskettenlaufwerk ausgestattet. Nach ungefähr 2 Stunden hatte ich eine Simulation auf Basis einer Turtle-Grafik programmiert, die die Olympischen Ringe in unterschiedlichen Grüntönen zentriert auf den Bildschirm malte. Ein Kommandozeilenparameter des Programms variierte die Animationsdauer.

Während meines Studium der Physik habe ich meine Programmierfähigkeiten im Nebenfach Informatik im Grundstudium und im zweiteiligen Kurs Computation and Physics im Hauptsutdium weiterentwickelt. Der Kurs bot schöne Programmier-Aufgaben zur Berechnung physikalischer Modelle. Mein persönliches Highlight war die Berechnung der Hystereseschleife eines ferromagnetischen Clusters mithilfe von Monte Carlo Algorithmen und mein Vortrag zum Thema. Unsere Lösungen programmierten wir in C, bis wir feststellten, dass sich Datenstrukturen in der interaktiven Eingabe von Matematica viel einfacher erstellen ließen. Auch für die Verarbeitung der Messdaten meiner Diplom-Arbeit zu einem Thema aus der Oberflächen-Physik erwies sich C als ungeeignet. Mit der gerade aufkommenden, dynamisch getypten Script-Sprache Perl 5 ließen sich die Daten im Handumdrehen extrahieren, zusammenfassen und normieren. Den Rest der Nachmittage füllten Fit-Analysen der gemessenen Photo-Emissions-Spektren von Lanthanid-Metalloberflächen.

Nach Abgabe meiner Diplomarbeit mit dem Titel Physikalische und Chemische Eigenschaftend stickstoff- und sauerstoffbedeckter Lanthanid-Metalloberflächen und dem erfolgreichem Abschluss meiner Diplomprüfungen im Sommer 2000 fand ich mit meiner Perl-Erfahrung schnell einen Job. Zusätzliche Kenntnisse der Perl-Module CGI und DBI waren hinreichend. Das erste Projekt, für das ich ab 2001 als Softwareentwickler arbeitete, betrieb die Weiterentwicklung eines aus Down Under stammenden, webbasierten Learning Managment System - hauptsächlich für eine gerade gegründete Berliner Internet Akademie. Das System unterstützte eine Vielzahl Relationaler Datenbanksysteme, genutzt wurde aber nur Oracle 8. Die bis zu 4500 Zeilen langen Perl 5 Skripte waren prozedural aufgebaut und vermischten Anwendungslogik mit dynamischen SQL-Befehlen, HTML, CSS und Javascript zu schwer zu wartenden Code-Klumpen. Die damit einhergehende mangelnde Flexibilität der Software trug sicherlich zum Scheitern des 20 Millionen Euro Projektes bei. Das System wurde lediglich an einen weiteren Kunden ausgeliefert und der Akademiebetrieb erreichte nie die angestrebten 30.0000 aktiven Nutzern. Da das Mangement die Neuimplementierung der Software nicht wünschte, schieb ich für das Projekt Erweiterungen, wie einen TCP/IP basierten Chat-Server, setzte Schnittstellen um, betrieb Refactoring, managte und deployte Releases. Zudem agierte ich nach Einführung eines nach ISO 9001 zertifizierten Qualitätsmanagementsystem als KVP-Manager. Zu guter Letzt beschäftigte mich die Übertragung von Anwendungsdaten zwischen verschieden Instanzen. Als das Projekte endete, wurde ich nicht entlassen und in die Planung des Folgeprojekts eingebunden.

Für das Folgeprojekt, einen mit der Akademie zuvor verschmolzenen und nun wieder eigenständigen Verlag, habe ich ab 2005 meine ersten beiden eigen Software-Systeme entwickelt. Dazu migrierte ich zunächst Teile der Datenbank des Learning Managment Systems nach PostgreSQL. Drumherum baute ich eine modulare und dynamische Web-Anwendung mit PHP, um die Lerninhalte der Akademie und die neuen Titel des Verlages werbefinanziert als Lern-Kurse ins Internet zu bringen und die inhaltsgleichen Medien Buch, Epub, Lernprogramm (CBT) und SCORM Package zu bewerben und über das Shopmodul zu verkaufen. Alle Webseiten wurden auf dem Webserver erstellt, inhaltsorientierte Seiten als statische HTML-Seiten in einem sogenannten Web-Cache vorgehalten. Das System adaptierte Konzepte aus dem gerade hypenden Webframework Ruby on Rails, um die Programmierung der zahlreichen CRUD-orientierten Module zu beschleunigen. Um die Druckvorlagen in PDF, Lernproramme als interaktive HTML-Anwendung auf CD, ePubs und ebenfalls Interaktiven Lernmodule für SORM-fähige Lernplattformen zu erzeugen, schuf ich ein Build-System, das automatisch Single Source Publishing für die von den Autoren erstellten Inhalte in Form von XML-Dokumenten und Medien-Dateien betrieb. Als autorenseitige Schnittstelle diente eine Instanz des Revisionskontrollsystem Subversion. Das System suchte alle 5 Minuten per GNU Make nach geänderten Daten, die von eigens geschriebenem XSLT zu den Verlagsprodukten gewandelt wurden.

Zusammenspiel meiner Subsysteme mit dem Verlag
Abbildung 1: Zusammenspiel meiner Subsysteme mit dem Verlag

Nach ca. 4 Jahren war die Arbeit an dem Verlagssystem im großen und ganzen abgeschlossen, es stellten sich mir aber Fragen bezüglich Software-Design, -Architektur und Programmiertechnik, die ich bei meiner täglichen Arbeit nicht beantworten konnte. Nach meinem Projektaustritt begann eine Phase der Neuorientierung. Klar war: Tägliche Routinen führen in einen starren Fluss, der es nicht ermöglichte sich im gewünschten Maße weiterzuentwickeln.. Das Arbeiten in einem Großraumbüro eines Berliner Startups bestätigte meine Eindrücke. Bezahlt wurde hier das Abarbeiten. Fragen wurden mit der Erteilung von Workitems beantwortet. Die Enge und Nähe zu 250 Kollegen verlangte eine erhöhte Anpassungsbereitschaft. Das Ringen um Souveränität war allen beteiligten anzumerken. Mit meinen Kollegen programmierte ich Datenbank-Routinen in PL/pgSQL für die Frontend Entwickler des Projektes, sowie Algorithmen zum Matchen von Paaren. Es gab weder Softwaretests noch hilfreiche Tools zur Analyse des Datenbankschemas. Nach dem ich mit einem Kollegen eine Prozedur erweiterte, kam es zu einem Ausfall im Bezahldienst woraufhin ich ein Tool schrieb, um alle von einer Routine abhängenden Routinen in Baumform darzustellen. Aber das Team zeigte nur wenig Interesse an meiner Arbeit.

Glücklicherweise verließ ich diesen Kontext wieder schnell und suchte meine Antworten als Schreiber und Autor von Open-Source-Software zu finden. Die ersten Schritte ging ich auf der Finca einer Freundin in Mallorca. Ich begann über meine Arbeit zu schreiben. Meine Texte überzeugten und ich fand schnell einen Verlag und wurde als Redner auf die deutsche PostreSQL-Konferenz 2011 eingeladen. Für das Linux-Magazin schrieb ich in den folgenden Jahren hauptsächlich über Javascript-Frameworks. Die Artikel waren eine sehr gute Schreibübung und ich bekam früh Einblicke in Angular, React, Nodejs, Typescript oder WebRTC. Ein inhaltlicher, roter Faden meiner Tätigkeit bildete die Suche nach dem Tool zur Erstellung der universellen App, kurz - eine App, ein Code alle Plattformen. Leider sind Artikel zu kurz um daraus einen tiefen Nutzen ziehen zu können, aber das Arbeiten mit gesprochener Sprache beflügelt Geist und Gefühlswelt angenehm. In dieser Phase begann ich auch nach Andalusien zu Reisen, um das Spielen der Flamenco-Gitarre an seiner Quelle im Süden Spaniens zu erlernen.

Parallel zum Schreiben suchte ich nach meinen Antworten in eigenen Open-Source-Projekten unter PHP, Pyhton, Javascript oder Typescript. Diese Projekt lehrten mich Software aus dem Blickwinkel eines anderen Entwicklers zu sehen. Es lief darauf hinaus die versprochenen Features durch Softwaretests abzusichern, wie im Falle meines XML-Formatters. Die versprochenen Formatierungen hätten sich praktisch ohne Softwaretest nicht umsetzen lassen. Umgekehrt hielten die Tests die Software zusammen und ließen sie wachsen. Damit war die erste Antwort gefunden: Ohne Einbeziehung von Tests erbringt die Software-Entwicklung keinen dauerhaften Wert. Die Idee zu dem XML-Formatter ergab sich noch aus meiner Arbeit im Verlag. Buchtexte in Form von Word-Dokumenten, die wir mit Hilfe von Open-Office nach Docbook XML exportierten, um sie anschließend mit einem XSL-Formatter nach PDF umzwandeln wiesen aufgrund vieler falsch gesetzter Leerzeichen einen gestörten Textfluss auf. Aus den folgenden, langwierigen Reparaturarbeiten an den Docbook XML Dokumenten ergaben sich die Formatierungsregeln für einen noch zu erstellenden Formatter.

Als Freiberufler begab ich mich auf die Suche nach Projekt-Aufgaben und lernte dabei zunächst mehr über das Scheitern als über das Gelingen - leider alles an vielversprechenden Projekten. Eines beispielsweise versuchte individualisierte Software für eine wachsende Zahl von Firmenkunden zu schaffen. Das verwendete PHP-Framework tat aber alles dafür die Vorteile der Objekt Orientierten Programmierung zu verhindern. Da Dependency Injection nicht gentutzt werden kann, konnten Variationen nur schwer eingebunden werden. Die Software eines anderen Projektes existierte nur als UML-Diagramm. Das Motto der Projektleiterin lautete: Wer UML kann fängt sich das Programmieren nicht mehr an. Nachdem ich die Kernfuktionlität des Buchungsystem für Bootstouren als Datenbankschema modelliert hatte und zur Implementierung einer App voranschreiten wollte, war sie für mich nicht mehr erreichbar. Ein drittes Projekt wollte langwierige und komplexe Patentstreitigkeiten dadurch vereinfachen, die beteiligten Dokumente zu digitalisieren, unterneinander zu verlinekn und unter den beteiligten Parteien sowie dem Gericht auszutauschen. Das Projekt wurde aber oft umgeplant, so dass eine marktreife Implementierung fraglich erschien.

Mein Beitrag zu dem letzt genannten Projekt bestand in einem Im- und Export Tool in Python für SQL-Server. Dazu entwickelte ich einen generischen Datenmapper der Datensätze auf eine JSON-Grammatik abbildete. Der Mapper wurde von einem Plan angetrieben. Mein Konzept für die Planerstellung: Die gesuchten Daten bilden einen Teilbaum in der Datenbank. Der Teilbaum kann bei Angabe einer Kopftabelle über das Information Schema der Datenbank konstruiert werden. Der Planner erhielt für seine Arbeit Hinweise in Form von Direktiven aus einer Profil-Datei. Wegen fehlender Fremdschlüssel-Beziehungen konnten die Foreign Keys einer Tabelle überschrieben werden. Bisweilen mussten Daten aus Tabellen ausßerhalb des Baumes gelesen werden. Dies ließ sich durch Umkehr von Foreign Key Constraints erreichen.

Das Tool arbeitet mit konfigurierbaren Plänen
Abbildung 2: Das Tool arbeitet mit konfigurierbaren Plänen

Für ein Paar Jahre begleitete ich ein Startup meiner Nachbarn, die voll auf die Mechanismen der Startup Welt setzten. Ihr mühsam zusammengetragenes Kapital investierten sie dann leider in eine iOs-App für mögliche Investoren aus dem Sillicon Valley. Einen Mehrwert zu erwirtschaften blieb dem Projekt bisher verwehrt, da ihr Produkt nicht für die Kunden arbeiten kann. Neben all diesen Irrfahrten fand ich aber auch ein pragmatisches Projekt abseits der Startup-Welt. Hier gings es darum für eine Branche die Abwicklung befristeter Arbeitsverträge zu digitalisieren. Diese Lernfirma setzte darauf schrittweise besser zu werden. Positiv: Anforderungen und Rahmenbedingungen ließen sich mitgestalten.

Auf einem längeren Studienaufenthalt im Süden Spaniens, der meine Fertigkeiten auf der Flamenco-Gitarre erweitern sollte, verband ich Arbeiten und Lernen an einen anderen Ort in einer anderen Kultur. Die Erfahrungen und Überlegungen aus der geänderten Perspektive vertieften meine Einblicke in die gelingenden Aspekte der Software-Entwicklung, spätestens als ich über das Buch Clean Code von Robert C. Martin stolperte. Zwar meine ich heute immer noch, dass sich vieles an der Programmierung aus der Erfahrung ableiten lässt - aber eben nicht alles, beispielsweise Design Patterns oder Architektur-Prinzipien. Seitdem suche ich verstärkt in der Literatur nach Antworten.