30 November 2008

Die Requirements Falle...

jetzt bin ich doch tatsächlich mal wieder selbst reingetappt.
Mein aktuelles Projekt ist, grob beschrieben, ein MDA Tool zur Codegenerierung aus UML Diagrammen. Ich war mir ziemlich - aber nicht völlig - sicher, dass die Definition eines Attributes im Klassendiagramm dem Schema type:name (ähnlich JAVA/C* Notation: int myNumber) folgt und habe meinen Stringparser entsprechend geschrieben. Natürlich nicht nur für die Attribute, sondern auch für die Operationen.
Tja, als er fertig war, habe ich die 2 Minuten aufgewendet nachzuschlagen und dabei herausgefunden, dass die Notation genau andersherum ist, also: name:type (bsp: myNumber:Integer). Inklusive Testing ein schlapper Tag Extraarbeit für 2 gesparte Minuten nicht nachsehen. :(

Naja, ich hätte es ja wissen müssen... :D

Labels: ,

25 November 2008

Der Weg des Programmierers

Heute möchte ich meinen Blog mal Nutzen, um meine Gedanken ein bisschen zu ordnen und ein wenig Rückschau und Ausblick zu betreiben.

Diese Woche bin ich, eher zufällig über Joel on Software gestolpert und habe einige interessante Artikel gelesen. Ein Term, den Joel immer wieder benutzt, ist der des "Great Developers". Aus seiner Sicht, als Inhaber einer Softwarefirma, geht es ihm natürlich darum, diese selten, großartigen, Best of the Breed Programmierer anzuwerben.

Natürlich stellte sich für mich die Frage, was einen großartigen Programmierer ausmacht. Ich habe in meinem professionellen Leben schon einige gute, wenige sehr gute, viele schlechte und ein paar richtig schlechte Programmierer kennen gelernt. Aber großartige?

Wie wird man ein großartiger Programmierer? Ein Indiz sollte wohl sein, dass man großartige Software entwickelt (also richtige, wartbare und erweiterbare Software, vielleicht sogar schöne). Aber ich glaube, da steckt noch mehr dahinter: Es dürfte etwas mit der Art des Denkens zu tun haben - wie ein großartiger Programmierer denkt - auf diese Spur hat mich Paul Grahams Artikel über LISP gebracht. Ich vermute ein großartiger Programmierer denkt nicht in den Kategorien seiner Language du Jour oder in abstrakten Architekturen, obwohl im beides bewußt ist, sondern auf mehreren Ebenen gleichzeitig - von High-Level Komponenten bis hinunter zur Speicherbehandlung im Prozessor Cache; in der Sprache in der die Lösung umgesetzt werden soll ebenso wie auf einer Ebene des tieferen Verständnisses von Rechnern.

Die Gretchenfrage ist natürlich, kann man ein großartiger Programmierer werden oder wird man als einer geboren? Prinzipiell gilt natürlich, es ist noch kein Meister vom Himmel gefallen, aber Talent spielt mit Sicherheit eine Rolle.

Wenn ich meinen eigenen Wertegang betrachte, dann wurde mir das Programmieren auch nicht gerade in die Wiege gelegt. Nach meinem ersten Studium war ich bestenfalls ein Programmierer im unteren Mittelfeld (wenn auch wenigstens mit "Ich weiss, dass ich nichts weiss"-Erkenntnis), trotzdem ist aus meinem letzten Projekt eine richtig gute Software geworden und das obwohl die Eckdaten zuerst nicht dafür gesprochen haben (unbekannte Programmiersprache, unbekannte IDE, neue Umgebung (technisch, wie vom Umfeld) und eine unbekannte Domäne).
Jetzt, da ich mein Masterstudium beende bin ich einen weiten Weg gegangen und würde mich durchaus als guten Programmierer bezeichnen, mit berechtigten Ambitionen zum sehr guten (bei aller Bescheidenheit ;-). Natürlich würde ich eher vom Software Engineer, als vom Programmierer sprechen, da dies meiner Meinung nach das Aufgabenspektrum des Informatikers in der Wirtschaft besser wiederspiegelt.
Auf meinem Weg haben mich 3 Persönlichkeiten an meiner Hochschule nachhaltig geprägt und mir vermittelt, dass es in der Informatik ebenso um das theoretische Bild dessen was man tut geht (welches eine fundierte mathematische Grundlage hat), als auch um (programmier-)technische Details, als auch um die Sicht auf das Design und die Architektur, dessen das man zu erschaffen strebt.

Erlauben mir diese Erkenntnisse, ein großartiger Programmierer zu werden? (Ist es nicht schön, ein Studium zu machen, das einem noch Epiphanien ermöglicht... :-)

Ich weiss es nicht, aber es ist ein wahres Vergnügen, diesen Weg zu beschreiten.

Ach ja, kleine Notitz an mich selbst: LISP lernen. :)

Labels: ,