Software Craftsmanship – erster Zwischenbericht #MeinZiel23

Im Rahmen des CLC-Projektes habe ich mir vorgenommen, die Software Craftsmanship Bewegung unter Lern-Gesichtspunkten zu erkunden. In diesem Beitrag will ich ein paar erste Erkenntnisse festhalten. Weitere sollen folgen.

Clean Code – gab den Anstoß

Die Software Craftsmanship-Bewegung ist nach dem agilen Manifest entstanden. Das 2001 veröffentlichte agile Manifest beschreibt eher Prozesse, und nicht die Qualität der Ausführung. Das Schreiben von gutem Code ist aber Softwareentwicklern wichtig. Die „Clean Code“-Bewegung ist aus diesem Grund entstanden. Dabei geht es darum, Software so zu schreiben, dass ein anderer Programmierer schnell versteht, was die einzelnen Blöcke machen, und wie das Ganze zusammenhängt. Gute Software wird also nicht nur an ihrer Funktion gemessen, sondern auch an ihrem nachvollziehbaren inneren Aufbau.

(Eine ausführliche Entwicklungsgeschichte der Software Craftsmanship Bewegung hat Patrick Cornelißen erläutert. Im Podcast Macht der Craft hat Andreas Fischer die Entwicklung aus seiner Sicht beschrieben.)

Softwareentwicklung als Handwerk

Die Softwareentwicklung kann man als Engineering oder als Handwerk einordnen:

  • Engineering ist definiert als “Anwendung von wissenschaftlichen Prinzipien zum Design und Bau von Maschinen, Strukturen und anderen Elementen, …”. Ursprünglich war damit die Gestaltung von Maschinen und Bauwerken (Hardware) gemeint.
  • Als Handwerk werden gewerbliche Tätigkeiten bezeichnet, die Produkte meist auf Bestellung fertigen oder Dienstleistungen auf Nachfrage erbringen.

Eindeutig ist die Zuordnung der Softwareentwicklung nicht. 1999 brachte Andrew Hunt mit dem Buch “The Pragmatic Programmer – From Journeyman to Master” die Idee der Softwareentwicklung als Handwerk in die breitere Öffentlichkeit. 10 Jahre später wurde die Handwerks-Metapher Grundlage für das Software Craftsmanship Manifest.

Zum Vorbild wurden alte Handwerkszünfte, die ihre Gesellen 2 bis 5 Jahre auf Wanderschaft schickten, damit sie bei verschiedenen Meistern neues Können erlernen – und dabei ihr Wissen und Können an den anderen Stationen weitergeben. Im April 2009 haben deshalb zwei Softwareentwickler aus verschiedenen Unternehmen ihre Arbeitsplätze eine Zeitlang getauscht. Im gleichen Jahr ist Corey Haines 3 Monate lang auf die Walz gegangen, allerdings immer nur für wenige Tage, wie er hier in seiner Ankündigung auf dem Tour-Blog am 30.4.2009 schrieb:

What the heck is my pairing tour? Well, the basic premise is that I spend between 1-5 days with people, usually around 2-3, pair-programming on whatever they want to work on. What do I get out of it? Room and Board! Yup, they provide me with a place to sleep and food while I’m with them. That’s it, a very simple exchange.

Die Idee “Software Craftsmanship” verbreitete sich von Amerika ausgehend: Die erste “Software Craftsmanship Conference” in 2009 löste im gleichen Jahr eine in London und eine in Israel aus. Seitdem gibt es regelmäßige Veranstaltungen für die stetig größer werdende Software Craftsmanship Bewegung in vielen Ländern. 2011 gab es die erste SoCraTes in Deutschland (Conference for Software Craft and Testing). Dabei hat sich die “Softwerkskammer” gegründet, ein nur sprachlich an “Handwerkskammer” orientiertes Netzwerk für die Software Crafter. (Der Begriff Craftsman wirkt inzwischen zu männlich, deshalb spricht man auch von Craftern.)

Lernen als Grundhaltung

Der Einleitungssatz des Software Craftsmanship Manifestes zeigt, dass es um die Entwicklung jedes einzelnen “Software Handwerkers” geht:

“Als engagierte Software-Handwerker heben wir die Messlatte für professionelle Softwareentwicklung an, indem wir üben und anderen dabei helfen, das Handwerk zu erlernen”
  • Anheben der Messlatte” – also stetiges Besserwerden aller professionellen Software-Entwickler
  • in dem wir üben” – eine sehr sinnvolle Tätigkeit, die wir in der Weiterbildung bisher ausklammern
  • anderen dabei helfen das Handwerk zu erlernen” – spricht das selbstverständliche Weitergeben von Wissen an.

Damit knüpfen sie tatsächlich an die alten Handwerks-Traditionen an. Durch das Mitarbeiten vieler Gesellen bei verschiedenen Meistern konnte die ganze Branche besser werden. Die jeweils mehreren Monate Mitarbeit in der Fremde waren Übungszeit. Und das Teilen von erworbenem Wissen und Können half allen ihre eigenen Fähigkeiten zu erweitern.

Die Wanderschaftsidee ins Heute übersetzt

Sicher wäre es auch heute klug, als Softwareentwickler auf Wanderschaft zu gehen. Nur fürchte ich, dass dem gerade in Deutschland viele bürokratische Hindernisse im Wege stehen. Die Craftsmanship-Community löst das auf andere Weise: Man kommt immer wieder zusammen, um gemeinsam zu lernen. An vielen Orten werden unter anderem sogenannte “Code Retreats” organisiert. Der Ablauf in etwa:

  • Löse gemeinsam mit einem Anderen ein Problem in 45 Minuten
  • Rede dann mit anderen über die Lösung
  • Werf den Code weg
  • Fange erneut mit der Lösung an
  • Rede mit anderen über die Lösung
  • und das 6 bis 7 mal am Tag.

Das ist ein ganzer Tag gemeinsames Üben – und lernen mit und von anderen. Gleichzeitig baut man das eigene Netzwerk aus. Besser kann man sich gar nicht kennenlernen, als beim gemeinsamen Arbeiten. Mitmachen dürfen alle – egal ob Anfänger oder erfahrender Spezialist. Alle erarbeiten sich ihre Fähigkeiten gemeinsam. Alle sind dabei mal Gebende und mal Nehmende. Das Teilen wird ganz selbstverständlich praktiziert. Dabei ist eine Lernkultur entstanden, die kaum noch klassisch Lehrende braucht.

“Das Planen der eigenen Karriere ist die Verantwortung jedes Einzelnen, nicht die Verantwortung der Firma”, sagt Bernhard Findeis im Video “Aus dem Leben eines Craftsman beim IF Forum 2013 (hier ab Min 6:00). Und weiter: “Ich hab so einen kleinen Richtwert, der in der Community so diskutiert wird: Man sollte ungefähr so 20 Stunden pro Woche für seine Fortbildung aufwenden, fürs Weiterbilden und fürs Üben” (hier ab Min 6:40). Das sieht er hauptsächlich in der Freizeit.

We care, we practice, we learn, we share

Diese vier Aspekte werden ebenfalls als Ausrichtung für die Software Craftsmanship Bewegung genannt. Markus Gärtner hat das auf seinem Blog gut beschrieben. Ganz ähnlich erläutert Jürgen Latteyer das in diesem gleichnamigen Podcast.

  • We care: Wir sorgen für sauberen lesbaren Code
  • We practice: Wir üben, üben, üben (Musiker und Sportler üben auch vor ihrem Auftritt)
  • We learn: Wir entwickeln unsere Kenntnisse und Fähigkeiten ständig
  • We share: Wir bringen uns in Communities ein und teilen unser Wissen

Stolz auf die eigene Arbeit – aber kein Alleskönner

Das wird auch bei den Software Craftsman betont: Jeder gute Handwerker ist stolz auf seine Arbeit. Nur wer gute Arbeit geleistet hat, kann stolz darauf sein. Das erfordert Fachkenntnis, Erfahrung und Disziplin. Dann macht die eigene Arbeit auch Spaß. Was auch deutlich macht, dass man den Handlungsspielraum braucht, um selbst Gestaltungs-Entscheidungen zu treffen. Den muss man sich manchmal auch erkämpfen.

Nur wer stolz auf die eigene Arbeit ist, wird sich damit identifizieren – und die Verantwortung dafür übernehmen. Das Übernehmen von Verantwortung fürs eigene Tun ist den Software Craftern ebenfalls wichtig.

Markus Lang spricht in seinem Pecha Kucha Vortrag von Design-Prinzipien und Praktiken für Software Craftsman. Interessant ist die Aussage: Als Crafter muss man das nicht vollständig beherrschen! Das ist nicht die Idee. Jeder sucht sich die für seine Aufgabe passenden Prinzipien und Praktiken raus. Jeder kann sein eigenes Set an Prinzipien und Praktiken haben! Also: Jeder hat seinen eigenen Werkzeugkasten. Dazu gehört aber die Einstellung: Ich muss meine Prinzipien und Praktiken auch beherrschen und anwenden wollen!

Erstes Fazit:

Es geht um eine Grundhaltung zur eigenen Arbeit bei den Software Craftern:

  • Nur gute Arbeit leisten
  • Seine Prinzipien und Werkzeuge wirklich beherrschen
  • Sich ständig weiterentwickeln
  • In Communities sein Wissen immer wieder teilen und erweitern

Entlastend wirkt, dass niemand erwartet, dass man perfekt ist. Man darf auf ganz unterschiedlichem Level unterwegs sein, und trotzdem gemeinsam üben und lernen.

Insbesondere das intensive Üben fasziniert mich. Das tun sie freiwillig! Dahinter muss ja bei jedem Einzelnen eine Einstellung zum permanenten Besser-Werden-Wollen stehen.

Meine nächsten Fragen:
Wie gelingt der Software Craftsmanship Bewegung das Prägen der inneren Einstellung so vieler Softwareentwickler
– zur permanenten eigenen Weiterentwicklung?
– zum immer wieder gemeinsamen Üben – auch außerhalb der Arbeitszeit?
– zum Aneignen von Prinzipien und Praktiken
– zum bereitwilligen Teilen des eigenen Wissens und Könnens?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert