Glossar

/ Software Craftsmanship

Software Craftsmanship

Kategorie Implementierung

Wir von orchit sind der festen Überzeugung, dass Softwareentwicklung einen großen handwerklichen Anteil hat. Leider wird dieser Anteil an Hoch- oder Berufsschulen nicht ordentlich gelehrt. Daher bleibt nur “training on the job” oder Eigeninitiative für viele Entwickler.

Die folgenden Aspekte und vieles mehr zählen für uns zum Anspruch ein “Software Craftsman” zu sein und definieren die Software Craftsmanship Bewegung. Ein Begriff den Vorreiter wie Robert C. Martin seit einiger Zeit aktiv in der englisch sprachigen Szene etablieren.

Um effektiv arbeiten zu können, also das Richtige zur richtigen Zeit auf die richtige Weise zu tun, muss man im Softwarebereich ständig an sich arbeiten. Es müssen neue Techniken oder Tools erlernt werden und man muss sich unter Kontrolle halten nicht, eben nicht die Abkürzung zu gehen und mal eben schnell etwas "zu hacken", was man dann irgendwann später ordentlich machen möchte. Diese Selbstdisziplin ist wichtig und kann und muss erlernt und geübt werden. Dadurch unterscheidet sich der Software Craftsman von einem "normalen Entwickler".

Auf den ersten Blick sieht es so aus, als ob dieser Ansatz sehr langsam ist. Hält man sich aber den Spruch "Machst du es nicht ordentlich, wirst du es zweimal tun müssen" vor Augen, wird einem schnell klar, dass man sich durch unsaubere Arbeit keine Zeit einspart, sondern einen "Abschluss" der Aufgabe teuer erkauft. Denn Software wird nicht zum Selbstzweck entwickelt, sondern sie soll helfen Probleme zu lösen und nicht zum Problem werden. Ausserdem versucht ein guter Craftsman vieles zu automatisieren und kann so die anfänglich zusätzliche verbrauchte Zeit schnell wieder einsparen.

Automatisierung ist ein Schlüssel zur effektiven Softwareentwicklung

Um in der heutigen Zeit effektiv zu sein, benötigt es einen hohen Automatisierungsgrad und möglichst wenig Medienbrüche im Entwicklungsprozess. Ein gutes Entwicklungsteam benötigt daher Erfahrung in der Test- und Buildautomatisierung. Nur so ist das Team in der Lage den aktuellen Zustand des Gesamtsystems schnell zu bestimmen und auf Probleme zu reagieren.

Ohne automatisierte Tests nimmt die Entwicklungsgeschwindigkeit ab

Aber auch das Handwerkszeug der Entwickler ist wichtig. Man würde von einem Schreiner mit stumpfem Werkzeug auch keine exzellente filigrane Holzarbeit erwarten. Trotzdem müssen Entwickler mit unterdimensionierten Arbeitsrechnern und zu kleinen Monitoren unter Zeitdruck Arbeitspakete erledigen. Dadurch verlängern sich wichtige Arbeitsschritte. Die Qualität sinkt, da für ordentliche automatisierte Tests keine Zeit mehr bleibt. Da die fehlenden Tests normalerweise nicht nachgeholt werden, steigt der Anteil der manuellen Tests kontinuierlich an. Plötzlich dauert ein Release nicht mehr 2 Stunden sondern einen Tag, später ein paar Tage und irgendwann ist ein 10 Mann QA Team für jedes Release eine Woche damit beschäftigt, einen Testplan durchzuklicken.

Diese Kosten entstehen schleichend und werden leider nicht gegen eine anständige Testautomatisierung gerechnet. Schlimmer noch ist, dass das Team mit der Zeit keinen Wert mehr auf testbaren Code legt, da die Tests nicht geschrieben werden. Das verteuert eine spätere Testautomatisierung noch mehr.

Medienbrüche vermeiden

Auch Medienbrüche zwischen Aufgabenverwaltung, Fehlerdatenbank und Versionskontrolle erschweren die Arbeit der Entwickler. Ohne ein integriertes Application Lifecycle Management (ALM), ist es oft nicht möglich geordnet im Team an verschiedenen Aufgaben zu arbeiten oder zu bestimmen, welche Anforderungen wann in welcher Softwareversion eingebaut wurden. Es entstehen Wissensinseln, die getrennt mit steigendem Aufwand synchronisiert werden müssen.

Persönliche Verantwortung

Ein Software Craftsman zu sein bedeutet auch so zu arbeiten, dass man auf seine Arbeit stolz sein kann. Dies kann auch bedeuten, dass dem Chef oder Kunden klar kommuniziert werden muss, dass ein Zeitplan nicht zu halten oder eine Funktionalität so nicht (sauber) umzusetzen ist. Es ist nicht jedem direkt klar zu machen, dass dies etwas Gutes ist, da der Entwickler "die Arbeit verweigert". Wenn er es jedoch nicht tut, ist wertvolle Zeit verstrichen, in der man an dem Grundproblem hätte arbeiten können. Es ist professioneller frühzeitig zum Kunden zu gehen und zu sagen, dass ein Termin nicht eingehalten werden kann, als mit der Vogel-Strauß-Taktik zu warten, bis die Deadline an einem vorbei fliegt. Nur so kann ein Termin gerettet werden, in dem man z.B. Funktionalitäten in ein späteres Release verschieben kann.

Die Softwerkskammer

Um, auch in Deutschland die Ideale zu vertreten, hat sich eine lockere selbstorganisierte Gemeinschaft gegründet, die Softwerkskammer. Sie ist organisiert in lokal aktiven Regionalgruppen und hat das Ziel Entwickler in diesen Bereichen bei der Weiterbildung zu helfen. Dazu werden regelmäßig kostenlose Events durchgeführt, in denen sich Entwickler ohne Projektstress zum Beispiel mit Test Driven Development (TDD) oder den Clean Code Prinzipien beschäftigen können.

Orchit ist ein aktives Mitglied dieser Gemeinschaft und führt solche Events durch oder sponsert sie.