Software Craftsmanship

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Software Craftsmanship (aus dem Englischen, etwa: Software-Handwerkskunst oder Softwerkskunst) ist eine Bewegung in der Softwareentwicklung, die sich mit der Arbeitsweise und Wahrnehmung des Berufsstandes der Softwareentwickler beschäftigt. Ziel der Bewegung ist es, die Softwareentwicklung als eigenständige Profession, als Handwerk (und nicht als Ingenieursdisziplin) wahrnehmbar zu machen und die Bewertung von Softwareprojekten nach Entwicklerverantwortlichkeiten und nicht nur unter rein finanziellen Gesichtspunkten vorzunehmen.

Klassische Sicht der Softwareentwicklung[Bearbeiten]

In der Vergangenheit wurden Programmierer vor allem als Praktiker eines statistisch und mathematisch basierten Engineering-Ansatzes gesehen, der mit Attributen wie Berechenbarkeit, Präsizion, wenig Risiko und geringer Professionalität konnotiert war. Der Softwareentwickler wird gerne als Hobbyprogrammierer oder Entwicklungsingenieur gesehen, der von Projektleitern und Produktverantwortlichen gelenkt werden muss. Zum Sinnbild wurde die Figur des eher weltfremden Nerds. Auch ziehen viele Softwareentwickler sich gerne auf diese Position zurück.

Parallelen zu traditionellen Handwerksberufen[Bearbeiten]

Die Mehrheit der Softwareentwickler erstellt Individualsoftware, von der der Auftraggeber einen Mehrwert erwartet. Der Beruf des Softwareentwicklers ist in den Anforderungen an das Ergebnis vergleichbar mit der Tätigkeit eines Handwerksmeister, der auch mit Fachkompetenz individuelle Produkte herstellt, die beim Kunden einen gewissen Zweck erfüllen sollen.

Ein Beispiel ist der Elektriker, der die Stromversorgung einer Wohnung erstellt. Ein Elektriker muss zum Beispiel verschiedene Anforderungen beachten: Die Kabel müssen nachvollziehbar verlegt und ausreichend dimensioniert sein für zukünftig zu erwartende Energiebedarfe. Die Absicherung muss ordnungsgemäß ausgeführt sein, Elektroherd und Durchlauferhitzer sollen gleichzeitig betrieben werden können und darüber hinaus sollen Steckdosen in ausreichender Anzahl und an den richtigen Plätzen vorhanden sein. Der Elektriker kennt aktuelle Technologien und berät den Auftraggeber kompetent. Unter Umständen muss er dem Kunden aber auch unmissverständlich klarmachen, dass preisgünstigere Vorschläge (z. B. Kabel diagonal zu verlegen, um Kupfer zu sparen, oder weniger Absicherungen einzubauen) keine gangbare Lösung darstellen.

Genau wie der Elektriker soll auch der professionelle Softwareentwickler verantwortungsbewusst handeln und Aspekte wie Geschäftszweck, Wirtschaftlichkeit, Qualitätsanspruch, Machbarkeit und rechtliche Anforderungen berücksichtigen und vor allem auch gegenüber seinen Auftraggebern (Kunden, Projektmanagern, Vorgesetzten etc.) vertreten können. Vereinfacht gesagt, unterscheidet der professionell agierende Softwareentwickler sich von einem Amateurprogrammierer vor allem durch den Wertekodex, nach dem er handelt und entscheidet.

Berufsethos der Softwareentwickler[Bearbeiten]

Dieses Vorgehen lässt sich als Berufsethos der Softwareentwickler ansehen. Die Softwareentwicklung wird damit in den Stand einer Profession erhoben. Darüber hinaus ergeben sich Forderungen nach Standards, Zulassungskriterien, Zertifizierung, permanenter Weiterentwicklung und allgemeingültigen Wissensgrundlagen als Mechanismen für die Reifung der Disziplin.

Das Agile Manifest als Grundlage[Bearbeiten]

Bereits das Agile Manifest mit seiner Betonung auf „Individuen und Interaktionen über Prozessen und Werkzeugen“ hinterfragt einige der eingangs dargestellten Annahmen über den Beruf des Softwareentwicklers. Das Manifest des Software Craftsmanship erweitert die Annahmen des Agilen Manifestes und verweist in der Formulierung der Grundideen des Software Craftsmanship metaphorisch auf das Lehrmodell der mittelalterlichen Handwerkskünste in Europa.

Entstehung der Idee[Bearbeiten]

Die Bewegung basiert auf Ideen verschiedener Autoren. Die Bücher Der Pragmatische Programmierer von Andy Hunt und Dave Thomas sowie Software Craftsmanship von Pete McBreen stellen die Verbindung zwischen der Softwareentwicklung und den mittelalterlichen Handwerkskünsten her. Der Philosoph Richard Sennett beschrieb Softwareentwicklung als ein modernes Handwerk in seinem Buch The Craftsman. Freeman Dyson ergänzt den Begriff der Softwerkskunst um die Meisterschaft, Software als einen Treiber für wirtschaftlichen Erfolg einzusetzen:

„Trotz des Aufstiegs von Microsoft und anderer großer Softwarefirmen bleibt die Softwareentwicklung in großen Teilen eine Handwerksindustrie. Aufgrund der enormen Fülle an spezialisierten Anwendungen bleibt immer noch Raum für den einzelnen, Software anhand seines einzigartigen Wissens zu schreiben. Es wird immer Nischenmärkte geben, in denen kleine Softwarefirmen überleben. Die Kunst, Software zu schreiben, wird nicht überflüssig werden. Und die Kunst, Software kreativ einzusetzen, gedeiht noch mehr als die Kunst, Software zu schreiben.“

Nach den ersten Diskussionen wurden Konferenzen in London[1] und Chicago abgehalten[2] und ein Manifest wurde erstellt. Dieses ist online verfügbar[3], um Unterzeichner zu sammeln.

Geschichte[Bearbeiten]

1992 veröffentlichte Jack W. Reeves seinen Aufsatz What Is Software Design? (Was ist Software-Design?)[4], in dem er postuliert, dass die Softwareentwicklung eher ein Handwerk sei als eine Ingenieursdisziplin.

1999 erschien Der Pragmatische Programmierer. Der Untertitel der englischen Originalausgabe, From Journeyman to Master, unterstellt, dass Programmierer während ihrer beruflichen Entwicklung mehrere Stufen vom Lehrling bis zum Meister durchlaufen, ein Prozess, der sich so auch in den Handwerkskünsten im mittelalterlichen Europa findet.

2001 veröffentlichte Pete McBreen sein Buch Software Craftsmanship. McBreen stellt ebenfalls klar, dass Softwareentwickler sich nicht als Ingenieure sehen sollten, sondern dass eine andere Metapher passender wäre.

Im August 2008 schlug Bob Martin einen fünften Wert für das Agile Manifesto vor: Craftsmanship over Crap (wörtlich: „Handwerkskunst anstelle von Mist“). Er änderte seinen Vorschlag später in Craftsmanship over Execution („Handwerkskunst anstelle von Ausführung“).[5]

Im Dezember 2008 trafen sich die ersten engagierten Softwerker in Libertyville, Illinois mit der Absicht, die Grundsätze des Software Craftsmanship zu formulieren.

Im März 2009 wurde das Gründungsmanifest verabschiedet. Es ist öffentlich verfügbar und kann von jedem, der mit den Ideen übereinstimmt, unterzeichnet werden.

Im April 2009 experimentierten zwei der Bewegung angeschlossene Unternehmen, 8th Light und Obtiva, mit einem ‚Softwerkeraustausch‘, vergleichbar mit den Wanderjahren der Handwerksgesellen.[6] Dem Chicago Tribune war dies am 15. Juni 2009 sogar einen Artikel wert.[7]

Im Januar 2010 gab es einen zweiten Softwerkertausch zwischen den Unternehmen Obtiva und Relevance.

Auch die Clean Code-Bewegung hat beruft sich auf die Software Craftsmanship.

Softwerkskammer[Bearbeiten]

Die Softwerkskammer als deutschsprachiges Organ der Bewegung wurde im Jahr 2011 gegründet. Die Organisationen kümmern sich vor allem um das Unternehmens- und fachübergreifende Zusammentreffen von Softwareexperten und die Förderung des Austausches.

Derzeit gibt es 13 regionale Organisationen in Deutschland (davon allein 4 in Nordrhein-Westfalen), 2 in Österreich und eine in der Schweiz.

Konferenzen[Bearbeiten]

  • SoCraTes: Jährliches Zusammentreffen der lokalen Softwerkskammern aus Deutschland, Österreich und der Schweiz.

Kritik[Bearbeiten]

Der Software-Craftsmanship-Ansatz, insbesondere die Positionierung in der Nähe des Handwerks, wird von verschiedenen Seiten in Frage gestellt.

Der Programmierer und Berater Dan North postuliert in seinem Artikel Programming is not a craft, dass Softwareentwicklung- oder Programmierung keine dem Handwerk verwandte Tätigkeit sei.[8] Die Zugangsbeschränkungen sind seiner Ansicht nach zu niedrig (jeder kann Programmierer werden), der Industriezweig ist zu jung und die erstellten Produkte tragen nicht die Schönheit von Handwerksprodukten. North vermisst im Software Craftsmanship Manifesto zudem Formulierungen wie „Ergebnisse erzielen“ und „Kunden erfreuen“.

Bücher und Artikel[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Software Craftsmanship Conference. Abgerufen am 24. März 2014.
  2. Software Craftsmanship North America. Abgerufen am 24. März 2014.
  3. Software Handwerkskunst Manifest. Abgerufen am 24. März 2014.
  4. http://www.developerdotstar.com/mag/articles/reeves_design.html
  5. http://www.infoq.com/news/2008/08/manifesto-fifth-craftsmanship
  6. http://www.venturacountystar.com/news/2009/Jul/13/employee-swap-gives-two-firms-new-perspectives/
  7. Wailin Wong: Open to the competition. In: Chicago Tribune, 15. Juni 2009. 
  8. Dan North: Programming is not a craft auf dannorth.net, abgerufen am 7. März 2014