Blog

Software zusammenstellen: Handwerklicher Stil

Maarten Winkels

Aktualisiert Oktober 23, 2025
4 Minuten

Wertvolle, funktionierende Software zu produzieren ist eine Kunst. Die Ausübung dieser Kunst erfordert Intuition (Einsicht), Talent und handwerkliches Geschick, wie bei jeder anderen Kunst auch. Die wichtigsten Grundsätze dieser Handwerkskunst, die auch von vielen anderen Handwerkern geteilt werden, sind "Kenne deine Werkzeuge und Materialien" und "Weniger ist mehr". Der jüngste Blog von Lars hat mich dazu inspiriert, über meine Auffassung von Handwerkskunst in der Softwareentwicklung zu schreiben.

Ein Merkmal, das diese Kunst mit den meisten darstellenden Künsten (wie Theater und Tanz) gemeinsam hat, ist, dass sie eine kollektive Kunstform ist. Die Herstellung von wertvoller Software ist eine Gruppenleistung. Die Talente, die für die Zusammenarbeit bei einer solchen "Performance" erforderlich sind, sind also sowohl technischer als auch sozialer Natur. Talente für Kommunikation und Zusammenarbeit sind mindestens genauso wichtig wie technische Talente, wie z.B. abstraktes Denken. Intuition wird hauptsächlich bei der Suche nach Lösungen eingesetzt. Tätigkeiten, die Intuition erfordern, sind Planung und Design. Es mag seltsam sein, sich in einem so akademischen und technologischen Bereich wie der IKT auf Intuition zu verlassen, aber die Entscheidungsfindung in einer nicht-deterministischen Welt ist immer stark von Intuition abhängig. Ich würde sagen, dass zwar viele der Materialien, die wir in der IKT verwenden, deterministisch sind, aber der Kontext, in dem wir Software entwickeln, ist es offensichtlich nicht. Bei wichtigen Entscheidungen über Softwareprojekte geht es selten um die Materialien und selbst wenn, sind die Informationen über die Materialien meist unvollständig und nicht exakt. Der wichtigste Beitrag zu einem Softwareprojekt ist das Handwerk. Viele Software-Projekte fühlen sich nicht einmal wie eine laufende Kunstschöpfung an, sondern eher wie eine Fabrikarbeit. Das ist nicht ungewöhnlich. Die meisten Kunstformen haben ein praktisches Gegenstück, bei dem die gleiche Handwerkskunst in einer weniger ästhetischen Form angewandt wird: Die Möbelproduktion kann als praktische Anwendung der Bildhauerei gesehen werden, die viel von der Handwerkskunst teilt. Handwerkliches Geschick wird von zwei Prinzipien getragen: "Kennen Sie Ihre Werkzeuge und Materialien" und "Weniger ist mehr". Materialien in der Softwareentwicklung sind vor allem die Programmiersprachen und Konstrukte, mit denen wir arbeiten. Dies sollte sehr weit gefasst werden: Java, .Net und Ruby sind Materialien, aber auch SQL, HTML und XML. Man könnte sogar Design Patterns als Material bezeichnen. In der Softwareentwicklung gibt es eine große Anzahl von Tools. Es gibt sie auch in allen Formen und Größen. Natürlich ist Ihr Computer ein Tool, aber auch Ihre IDE, die Datenbank und die Bibliotheken von Drittanbietern, die Sie verwenden. Es ist nicht so wichtig, welche Tools Sie für Ihren Werkzeugkasten auswählen, solange Sie sie genau kennen und sie einen vollständigen Werkzeugkasten bilden. Dies gilt insbesondere für die Bibliotheken von Drittanbietern, die Sie zur Erstellung Ihrer Software verwenden. Um die Leistungsfähigkeit, die zweifellos in dieser handwerklich vollständig zusammengestellten Bibliothek steckt, voll ausschöpfen zu können, müssen Sie ihre Stärken und Schwächen kennen und wissen, wie Sie Ihren Code mit ihr interagieren lassen können. Das Prinzip "Weniger ist mehr" gilt auf vielen Ebenen, von der Projektebene bis zur Codeebene der Softwareentwicklung. Je weniger Module Sie in Ihrem Entwurf identifizieren, desto besser. Je weniger Teams Sie in Ihrem Projekt haben, desto besser. Aber auf der Code-Ebene ist dieses Prinzip am ausgeprägtesten. Je weniger Codezeilen Sie schreiben, um die Probleme zu lösen, desto besser. Werden Sie nicht glücklich mit dem Code. Letztendlich klebt der Code, den Sie schreiben, nur Ihre Geschäftslogik und die Bibliotheken von Drittanbietern zusammen, die Sie verwenden. Die meiste Zeit des Projekts wird in die Implementierung der Kernlogik des Problems investiert, das Sie zu lösen versuchen. Der Rest entfällt auf die Konfiguration und Optimierung der Infrastruktur auf Code-Ebene. Vielleicht müssen Sie ab und zu einen Hibernate UserType, eine Spring BeanFactory oder einen XStream Converter schreiben, damit das Tool Ihren speziellen Anforderungen entspricht. Zögern Sie nicht! Solange Sie das Tool genau kennen, werden Sie sich beim Schreiben des Codes, der tief in seinem Kern steckt, sehr wohl fühlen. Das ist der Stil des Softwarehandwerks. Konzentrieren Sie sich auf die Kernprobleme in Ihrem Bereich. Setzen Sie Ihre Tools weise ein und kleben Sie sie fest an Ihren eigenen Code.

Verfasst von

Maarten Winkels

Contact

Let’s discuss how we can support your journey.