Craftmanship/Craftwomanship
Jeder Idiot kann Code schreiben, den ein Computer versteht. Gute Programmierer schreiben Code, den Menschen verstehen. (Martin Fowler)
Was ist Craftmanship?
Die Software-Handwerkskunst (Software-Craftmanship) ist ein Begriff, der in der Softwareentwicklung eine Bewegung beschreibt, die sich die Professionalisierung der Softwareentwickler als Ziel gesetzt hat.
Im Gegensatz zur trandiotionellen Handwerkskunst, wie z.B. Schreiner oder Schmied, ist die Software-Handwerkskunst eine relativ junge Bewegung, die sich erst in den letzten Jahren entwickelt hat und damit keine allgemein anerkannten Regeln oder Standards hat.
Das Ziel der Software-Handwerkskunst ist es daher in der Softwareentwicklung eine Handwerkskunst zu etablieren und sie nicht als Ingenieurdisziplin zu sehen.
Klassisches Software-Engineering
Softwareentwickler wurden früher und auch heute noch oft als Parktiker mit einem mathematischen Ansatz einer Ingenieursdisziplin gesehen. Dieser Ansatz wird immer noch mit Eigenschaften verbunden, wie Berechenbarkeit und Präzision, jedoch wird auch eine gewisse Risikoaversion und geringe Professionalität mit der Softwareentwicklung verbindunden. Durch die immaterielle Eigenschaft, die eine einfache Änderbarkeit von Software mit sich bringt -- im Gegenatz zu physischen Produkten -- wurde und wird die Softwareentwicklung oft als weniger professionell wahrgenommen, so dass es ausreiche Hobbyprogrammierer oder Entwicklungsingenieure einzustellen, die von Managern geleitet werden. Passend dazu ist das Bild des Softwareentwicklers, der im Kinderzimmer oder im Keller sitzt und sich von der Welt abkapselt seine Programmierung verrichtet.
Handwerkskunst
Softwareentwicklung soll als Handwerkskunst gesehen werden, die eine hohe Professionalität und Verantwortungsbewusstsein erfordert. Dazu sollen folgende Wertvorstellungen eingehalten werden:
- Software soll kunstvoll gestaltet werden und nicht nur funktionieren.
- Mehrwert soll fortlaufend geschaffen und nicht nur auf Veränderungen reagiert werden.
- Individuen und Interaktionen sollen nicht alleine, sondern in einer Gemenschaft von Experten wachsen.
- Zusammenarbeit mit dem Kunden soll nicht nur auf Verträgen basieren, sondern auf partnerschaftlichen Beziehungen.
Die Disziplinen des Softwareentwicklers für den Berufsethos
Softwareentwicklerinnen und Softwareentwickler sollen sich Disziplinen und einem Wertekodex unterwerfen, die den Beruf des Softwareentwicklers zu einer Profession machen. So unterscheiden sie sich von den Amateurprogrammierern, die sich nicht an diese Disziplinen halten. Diese Disziplinen sind, aber nicht beschränkt auf:
- Verantwortungsbewusstsein
- Wirtschaftlichkeit
- Qualitätsanspruch
- Machbarkeit
- Rechtliche Anforderungen
gegenüber allen bei der Softwareentwicklung beteiligten Personen (Kunden, Projektmanagern, Vorgesetzten etc.) vertreten können.