Ein Auslöser für die Entwicklung des Software Craftsmanship Manifest war auch das 2001 veröffentlichte agile Manifest. Das beschreibt hauptsächlich ein Vorgehen im Entwicklungs-Prozess, weniger die Ergebnis-Qualität. Zu der Zeit gab es in der Software-Entwicklung Bestrebungen, die innere Software-Qualität deutlich anzuheben. Innere Qualität bedeutet, dass Code von anderen Entwicklern schnell und klar gelesen werden kann. Die ist unabhängig von der äußeren Qualität, die die Nutzer mit der Software erleben.
Diese innere Software-Qualität zu erreichen, sei so etwas wie die Berufsehre der alten Handwerker, die auch stolz auf gute Arbeit sein wollten. Software-Entwicklung kann man auch als Handwerk bezeichnen, das immer abhängig vom Können der Gesellen und Meister sein wird. An alten Handwerks-Traditionen orientierte man sich dann tatsächlich. Zum Beispiel begannen einige Softwareentwickler auf die Wanderschaft zu gehen. Das 1999 erschienene Buch “The Pragmatic Programmer – From Journeyman to Master” verbreitete den Handwerks-Gedanken in der Software-Entwicklung.
Die Idee der Gesellen-Wanderschaft war das Lernen bei verschiedenen Meistern – und das Weitergeben des Erlernten in den nächsten Stationen. Auf diese Art entwickelte sich die ganze Zunft stetig weiter.
Das mehrmonatige Mitarbeiten in anderen Unternehmen hat heute viele bürokratische Hürden. Deshalb entwickelten sich Formate des Zusammen-Arbeitens, die dieses Von- und miteinander Lernen auf andere Weise ermöglichen. Die Handwerks-Metapher zog immer mehr Softwareentwickler an, die sich auf diese Weise bei der Entwicklung gegenseitig unterstützen.
Im Dezember 2008 gab es den ersten Craftsmanship Summit: 35 Leute haben über Software Craftsmanship geredet. Das war die Geburtsstunde der Bewegung. Daraus entstand auch die Idee für das Software Craftsmanship Manifest. 2009 wurde das Software Craftsmanship Manifest veröffentlicht:
Die Messlatte anheben
lautet die Unterüberschrift unter das 2009 entstandene Mainfesto für Software Craftsmanship. Dieser kleine Satz forderte die permanente Verbesserung nicht nur der Software Crafter, sondern gleich der ganzen Branche. Ein von Anfang an groß gedachtes Ziel: Die Entwicklung der Software-Branche! Und das ist nur erreichbar über die Entwicklung der vielen Software-Handwerker, die sich die permanente Verbesserung selbst zum Ziel setzen.
…üben und anderen dabei helfen das Handwerk zu erlernen
Als engagierte Software-Handwerker heben wir die Messlatte für professionelle Softwareentwicklung an, in dem wir üben und anderen dabei helfen, das Handwerk zu erlernen.
Mit diesem Einleitungssatz wird sehr schön die Entwicklung dieser Dreier-Beziehung dargestellt:
- Einzelne entwickeln sich hauptsächlich durch Üben,
- Erfahrenere helfen anderen bei der Entwicklung,
- was zur stetigen Steigerung der professionellen Software-Entwicklung führt.
Nicht nur funktionierende Software,
sondern auch gut gefertigte Software
Hier geht es um die innere Qualität, die Einfachheit, Übersichtlichkeit und Lesbarkeit des Codes. Das macht bei jeder Änderung einen entscheidenden Unterschied. Besonders dann, wenn ein anderer die Änderungen vornehmen soll. Dass Software außen funktioniert, ist selbstverständlich.
Zur guten “Handwerksarbeit” gehört sauberer, gut dokumentierter Code, den auch andere Softwareentwickler schnell verstehen. Den kann man aber nur erstellen, wenn man seine Tools beherrscht, und seine Sprachen gut kennt. Das erfordert Erfahrung. Die gewinnen Software Craftsman auch in gemeinsamen Lern- und Übungs-Sessions. Um wirklich guten Code zu schreiben, ist permanentes Lernen nötig.
Nicht nur auf Veränderungen reagieren,
sondern stets Mehrwert zu schaffen
Änderungswünsche der Kunden sind normal in Software-Projekten. Aber wenn man als Profi schon an den Code geht, dann schaut man eben auch gleich auf mögliche Verbesserungen der inneren und äußeren Qualität. Robert C. Martin formuliert das so: “Wir verlassen den Code immer sauberer als wir ihn vorgefunden haben.” Oder man schlägt dem Kunden gleich weitere Maßnahmen vor, die es ihm leichter machen.
Das soll auch ausdrücken, dass Software-Crafter sich nicht als “Anweisung-Ausführende” verstehen, sondern als Lösungs-Experten für Probleme ihrer Kunden. Sandro Mancuso sagt: Desto älter und umfangreicher eine Software beim Kunden wird, umso mehr Vorteile soll das Unternehmen daraus ziehen.
Nicht nur Individuen und Interaktionen,
sondern auch eine Gemeinschaft aus Experten
“Sharing and Mentoring sind das Herz von Software Craftsmanship” sagt Sandro Mancuso. Und auch: “Wir sind zuständig für die Vorbereitung der nächsten Generation von Software-Handwerkern. Der beste Weg, um unsere Branche weiterzuentwickeln geht über das Teilen von dem was wir gelernt haben, durch Mentoring und Mitreißen der noch wenig erfahrenen-Software Entwickler. … Wir wollen mit Leuten arbeiten, die uns besser machen, die bereit sind zum Teilen und Lernen von jedem anderen.” (The Software Craftsmanship S.35/36)
Nur in der Gemeinschaft funktioniert das von- und miteinander Lernen, das gemeinsame Entwickeln von Fähigkeiten. Software Crafter praktizieren dafür besondere Zusammenarbeitsformen fürs Coden, z.B. Pair- oder Mob-Programming. Auch für das Üben nutzen sie viele Gemeinschafts-Formate, wie z.B. Code Retreats.
Die Gemeinschaft sehen sie aber auch mit allen Stakeholdern in Software-Projekten. Auch die Kunden werden idealerweise in den Entwicklunsgprozess intensiv und auf Augenhöhe eingebunden.
Nicht nur Zusammenarbeit mit dem Kunden,
sondern auch produktive Partnerschaften
“Software Craftsman are not factory workers” sagt Sandro Mancuse.
Software Crafter suchen den direkten Kontakt zum Kunden. Sie wollen nicht einen Auftrag abarbeiten und am Ende ein fertiges Produkt abliefern. Sie wollen die Verantwortung für ihr Projekt selber übernehmen. Da passen die industriellen arbeitsteiligen Zuständigkeiten nicht.
Sie versuchen Kunden zu überzeugen, den Software-Entwicklungsprozess als Partner gemeinsam zu gestalten. Damit werden sie die Kunden-Bedarfe am besten verstehen. Und die Kunden entwickeln in so einer Partnerschaft weitere Ideen für Verbesserungen ihrer Prozesse.
Das heißt, beim Streben nach den Werten auf der linken Seite halten wir die Werte auf der rechten Seite für unverzichtbar.
Ein pragmatischer Ansatz, kein Dogma. Das zieht sich durch alle Aussagen zur Software Craftsmanship Bewegung: Niemand wird alles beherrschen. Das Erfahrungs-Niveau und die Fähigkeiten werden immer sehr unterschiedlich sein. Aber wer seine Messlatte permanent erhöht, der gehört dazu zu den Software-Handwerkern.
Sandro Mancuse:
“Software Craftsmanship is a Mindset – a lifestyle that many professional developers adopt. Software Craftsman live and breathe software. They see software as a craft and are committed to do whatever they can to master their craft.” (S. 39)
We Care, We Practice, We Learn, We Share
Während das Software Craftsman Manifest zwar verständlich aber doch etwas sperrig daherkommt, hat sich eine einfachere Lesart von Software Craftsmanship etabliert: “We care, we practice, we learn, we share”. Mit etwas gutem Willen kann man die 4 Stichworte auch den 4 Sätzen aus dem Manifest zuordnen (gleiche Reihenfolge).
Mir scheinen die vier Begriffe jedenfalls sehr einprägsam.
We care
Software Crafter sorgen für gute Arbeit auf die sie stolz sein können – und mit der ihre Kunden hochzufrieden sind.
We practice
Üben, üben, üben – den Umgang mit Tools, das Anwenden von Methoden und Prinzipien, die Anwendung von Programmiersprachen. (Gebt den Leuten Zeit zum Üben, sonst üben sie im echten Projekt!)
We learn
Auf dem Weg zum Experten muss man sich permanent mit neuen Technologien beschäftigen. Und immer wieder die Arbeit anderer Software-Entwickler ansehen, oder mit ihnen zusammen programmieren.
We share
Mit anderen austauschen. Wissen und Erfahrungen mit anderen teilen. In Veranstaltungen aktiv beitragen. In Foren und Blogs schreiben. Sich verantwortlich fühlen, für die Entwicklung von Anderen.
Ausführlicher hat Markus Gärtner diese 4 Aspekte (mit etwas anderen Übeschriften) hier beschrieben. Und in diesem Podcast kannst Du Dir die Beschreibung dieser Aspekte von Jürgen Latteyer anhören.
Dieser Blogpost ist ein weiterer Baustein meiner Recherche zur Software Craftsmanship Bewegung im Rahmen des CLC-Projektes #MeinZiel23.