Wann ist das fertig? Über digitales Handwerk

Dinge über Softwareentwicklung, die man wissen sollte.

 

Über das Handwerk

Das Handwerk gehört zu den ältesten Formen menschlicher Arbeit und reicht in seinen Ursprüngen bis in die Steinzeit zurück. Bereits vor etwa 40.000 Jahren entstanden spezialisierte handwerkliche Tätigkeiten, unter anderem die Herstellung von Kleidung, Schmuck und Werkzeugen sowie kunstvolle Malereien. Seit dem Mittelalter (12.–15. Jahrhundert) organisierte sich das Handwerk in festen Berufen mit Ausbildungssystemen und Zünften. In den letzten Jahrhunderten beschleunigte sich die Entwicklung durch die Industrialisierung erheblich. Technische Innovationen und neue Materialien veränderten viele Gewerke grundlegend. Mit der Digitalisierung und jüngst auch durch den Einsatz von Künstlicher Intelligenz entwickelt sich das Handwerk dynamisch und in einer zuvor nie dagewesenen Geschwindigkeit. Das Handwerk bleibt dadurch ein zentraler Bestandteil der Wirtschaft und der Gesellschaft.

Typische Fragen

Es ist allgemein bekannt, dass Ungewissheit innerliche Spannungen bringt und zu Stress führt. Diese Ungewissheit erzeugt Fragen, denen ich als Entwickler und Prozessbegleiter schutzlos ausgliefert bin.

Vorweg: Ich kann viele Frage nachvollziehen und verstehe , warum sie gestellt werden. Es geht mir nicht anders und ich würde sie genauso stellen.

Die häufigsten Fragen, die einem im Entwickler-Leben begenet sind die Fragen "Was kostet es?" und "Wann ist es fertig?". Diese Fragen sind auch gleichzeitig die unbeliebtesten Fragen, denen ein Entwickler begegnet, da sie Stress und Frust auslösen. 

Aber warum ist das so? 

Jeder möchte irgendwann fertig werden. Jeder hat Deadlines im Kopf. Das gilt nicht nur für Entwickler oder Kunden. Das gilt auch für jedes Handwerk, selbst beim Hausbau oder bei Waschmaschinen-Reparaturen. Zudem stehen meist auch nicht unbegrenzt Geld oder Zeit zur Verfügung. 

Veranschaulicht werden kann dieses Spannungsverhältnis über das magische Dreieck des Projektmanagements. Dieses sagt aus, dass es es immer eine Abhängigkeit zwischen Kosten, Zeit und Umfang gibt. Ändert man eine Ressource, so beeinflusst dies die anderen.

Wer mehr erfahren möchte kann sich entweder an Wikipedia wenden oder spielt einfach ein wenig mit meinem dyamischen Qualitätsregler unter diesem Block.

Top 5 der Fragen

5. Kann ich das auch selber machen?

4. Warum ist das so kompliziert?

3. Kann man das nicht so machen?

2. Was kostet es?

1. Wann ist es fertig? 

Neuester Trend: 
Kann das nicht auch mit / durch KI gemacht werden?

Unsere Waschmaschine ist kaputt

Anmerkung: Dies ist nicht (nur) mein persönliches Empfinden, sondern ist psychologisch in Studien untersucht. Quellen unter anderem: hier , hier und hier

Als unsere Waschmaschine im letzten Jahr kaputt ging, ging mir die Frage meiner Frau "Wann ist das Ding endlich fertig? Wir müssen Waschen!" nicht so nahe, wie häufig die Frage in Bezug auf Softwareprojekten.

Das Problem der Waschmaschine scheint zunächst auch komplex und man muss entscheiden, wegschmeißen und neu kaufen, reparieren lassen, selber reparieren oder für immer mit der Hand waschen. Betrachtet man das Problem analytisch, so stellt der findige Softwareentwickler fest, dass eine Waschmaschine aus ca. 40-80 Kernkomponenten besteht, die untergliedert sind in Elektronik, Mechanik, Wasserführung und Gehäuse. Schließt man mit etwas Menschenverstand einige Fehlerquellen aus, so reduziert sich die Problemquelle auf Elektronikplatine, Pumpe und Heizstab . Der geschulte Handwerker benötigt mit seiner Erfahrung in der Regel einen Schraubendreher, eine Zange, ein übliches Ersatzteil für 30 Euro und schon läuft die Waschmaschine in 30 Minuten wieder. Es ist für ihn ein sich wiederholender, ähnlicher Prozess bei der Fehlersuche und bei der Reparatur. Der findige Softwareentwickler braucht im Gegensatz zum Handwerker sicherlich gute 15 Stunden mehr, das Problem ist aber greifbar. 

Im Vergleich zum klassischen Handwerk arbeiten Softwareentwickler aber mit unsichtbaren Objekten. Bei der Entwicklung, Konzeption und Beratung sind Dinge wie Programmcode, Abhängigkeiten, Fehler und Komplexität für nicht Fachleute nicht sichtbar und kaum einzuschätzen. Für den geübten Entwickler ist aber jedes Programm und jede Abhängigkeit im gegensatz zur Waschmaschine neu. 

Handwerker nutzen Werkzeuge wie beispielsweise Zange, Schraubendreher, Messgeräte. Sie sind geschult und geübt mit deren Umgang. Der Aufbau der Elektronik musste gelernt werden. Ich unterstelle in diesem Augenblick jedoch, dass sich sowohl das notwendige Werkzeug, als auch die Funktionsweise einer Waschmaschine im Groben wenig ändern. Die Bedienung eines Schraubendrehers war vor 30 Jahren annähernd wie heute. Ebenfalls waren damals wie heute Waschmaschinen auch mit einer Trommel, einer Pumpe und einem Heizstab ausgestattet. Die Komplexität und das Setting ist also bekannt. 

In der Softwareentwicklung gibt es auch Werkzeuge: Computer, Tastatur Maus, Programme wie ein Editor, Server, Programmiersprachen, Funktionsbibliotheken (wir machen ja auch nicht alles neu). 

 

Das Problem mit den Werkzeugen

Viele dieser Werkzeuge ändern sich - und das immer schneller, mittlerweile fast täglich. In diesem Beispiel zu sehen sind die PHP-Versionen, mit denen ich von Beginn an arbeite und ihre Webapplikationen entwickle. Jedes Jahr kommen neue Versionen mit neuen Funktionsumfang, Verbesserungen hinzu, teilweise werden Funktionen angepasst oder gestrichen.

Mein Editor wird 2x pro Jahr aktualisiert, die Browser gefühlt jede Woche, ähnlich wie Windows, die Server-Systeme und Smartphones.  

Speziell bei den Webappliakationen, die ich auch an ihre bestehenden Systeme anbinde, nutze ich Funktionen von vielen Verschiedenen Quellen. Es gibt Webbrowser, Smartphones, das Internet per Kabel und mobil, Fremdsysteme (z.B. ihre Warenwirtschaft, Shops, Cloudspeicher, Datenbank) und Bibliotheken (z.B. für die Bedienung per Finger auf Smartphones, der Visualisierung). 

Und der Druck auf einen Entwickler wächst mit der Masse, ob man bei dem bleibt, was man kann und kennt oder über den Tellerrand hinausblickt und sich mehrere Tage und Wochen in neue Gebiete einarbeitet.  

Es besteht kein Zweifel, dass neue Technik auch spannend sein kann.

Entwickeln ist wie Rätselraten.

Waschmaschinen reparieren, Häuser bauen, Schränke bauen - alles ist harte Arbeit, bei der man schwitzt. Entwickler schwitzen beim Denken, da ihre Arbeit darin besteht viele Rätseln zu lösen. Und dessen Schwierigkeiten variieren. 

  • Welche Werkzeuge und Tools nutzt man?
  • Welche Technologien kann und muss man wie kombinieren?
  • Was weiß man? Was weiß man noch nicht - die spannendste Frage? 

Je komplexer die Aufgabe, je mehr Abhängigkeiten, desto mehr Fragen müssen parallel gelöst werden. Manchmal sind die Aufgaben verworren, manchmal zahlreich. Die Art variiert also: Manchmal ist es ein klassisches Rätsel, manchmal die Suche in einem Wimmelbild oder vielleicht ein Sudoku. Haben wir gar ein Logical, einen Escape-Room auf Zeit oder müssen wir die Unvereinbarkeit der Kundenideen von Quantenmechanik und Relativitätstheorie lösen?

Im Gegensatz zu einem Rentner bei seinen morgendlichen oder abendlichen Rätseln in der Zeitschrift oder dem Waschmaschinen-Reparatur-Guru findet das Rätsellösen eines Softwareentwicklers nicht nur eine halbe Stunde am Stück statt. Sie machen dies teilweise vier, sechs, acht, zehn Stunden pro Tag und das neben der eigentlich Entwicklungsarbeit und de Kundenbetreuung.

Viele Rätsel kennt man und hat sie bereits gelöst. Aber es gibt auch Neue, bei denen man erst verstehen muss, wie sie funktionieren. Manche Lösungswege und Lösungsdauern findet man erst mit Abschluss des Rätsels. Oder wissen Sie immer im Vorfeld wie lange Sie für einen Escape-Room benötigen? 

Spannend wird es, wenn der Kunde auch nicht so recht weiß, was es für ein Rätsel ist.

Entwickeln ist ein Prozess

Kunde: "Ich habe ein Rätsel zu lösen. Wann sind sie fertig und wie lange brauchen sie?"
Entwickler: "Was für ein Rätsel?"
Kunde: "Ich weiß nicht genau. Etwas mit ein paar Zahlen..."
Entwickler: "Ein 15x15 Nonogramm etwa 5 Minuten." 
Kunde: "Beauftragt! Deadline in 4 Minuten." 

Was der Kunde sich wünscht.
Was dem Entwickler erzählt wird. 
Was es in Wirklichkeit ist.

Selten weiß der Kunden oder Auftraggeber nicht, was er überhaupt will. Und das ist normal und vollkommen in Ordnung!

Es fängtimmer mit einer Idee an.

  • Wir brauchen eine neue Webseite.
  • Werte XY sollen nun erfasst werden.
  • Die App soll nun auch Bilder fotografieren und bearbeiten können.

Die Kernfrage ist, wann man damit zum Entwickler geht. Braucht es bloße eine stupide Umsetzung, so hilft ein IT-Kollege, der wie eine technische Maschine einen Plan einfach ausführt. Vielleicht hilft auch die KI (Entschuldigung für diese Degradierung an dieser Stelle), die meint alles zu können, dann nach vier Korrektur-Durchgängen den Anfang wieder vergisst.

Benötigt man allerdings einen Plan ausgearbeitet oder braucht und wünscht man Hilfe um Funktionsweisen zu entwickeln - beides ist die größte Arbeit in der Softwareentwicklung - da helfen meine Erfahrung und ich gerne mit. Jede Entscheidung über einen Weg führt unweigerlich dazu, dass es weitere Wege gibt, die bedacht werden müssen. Manchmal haben diese auch nichts mehr mit Programmierung zu tun. So viele Rattenschwänze an Rätseln...

Selbst bei meiner eigenen Arbeit oder der Anleitung meiner Mitarbeiter muss ich mich immer wieder fragen, was ich überhaupt will und was der Weg ist. Das ist normal. Die Arbeit beginnt mit den Abläufen, um dann später alles wiede rneu zu machen.

Entwickeln frustriert

Aufwandsschätzungen wären einfacher, wenn es keine Stolpersteine geben würden. Damit meine ich sowohl technischer als auch funktioneller und organisatorischer Natur. 

Stellen sie sich vor: Die Waschmaschine ist wieder kaputt. Sie ging aber gerade noch. Wasser - funktioniert. Strom - geht nicht? Wieso? Und plötzlich schaltet man nach drei Stunden Fehlersuche das Radio ab, weil man aufgibt, und plötztlich geht sie wieder.

Vieles passiert und zwar unerwartet. Bestenfalls hat man Pufferzeit einberechnet. Wie viel notwendig ist fraglich, da eine Software aus ganz vielen Einzelteilen besteht und auf vielen Werkzeugen basiert. Es ist fast wie ein Dominospiel in dem andere auf den Steinen hüpfen.

Hinzu kommt: Entwickler erschaffen eigene kleine Babys und haben somit eine stärkere Bindung zu den Projekten als zu Waschmaschinen.

Entwickeln macht Freude

Jetzt könnte man meinen, warum tut man sich das als Entwickler und Kunde nur an. Um es kurz zu machen:

  • es ist toll, kreativ sein zu können
  • es ist toll, wenn wir gemeinsam Lösungen entwickeln
  • es ist toll, wenn Lösungen auch realisiert sind und wertvollen Nutzen bringen

Software lebt und ist genau wie die Entwicklung unterworfen von ständiger Anpassung und neuen Ideen.

Ich bitte Sie um Verständnis, wenn sich Angebote und Projekte hinauszögern, teilweise schwer schätzen lassen. Kommunizieren Sie Dringlichkeiten und Vorstellungen klar. Dies hilft bei der Priorisierung und schafft gegenseitiges Verständnis, Wertschätzung und Vertrauen.