Gedankenspiel: Softwareentwicklung als Handwerkskunst
Ob das folgende Gedankenspiel der Software-Craftsmanship-Bewegung entspricht weis ich nicht, damit habe ich mich nicht wirklich ausführlich beschäftigt. Im Gegenteil empfinde ich die Bewegung vorerst – mit ihrem Manifesto und dem ganzen Drumherum – als etwas zu extrem.
Aber ich fand alleine schon die Idee, Softwareentwicklung als Handwerkskunst zu sehen, nicht nur interessant, sonder sehe auch parallelen zu meinem Werdegang und zur Softwareentwicklung allgemein. Man muss nicht viel nachdenken um Parallelen zu entdecken.
Ich selber…
… hatte die große Ehre, bei der Firma K&K Internet GmbH in Radolfzell-Böhringen meine Ausbildung zum Fachinformatiker für Softwareanwendungsentwicklung zu machen und das Softwarehandwerk zu erlernen. Mein Gesellenstück, ein Dokumenten Management System für das CMS add.min, war damals der Höhepunkt, auf das ich auch heute noch mit Stolz zurückblicken kann. Seit dem Ende der Ausbildung 2004 konnte ich als Geselle meine Techniken verfeinern und mein Wissen vergrößern und kann jetzt – ebenfalls mit Stolz – auf eine sechsjährige Karriere als Geselle zurückblicken.
(Klingt ein wenig hochtrabend, gell? Ist aber nun mal eine Kurzfassung meiner Sicht auf die vergangenen Jahre als Softwarehandwerker.)
Und weitere Parallelen?
Außer meiner Laufbahn als Softwarehandwerker, gibt es natürlich eine ganze Reihe weiterer Parallelen, von denen ich hier die offensichtlichen mal kurz anreiße. Zum einen tue ich das um eine Diskussionsgrundlage zu schaffen, zum anderen um einen Denkanstoß zu geben und die Dinge mal von einer anderen Seite aus zu betrachten aber eigentlich schreibe ich das nur um das mal geschrieben zu haben, bevor ich den ganzen Kram nicht mehr in Worte fassen kann oder wieder vergesse. ;-)
Parallele: Werkzeuge
Für einen Schreiner ist es enorm wichtig seine Werkzeuge zu beherrschen: Nur wenn er die Hobelmaschine bedienen kann schafft er es eine gerade Tischoberfläche hinzubekommen.
Für einen Schreiner ist es wichtig, die neuesten Werkzeuge zu nutzen: Ein Hobel ist gut, aber eine Hobelmaschine ist genauer und schneller. Feile und ein Stechbeitel können eventuell das selbe wie eine Fräse, aber um einiges langsamer und ungenauer.
Die IDE und die Programmiersprache sind die wichtigsten Werkzeuge für einen Softwareentwickler. Diese sollte er bestens beherrschen können um Hochwertige Software zu entwickeln. Im Beitrag Gemeine Kenntnislücken beschreibt Ralf Westphal wieso man auf dem neuesten Stand bleiben und im Beitrag Lesen heute für Softwareentwickler wie man dazu kommt.
Auch die weiteren Werkzeuge und Hilfsmittel sind wichtig. Auf der Keynote der See# Party beschrieb Golo Roden, das man dafür sorgen muss die besten Werkzeuge zu nutzen die man für Geld kaufen kann. Und vor allem sollte man nicht nur bekannte Werkzeuge verwenden, sondern auch mal schauen was sich woanders bewährt hat.
Parallele: Prinzipien und Praktiken
Auch der Handwerker lernt Prinzipien, die ihm gewisse Handgriffe erleichtern und auch Praktiken die ihm sagen, wie man das Werkstück bearbeiten sollte. Der Handwerker hat seine Handbuch, seine Fibel in der Vorgehensweisen und bestimmte Konstanten beschrieben sind.
In der Softwareentwicklung haben Ralf Westphal und Stefan Lieser Prinzipien und Praktiken auf der clean-code-developer.de zusammengetragen. Dieses Werk ist ein wichtiger Schritt. Es bleibt jedem selber überlassen, wie er diese Prinzipien und Praktiken anwendet. Wichtig ist nur, dass sie überhaupt beachtet und angewendet werde.
Aber das alleine reicht noch nicht. Was in der Softwareentwicklung fehlt ist ein umfassendes kleines Handbuch, dass sowohl Prinzipien und Praktiken beinhaltet, als auch allgemeine Techniken und Design Patterns. Ein Buch das in jeder Gesäßtasche eines Softwarehandwerkers stecken sollte.
Parallele: Qualitätsdenken
In der Regel gibt ein Handwerker sein Produkt erst raus, wenn es seinen Qualitätsansprüchen genügt. Bei einem Tisch ist es nicht anders möglich, es ist etwas greifbares, das der Kunde berühren kann. Mängel sind sichtbar. Anders leider bei Software. Welcher Softwareentwickler kann – ganz ehrlich - von sich behaupten eine 100% hochqualitative Software an den Kunden herausgegeben zu haben? Damit meine ich nicht nur Qualität im Code, sondern auch bei der Usability.
Aber es geht auch anders:
In der letzten Ausgabe des .NET-Magazins habe ich ausführlich ein Buch vorgestellt, dass ich auch schon hier im Blog erwähnt habe: Why Software Sucks… ist ein Buch von David S. Platt das dem Softwareentwickler und dem Softwareanwender eine andere andere Sichtweise nahe bringt und auf diese Art Mängel in der Software sichtbar macht. Keiner sagt einem auf eine so ehrlich brutale Art was man die letzten Jahre falsch gemacht hat.
Zumindest offensichtliche Mängel können so schnell gefunden und beseitigt werden.
Parallele: Stolz
Die letzte Parallelität ist die Eigenschaft, auf die in der Softwareentwicklung – aus meiner Sicht – am wenigsten Wert gelegt wird. Die fast am unwichtigsten scheint. Aber die größten Probleme bereiten könnte. Was passiert mit einem, wenn man ständig ein Produkt rausgeben muss, auf das man nicht Stolz sein kann? Man verliert den Spaß an der Arbeit und den Spaß daran sich weiter zu entwickeln.
Ich weiß aus meinen kurzen Erfahrungen in der (richtigen) Handwerksarbeit (Schreiner, Gärtner und Kunststoffschlosser) das es ein unglaublich tolles Gefühl ist, seine hochwertige, fertige Arbeit in den Händen des zufriedenen Kunden zu sehen. Andersherum habe ich als Softwareentwickler zur Genüge die Erfahrung gemacht, aus Zeitdruck und Druck von oben, eine schnell zusammengebastelte Anwendung an einen zufriedenen Kunden herauszugeben und zu wissen, dass die Zufriedenheit nicht von langer Dauer ist. Der Job als Gärtner macht so – ehrlich gesagt – mehr Spaß.
Aber auch der Softwareentwickler sollte Stolz auf seine Arbeit sein können. Das geht natürlich nur, wenn die ersten drei parallelen Eigenschaften auch umgesetzt werden. Erst wenn die Werkzeuge stimmen, bestimmte Werte eingehalten werden und ein Qualitätsbewusstsein existiert, kann man eine Software bauen auf die man Stolz sein kann.
Fazit
Frage: Ist es wichtig, dass sich Softwareentwickler als Handwerker sehen?
Antwort: Nein, ich denke nicht!
Es wäre eventuell hilfreich, um auf die richtigen Werkzeuge und den Umgang damit zu beachten. Es wäre Hilfreich, um Prinzipien und Praktiken ernst zu nehmen. Es wäre eventuell Hilfreich, um ein Qualitätsdenken zu entwickeln, um dann mit Stolz auf seine Arbeit schauen zu können.
Aber letzten Endes ist es völlig egal, ob man sich als Handwerker, Architekt oder Pfarrer sieht. (Nur als Fließbandarbeiter sollte man sich nicht sehen *g*) Wichtig ist, dass man bestimmt Werte entwickelt und diese Konsequent umsetzt. Wichtig ist, dass man am Ende des Tages auf seine Arbeit stolz sein kann, dass mal alles dafür getan hat um eine höchstmögliche Qualität zu erreichen.