Follow my new blog

Donnerstag, 26. Februar 2009

Code bubbling - Von der Software zur Schaumware

Was passiert mit Code unter Druck? Er wandert ins UI. Das ist eine Erfahrung, die ich gerade in der letzten Zeit immer wieder gemacht habe. Wenn ich mir Code in Projekten oder auch in Übungsaufgaben ansehe, dann findet der sich in umso größerer Menge im UI oder UI-nah, je höher der (Termin)Druck im Projekt ist. Wie Bläschen in der Limo wandert er nach oben in die Präsentationsschicht (wenn man in Schichten denken will).

Ist ja auch klar: Wo keine Zeit ist, da fehlt Muße zum Denken. Ohne Denken, keine Planung. Ohne Planung, keine Vorstellung darüber, wie Code organisiert sein könnte.

Die einzige Struktur die zwangsweise jedoch immer vorhanden ist, ist die Struktur des UI. In Ermangelung von Alternativen trägt man also Code in die durch das UI vorgegebenen Strukturelemente (Steuerelemente) ein.

Das UI wird damit quasi zur Blume der Software: Dort schäumt der ganze Code, für den man in Ermangelung anderer Strukturelemente grad keine Zeit hatte, einen geeigneteren Ort zu finden.

Aber wie mit dem Schaum im Glas ist es schwer, den Code im UI in tiefere Schichten zu drücken. Ist er erstmal dort oben, dann bleibt er dort auch. Der Schau auf dem Bier verschwindet irgendwann zwar von allein, die Codeblasen im UI jedoch nicht. Und je länger der Druck im Projekt anhält, desto mehr Code, der eigentlich tiefer angesiedelt sein sollte, blubbert nach oben.

So ist es denn kein Wunder, dass manche Software eigentlich Schaumware (neudeutsch: foamware) ist.

Schade . Denn zumindest minimale Strukturen unterhalb des UI zu finden, in und an denen Code auch unter Druck geeigneter und vor allem leichter testbar aufgehängt werden kann, ist gar nicht so schwer. Sogar mit ein bisschen "mechanischem" Separation of Concerns ist da schon einiges zu erreichen. Denn eines ist gewiss: Code in einem Eventhandler eines Steuerelementes ist nie eine gute Sache, wenn der Code nicht unmittelbar mit dem Steuerelement oder seinen "Geschwistern" im UI zu tun hat.

Prost!

Kommentare:

ukoenig hat gesagt…

Beim Foamware-Bier kann man immerhin noch etwas warten, bis es trinkbar ist. Das geht beim Code leider nicht ;)

Anonym hat gesagt…

Hi Ralf,

die wunderbare Methapher verstärkt die Feststellung eindrücklich. Du hast ja letztes Jahr einen guten Artikel über Druck und seine negativen Folgen geschrieben, diese Beobachtung fügt sich da nahtlos ein.
Das die Ursache vielerlei Übels in der Sotwareentwicklung im Termindruck liegt, der Nachdenken, Reflektieren, Ausprobieren und auch Irrwege korrigieren verhindert, wird viel zu gering bewertet und publizistisch zu selten aufgegriffen.
Das mag an einer Form der Kluft zwischen Sales / Management und Entwicklung liegen. Da sich IMHO beste Qualität und Zeitdruck ausschliessen, sollte jeder der von Qualität spricht auch für die notwendige Zeit sorgen - also auch der Kunde.

Viele Grüsse

Joachim

P.S.
Ich stelle mir gerade vor, der UI-Code würde genauso verschwinden, wie der Schaum auf dem Bier - plötzlich geschieht nichts wenn der Button geklickt wird. Der Kunde ruft beim Support an und der Helfer sagt ganz lapidar: "Ach, das kennen wir schon, da ist jetzt der UI-Code weg."

Ralf Westphal - One Man Think Tank hat gesagt…

@Joachim: Ja, der Zeitdruck... Nicht, dass wir nicht alle wüssten, dass (Zeit)Druck Qualität grundsätzlich im Wege steht. (Außer, wenn geringer Zeitverbrauch eben das Qualitätskriterium ist wie beim 100m Lauf.)

Buchhaltung, Schuhreparatur, Tellerwaschen... all das wird schlechter gemacht, wenn Zeitdruck herrscht. Softwareentwicklung ist aber nochmal anders: Softwareentwicklung ist hochkreative Arbeit - im Gegensatz zumindest zum Tellerwaschen. (Ja, ich weiß, Buchhaltung kann auch sehr kreativ sein ;-)

Kreative Arbeit jedoch ist noch sensibler gegenüber Druck als andere. Denn wenn Stress bzw. das dabei ausgeschüttete Adrenalin eines bewirkt, dann ist das Tunnelblick und Denkblockade. Beides ist der Kreativität nicht gerade förderlich. Nein, beides steht sogar im Gegensatz zu Kreativität.

Ergo: Zeitdruck in der Softwareentwicklung ist doppelt kontraproduktiv.

Aber wie das dem Management und dem Kunden beibringen? In kleinen Schritten. Mal schauen...

Zum PS: Sehr schön! :-) Der UI Code ist weg. Verdunstet, die Anwendung ist fade geworden. Wie ein Sekt, der länger offen steht.

-Ralf