The Line must be drawn here – Code Design braucht Diktatoren

by mlaug on 20. Dezember 2011

Code Design ist ein schwieriges Unterfangen. Entscheidungen müssen früh gefällt werden um dem Entwickler Team einen Standard an die Hand zu geben, der es ermöglicht eine Software zu generieren, die auch nach langer Entwicklungszeit wartbar und testbar bleibt. Soll die Software monolithisch aufgebaut werden oder soll man die Komponenten doch lieber dezentral über eine Pipeline ihre Jobs abarbeiten lassen. Es gibt viele Möglichkeiten und grundsätzlich kann man sich sicher sein, dass man zu irgendeinem Zeitpunkt merkt, dass man Fehler gemacht hat und umdenken muss.

Was aber klappt nie? Demokratie…

Hinter einem guten und flexiblen Softwaredesign steht ein Diktator. Jemand der Ahnung vom Werk hat und beim Design ganz klar ansagt, wie die Software zu gestalten ist. Open Source ist eine super Sache und ich plädiere dafür, so viel wie möglich der Community zur Verfügung zu stellen. Ich würde aber niemals behaupten, dass man in der Open Source Gemeinde eine Software findet, die ein sauberes und elegantes Design besitzt. Beispiel? WordPress! Eine Blogsoftware, die so weit verbreitet ist und auf die ich hier selber setze. Aber möchte ich ein Plugin für WordPress schreiben? Um Himmels Willen, Nein! Das Konzept von Hooks und Plugins ist so verwoben, dass man teilweise einen Knoten im Kopf bekommt, wenn man mal einen Blick unter die Haube wagt.

Also, wenn ihr die Verantwortung für ein Softwareprojekt übernehmt und eine klare Vorstellung von der Software habt, dann lasst euch nicht rein reden. Lasst euch vorher beraten, holt euch Ideen von anderen, aber während der Entwicklung gebt klare Richtlinien und lasst niemanden ausbrechen. Denkt daran, Entwickler sind Schweine, die machen das Code stinkt! Euer Software Design ist dabei wie ein großer Besen, der von selber sauber macht…

Zieht die Linie früh und lasst sie niemanden überschreiten!

{ 3 comments… read them below or add one }

RetroMetro Januar 9, 2012 um 10:46

Ich denke, eine “Linie” kann man auch demokratisch entwickeln, muss dann aber aufpassen, dass diese nicht überschritten wird. Das Problem an der Sache ist doch viel mehr, dass man bei Gemeinschaftsentscheidungen auf einmal mitten im Arbeitsprozess nochmal auf vermeintlich bessere Ideen kommt, und das Konzept dann halbherzig umgesetzt wird. Das mehr Köpfe mehr Ideen produzieren ist dabei Fluch und Segen zu gleich. Auf der einen Seite erhält man so Ideen auf die ein einzelner so nicht gekommen wäre, auf der anderen Seite könnten diese das System viel zu komplex gestallten, besonders, wenn es schon work in progress ist.
Ich würde eher darauf plädieren, dass ein Konzept demokratisch entworfen werden kann (an de Stelle stellt sich natürlich auch die Frage der Konsens- oder Mehrheitsentscheid), man dann aber einen Projektleiter braucht, der darauf achtet, dass diese Linie strikt eingehalten wird. Ich habe mit Kommilitonen erst letzte Woche das Experiment gewagt, zwei Teams in einem Scenario gegeneinander antreten zu lassen. Dabei hat das eine Team eine klar hierarchische Struktur vorgegeben bekommen, das andere sollte sich demokratisch selbst organisieren. Das Ende vom Lied war, dass im hierarchischen System ein sehr interessanter Mix zwischen demokratischer Entscheidungsfindung und klarem “Druck von Oben” entstand, während Team “Demokratie” ohne Kopf die Aufgabe sehr viel schlechter abarbeitete.

lG RM

Oli Januar 30, 2012 um 19:03

Was soll der Vergleich mit OpenSource? OS bedeutet doch nicht gleich, dass da jeder dran rumwurschtelt. Siehe Gnu/Linux Kernel, Open Office, Mozilla X, etc.

Auch Wordpress hat Leute, die Richtlinien vorgeben. Es mag sein, dass sie das nicht so gut machen, aber das kann dir bei Closed Source ganz genau so passieren.

mlaug Februar 3, 2012 um 13:01

Natürlich bedeutet OpenSource, dass hier jeder im Code rumspielen kann. Der Hauptsinn ist ja, dass die Comunity ihre Bedrüfnisse zusätzlich implementiert und diese der Community dann wieder zur Verfügung zu stellen. Wenn das Core System dann keine saubere API zur Verfügung stellt (wie es Wordpress mit Hooks und Co definitiv nicht macht) ist ein Zusammenspiel der Komponenten meisten sehr schwierig und benötigte ein Häufiges Reactoring…

Ich wollte aber natürlich nicht sagen, dass Open Source nicht gut ist :) Aber die Architekturen sind meisten sehr gewöhnungsbedürftig.

Leave a Comment

{ 1 trackback }

Previous post: