Software

Motivation — Was mich antreibt

Softwareentwicklung hat mich schon als Schüler gereizt, und folgerichtig habe ich auch Informatik studiert, und arbeite heute als Softwareentwickler.

Die Herausforderung ist immer eine eigentlich ziemlich doofe Maschine dazu zu bringen, interessante Dinge so zu tun, wie sich der Entwickler das vorstellt. Und die Maschinen machen auch das, was man ihnen sagt, nur manchmal ist das, was man ihnen sagt, nicht dass was man glaubt ihnen gesagt zu haben. Wenn man also 2 und 2 addiert haben möchte, dann sollte man besser nicht 2 + 3 ins Programm schreiben.

Wichtig ist auch, dass die Entwicklung nicht stehen bleibt. Es gibt immer neue spannende Entwicklungen, neue Hardware, neue Programmiersprachen und damit immer neues zu lernen, und das macht für mich den Reiz meines Berufs aus.

Alles kann man sicher nicht lernen, dafür reicht ein Menschenleben nicht mehr, also muss man irgendwo eine Auswahl treffen und Schwerpunkte setzen. Und wenn man etwas braucht was man noch nicht beherrscht gilt: weiter lernen.

Handwerkszeug — Was ich gelernt habe

In meinem Berufsleben habe ich mich zunächst mit unterschiedlichsten Unix-Systemen beschäftigt, ab Mitte der 90er folgte dann ganz organisch Linux. Android nutze ich zwar (noch) nicht beruflich, aber ich finde das so spannend, dass der Kauf meines ersten Android-Smartphones dazu geführt hat, dass die passenden Entwicklerwerkzeuge auf meinen PC gekommen sind. Windows ist nicht so mein Ding, das nutze ich nur, wenn es gar nicht anders geht.

Wenn man unter Unix oder Linux ernsthaft arbeitet, kommt man um shell-Programmierung nicht herum, von daher sind die Bourne-shell und ihre Abkömmlinge bis hin zur bash für mich seit langem vertraute Werkzeuge, die gut in der Hand liegen, und mit denen ich gerne arbeite.

An Hochsprachen habe ich im Studium Fortran und Cobol gelernt – und nie wieder gebraucht. Was ich beruflich von Anfang an nutze, ist C und seit über 10 Jahren auch Java. Und das sind nur die drei wichtigsten Vertreter, ansonsten gibt es noch eine recht lange Liste. Wenn nichts dazwischen kommt, mache ich mich demnächst daran Python zu lernen.

Um Programmtexte zu bearbeiten braucht man einen Editor: meine Wahl ist der vi bzw. heute der vim. Für die Java-Entwicklung nutze ich Eclipse, und auch die ersten Android-Entwicklungen habe ich mit Eclipse gemacht. Da die (nähere) Zukunft dafür Android-Studio heißt, werde ich das jetzt verstärkt einsetzen.

Was braucht man noch: Buildsysteme wie make, ant oder grunt, Sourceverwaltungssysteme wie cvs, svn oder git.

Und dann braucht man eigentlich nur noch eine Idee, was man machen möchte.

Ergebnisse — Was ich gemacht habe

Für meine Arbeitgeber habe ich in zwei Bereichen gearbeitet: einmal ein Softwarepaket zur Lohn- und Gehaltsabrechnung und zweitens mehrere Einzelhandelswarenwirtschaftssysteme. Klingt etwas trocken, aber speziell das zweite Warenwirtschaftssystem, war ein Highlight weil ich hier die Chance hatte in einem kleinen Team ein völlig neues Produkt mit einer modernen Programmiersprache (Java) zu schaffen.

Daneben habe ich bei meinem derzeitigem Arbeitgeber den ersten Webserver aufgesetzt, und auch sonst an einer Reihe von internen Projekten mitgearbeitet.

Zeigen kann ich das leider alles nicht.

Aber einige Dinge gehen dann doch.

Zu drei OpenSource-Projekten habe ich bislang kleinere Beiträge geleistet.

  • 1999 habe ich zum Apache-Webserver (damals Version 1.3) ein Autorisierungsmodul geschrieben. Leider bin ich bislang nicht dazu gekommen, es an die 2.x-Versionen von Apache anzupassen, von daher ist diese Modul in seinem derzeitigen Stand nutzlos, aber vielleicht schaffe ich es ja doch noch mal. Hier ist mod_auth_udp.
  • 2000 habe ich für firmeninternes Projekt zur Überwachung von IT-Resourcen das Programm dhcpcd um eine Option -T erweitert, um zu prüfen ob ein DHCP-Server erreichbar ist. Hier das (historische) Changelog.
  • 2008 konnte ich einen kleineren Fehler im PostgreSQL-Datenbankserver bereinigen. Der Fix wurde im Release 8.3.1 eingebaut.

Und dann gibt es noch zwei eigene Entwicklungen, die ich hier vorstellen möchte.

  • 2012 habe ich ein kleines Logikspiel – bridges – für Android neu implementiert. Die Versionen für Android ab Version 4.0 und Android ab Version 2.3 stehen zum Download bereit.
    Warnung: die Installation von Paketen aus nicht offiziellen Quellen kann Gefahren bergen. Die Pakete sind nach bestem Wissen „sauber“ aber ich kann trotzdem keine Garantien übernehmen.
  • 2013 habe ich im Rahmen von „30 Jahre c't“ an einem Programmierwettbewerb teilgenommen. Das Ergebnis ist hier.
  • Und auch die Neugestaltung meiner Homepage ist ein öffentlich sichtbares Ergebnis.