Es ist, als ob ein fehlendes Stück vom Puzzle endlich aufgetaucht ist. Endlich hat sich mal jemand mit der Tatsache auseinandergesetzt, dass in der heutigen Software-Entwicklung eine entscheidende Komponente immer mehr ins Hintertreffen gerät: Die Kunst und Wissenschaft der Software-Entwicklung.
Genauer gesagt ist es Uncle Bob, der mit seinem provokanten Satz “Craftsmanship over Crap” auf der Agile’08 die Diskussion angestoßen hat. Natürlich spielt da auch sein Buch Clean Code eine besondere Rolle. Im Prinzip regt sich Uncle Bob darüber auf, das heutzutage immer mehr Agile Software-Entwicklung mit “schnell fertigstellen”, “mal ändern” und “iterativ ausbauen” gleichgesetzt wird, ohne wirklich qualitativ wertvolle Ergebnisse abzuliefern.
Er spricht mir aus der Seele. Wie oft habe ich schon einfach runtergerotzten Code gesehen, wo nichts anderes zu erkennen war außer einem Haufen zusammengelegter Klassen und Methoden. Wie oft habe ich diesen bescheuerten Satz “das wurde mit der heißen Nadel gestrickt” gehört, wo ich mir selbst die Frage stellte, ob ich nun in einer Arbeitsgemeinschaft für Strickpulli-Anfänger gelandet bin oder ich doch noch in der Software-Branche arbeite.
Das erschreckende ist ja nicht nur, dass diese “agilen” Software-Produkte nicht nur durch den Druck von Geschäftsleuten, Produktmanagern oder sonstigen “Stakeholder”n getrieben wird.
Mittlerweile ist die niedrige Qualität schon in das Innere von Software-Entwicklern vorgedrungen. Es gibt Kollegen, die kümmern sich einen feuchten Dreck um qualitativ hochwertige Ergebnisse, sondern verfolgen stur das, was man Ihnen vor die Nase legt.
Erstaunlicherweise ist es meist dieser Typus Entwickler, der sich dann auch noch als “State-of-the-Art”-Developer verkauft, weil er “business-minded” und “agile” ist. Das Fass zum überlaufen bringt dann meistens die Argumentation, dass man heutzutage ja “iterativ” und “inkrementell” entwickelt, und dabei wirklich nur das notwendigste implementiert.
Also nicht, das man mich jetzt falsch versteht: das soll jetzt keine Hommage an den alten Wasserfall werden. Mittlerweile ist es klar, das man Software-Entwicklung iterativ wesentlich besser vorantreiben kann. Auch viele Patterns und Practices beschäftigen sich mit der Verbesserung der Entwicklung und der Qualität.
Fakt ist allerdings auch, dass durch die rasante Entwicklung der Methoden, der Branche, des “Businesses” durch das Web und nicht zuletzt durch die zahlreichen Tools die eigentliche Schule der Entwicklung von Software immer mehr vernachlässigt wird.
Da kommt meiner Meinung nach die von Uncle Bob initiierte Bewegung genau zur richtigen Zeit. Mit vielen anderen Software-Entwicklern, die noch die Fahne der Kunst hochhalten, hat er das “Manifesto for Software Craftsmanship” ausgearbeitet. Es ist eine Analogie – oder besser ein Addendum – zum klassischen Agile Manifesto:
- Es geht nicht nur um funktionierende Software,
sondern auch um gut entwickelte Software - Es gilt nicht nur Änderungen zu verarbeiten,
sondern auch um stetige Wertsteigerung - Es verlangt nicht nur Austausch von jedem Einzelnen,
sondern auch Zusammengehörigkeit durch eine Gemeinschaft von Profi’s - Es braucht nicht nur Kundenkommunikation,
sondern auch eine produktive Partnerschaft
Genau diese Werte sind es, die einen Software-Entwickler zu einem guten Software-Entwickler machen. Naja, ganz neu sind diese Wertvorstellungen ja nicht, zumal man ja schon vor Jahren relativ formal mit Hilfe der ISO 9126 Qualitätsrichtlinien einen Ansatz gefunden hat, eine “Qualitäts- und Professionalitätsethik” abzuleiten. Noch einen Schritt weiter geht da die (mittlerweile auch schon einige Jahre alte) Definition der Code of Ethics in Software Engineering von ACM.
Nichtsdestotrotz ist die neue Craftsmanship-Bewegung notwendig und wichtig. Dem tragen auch Ralf Westphal und Stefan Lieser Rechnung, in dem sie auf ihrer neuen Website clean-code-developer.de ein an Uncle Bob angelehntes Wertesystem beschreiben. Dieses Wertesystem beinhaltet eine Reihe von guten Regeln und Vorschlägen, wie man als Software-Entwickler sein Werk und Tun verbessern kann.
Ich persönlich finde das von Westphal & Lieser propagierte “Grad-System” (ähnlich wie bei Judoka) nicht zielführend. Es ist vielmehr irreführend und transportiert implizit das “ich habe den blauen Grad, also bin ich besser als Du” Gefühl, obwohl dies vermutlich nicht so gemeint ist. Also ich werde sicherlich kein “Clean Code Developer”, ich sehe mich eher als ein “Software Craftsman”. Nichtsdestotrotz findet man auf der Website gute Ratschläge.
Was für mich zählt, ist die Tatsache, das ich immer versuche, eine bessere Arbeit abzuliefern als je zuvor. Ich bin stolz auf meine Arbeit und meinen Beruf.
byRalf WestphalonMarch 21st 2009Dass da gerade etwas Überfälliges passiert mit “Software Craftsmanship” (SCS) und auch “Clean Code Developer” (CCD), kann ich natürlich nur unterstreichen
Dass allerdings sich die SCS einen Gefallen getan haben mit ihrem “Addendum”, kann ich nicht behaupten. Wie ich in http://ralfw.blogspot.com/2009/03/manifestierte-softwareentwicklung-oop.html ausgeführt habe, halte ich die “Zusätze” für recht substanzfrei. Gut gewollt – aber schlecht gemacht.
Die Agilitsten mögen am Ende zu kurz gesprungen sein. Aber vielleicht wollten sie auch bestimmte Aspekte der Softwareentwicklung einfach nicht thematisieren. Oder zumindest nicht alle in gleicher Weise. Fakt ist, dass “agil” nicht gleichbedeutend mit “hohe innere Qualität” ist. Also sollte noch etwas dazu treten.
Die Software-Handwerker versuchen es da auf eine Weise. Gut so. CCD versucht es auf eine andere Weise. Wie wir meinen: deutlich konkreter. Und das ist auch der Grund, warum wir die Bausteine des CCD-Wertesystems in Grade (oder Module) eingeteilt haben. Das hat nichts mit Bewertungen oder gar softwaremoralischen Rängen zu tun, sondern schlicht mit Lernpsychologie. Wo Lernstoff zu meistern ist, ist der besser in leicht verdaubare Happen eingeteilt. Die sollten mundgerechte Größe haben und eine bekömmliche Reihenfolge. Ausführlicher habe ich das hier beschrieben: http://groups.google.de/group/clean-code-developer/browse_thread/thread/8676bb4c902c6abe/bb1b360e635129aa?lnk=gst&q=lernpsychologie#bb1b360e635129aa
Die Software-Handwerker ergehen sich in Diskussionen über den rechten Geist eines Craftsman. Sie bringen sich in Position gegen die Agilisten und die Software Engineers. Das halten wir bei der CCD Initiative für wenig zielführend. Denn Anleitung dazu, wie ich denn morgen damit beginnen kann, bessere Software zu entwickeln, wie ein erster kleiner Schritt aussehen könnte, bekomme ich bei den Craftsmen kaum. Schade.
-Ralf