IT-Branche: Warum es so viel schlechte Software auf der Welt gibt
Dieser Artikel ist eine Übersetzung. Das Original des Softwareentwicklers und Bloggers Rajiv Prabhakar ist hier(öffnet im neuen Fenster) zu finden.
Wir sind umgeben von miserabler Software: Pensionsfonds, die mit jahrzehntealten Batch-Skripten voller fehlerhafter Annahmen arbeiten; Kreditinstitute, bei denen mehr als hundert Millionen Sozialversicherungsnummern und andere vertrauliche Daten geleakt wurden(öffnet im neuen Fenster) – ganz zu schweigen von den Unmengen an fehlerhafter und nervtötender Software, die wir überall um uns herum sehen – bei kleinen Anbietern bis hin zur veralteten Software großer Unternehmen.
Eine solche Inkompetenz würde in anderen Ingenieurdisziplinen niemals geduldet werden. Wir würden niemals Brücken erlauben, die so fehlerhaft sind wie ein durchschnittliches Softwaresystem. Warum also ist Softwareentwicklung so schlecht?
Warum gibt es so viel miserable Software?
Um das zu klären, müssen wir als erst einmal verstehen, wie die Fähigkeiten von Entwicklern mit der Nützlichkeit der Software zusammenhängen, die sie für eine bestimmte Aufgabe herstellen.
Im ersten Bereich haben Sie die "Entwickler", die faktisch inkompetent sind. Zwar gibt es durchaus eine große Bandbreite an Fähigkeiten in diesem Bereich, allerdings sind ihre Endprodukte immer funktionell unbrauchbar. Computer sind in dieser Hinsicht unbarmherzig – wenn Sie nicht herausfinden, wie Sie Ihre Anwendung kompilieren können, können Sie sie genauso gut gar nicht geschrieben haben. Wenn Sie nicht herausfinden, wie Sie die Kernfunktionalität Ihrer App aufbauen, wird sie niemand benutzen.
Unterhalb einer bestimmten Kompetenzschwelle werden Sie einfach keine brauchbare Software produzieren. Die meisten "Entwickler" in diesem Bereich mögen sich in ihrer Freizeit mit dem Programmieren beschäftigen, aber sie werden nur selten professionelle Software produzieren.
Sobald man diese Schwelle jedoch überschreitet, ändert sich das. Am unteren Ende sind die Entwickler nun gut genug, um minimal brauchbare Softwaresysteme herzustellen. Wenn diese Entwickler besser werden, verbessert sich auch der Nutzen ihrer Software schnell. Eine Anwendung die "funktionierte", aber langsam, fehlerhaft, unsicher und unverständlich war, wird dann weniger fehlerhaft, leistungsstärker, sicherer und leichter zu verstehen. Im Gegensatz zu den anderen beiden Bereichen wird die produzierte Software deutlich besser, wenn Entwickler in diesem Bereich ihre Fähigkeiten ausbauen.

Wenn Entwickler schließlich eine bestimmte Schwelle von Fähigkeiten erreichen, kommen sie in den dritten Bereich. Das ist ein Bereich, in dem jeder von ihnen ein so hohes Maß an Kompetenz erreicht hat (relativ zu dem Problem, das gelöst werden soll), dass jede weitere persönliche Entwicklung nur noch einen minimalen Unterschied beim Endprodukt ausmacht. Jeder beliebige Mitarbeiter von Google kann eine CRUD-App erstellen, die genauso gut ist wie die von Jeff Dean(öffnet im neuen Fenster).
Programmieren ist leicht zu lernen, aber schwer zu beherrschen
In einer idealen Welt wären alle Entwickler im ersten und zweiten Bereich Studenten oder Berufsanfänger, und alle professionellen Softwaresysteme würden von Entwicklern im dritten Bereich erstellt werden – Entwickler, die die Fähigkeiten haben, die zur Lösung des gestellten Problems nötig sind, und die Lösungen produzieren, die dem platonischen Ideal(öffnet im neuen Fenster) sehr nahe kommen.
In einer solch himmlischen Welt wäre alle Software um uns herum auf einem ähnlich hohen Qualitätsniveau. Sie würde genau wie erwartet funktionieren, mit optimaler Performance und ohne Sicherheitslücken. Es wäre eine Welt, in der die Menschen auf jede Software mit Freude und nicht mit Frustration reagieren würden.
Allerdings stehen zwei Probleme zwischen uns und dieser Utopie.
Erstens ist die Anzahl der Entwickler im dritten Bereich im Vergleich zum zweiten sehr klein. Programmieren ist eine leicht zu erlernende, aber schwer zu beherrschende Tätigkeit. Millionen Menschen können ein funktionierendes Skript schreiben, aber nur sehr wenige beherrschen die Kunst der Softwareentwicklung.
Außerdem gibt es in der Softwareindustrie keinerlei Zugangsbeschränkungen – kein Software-Äquivalent zur Ärzte- oder Rechtsanwaltskammer. Es ist nicht überraschend, dass es viel mehr Anfänger und Fortgeschrittene als Experten gibt.
Zweitens: Der Bedarf an Entwicklern ist immens. Es gibt unfassbar viele Möglichkeiten für Softwareentwickler, in fast jeder Branche. Im Vergleich zu Nischenberufen wie Astronomen, wo die Jobmöglichkeiten stark eingeschränkt sind, ist Softwareentwicklung ein Bereich, in dem die Schwierigkeit darin besteht, besonders talentierte Softwareentwickler, und nicht darin, nützliche Arbeit für sie zu finden.
Kombinieren Sie diese beiden Probleme, werden die meisten Unternehmen, die erfahrene Entwickler einstellen möchten, davon abgehalten. Denn es gibt nicht genug erfahrene Entwickler für die Jobs und wenn die Firmen welche gefunden haben, bekommen sie oft unschlagbar hohe Angebote von den FANG(öffnet im neuen Fenster) oder von angesagten Startups.
So macht jedes andere Unternehmen eben das Nächstbeste: Es stellt Entwickler aus dem zweiten Bereich ein. Entwickler, die als "gut genug" kategorisiert werden können. Ihre Apps haben Bugs, Sicherheitslücken und können keine hohen Lasten bewältigen. Aber zumindest sind sie in der Lage, etwas zu bauen, das "funktioniert". Etwas, das nützlicher ist als der Status Quo. Etwas, das mit minimaler Überprüfung in die Produktion gebracht werden kann.
Man könnte versucht sein zu denken, dass all das der natürliche Zustand der Welt ist und für alle Berufe gilt. Aber das ist nicht so.
Es gibt eine Menge Jobs, die in die Kategorie "leicht zu beherrschen" fallen. Jobs wie Taxifahrer, Bauarbeiter oder Barkeeper. Jobs, bei denen ein großer Teil der Beschäftigten ihre Master-Kompetenz erreicht hat und bei denen die Erträge durch weitere Verbesserungen der Fähigkeiten stark abnehmen.
Es gibt aber auch viele Berufe, in denen die Jobmöglichkeiten so begrenzt sind, dass nur jene eingestellt werden, die über eine sehr hohe Kompetenz verfügen. Zum Beispiel Pianisten. Amateurpianisten gibt es bei jedem Familientreffen, aber Sie werden sie nie in einem Konzertsaal spielen sehen, da die Zahl der talentierten Pianisten die Zahl der geplanten Konzerte bei weitem übersteigt.
Außerdem gibt es Berufe, die schwer zu beherrschen sind und bei denen es viele Jobmöglichkeiten gibt – die aber gesetzliche Hürden haben, zum Beispiel Ärzte. In einer Welt vor "Obamacare" gab es viele Menschen, die sich keine Krankenversicherung leisten konnten und lieber irgendeine Gesundheitsversorgung als gar keine in Anspruch genommen hätten (ob das ratsam ist, ist eine ganz andere Frage).
Und doch gab es stets strenge Vorschriften, nach denen medizinische Dienstleistungen nur von denen angeboten werden durften, die eine große Kompetenz vorweisen können. Ähnlich verhält es sich mit vielen anderen Ingenieursdisziplinen, die einer starken behördlichen Aufsicht unterliegen, wie der Bau von Brücken oder Wolkenkratzern oder medizinischen Geräten.
Softwareentwicklung ist ein kurioser Querschnitt aus all dem. Man kann es leicht erlernen, daher gibt es überall auf der Welt Scharen von Entwicklern, die "gut genug" sind. Es sind Entwickler, die Softwarelösungen bauen, die zwar einigermaßen nützlich sind, aber viele Bugs und Sicherheitslücken haben. Gleichzeitig ist Softwareentwicklung schwer zu beherrschen, so dass Entwickler, die die oben genannten Fallstricke vermeiden können, viel schwieriger zu finden sind.

Softwareentwicklung ist so vielgestaltig, dass die meisten Arbeitgeber kaum Experten-Entwickler engagieren können. Sie ist so vielgestaltig, dass es trotz der Scharen unerfahrener Entwickler auf der ganzen Welt Jobs für jeden einzelnen von ihnen gibt.
Ein Coding-Bootcamp, ein paar Onlinekurse reichen
Und schließlich gibt es in der Softwareentwicklung keine Zugangsbeschränkungen. Jeder kann ein Coding-Bootcamp besuchen, ein paar Onlinekurse belegen und am nächsten Tag seine Dienste auf Upwork verkaufen. Ihre Produkte können sofort in die Produktion gehen, ohne irgendeine Form von (behördlicher) Aufsicht.
Nimmt man die drei Punkte zusammen, ist leicht zu erkennen, warum es so viel miserable Software gibt. Software verschlingt die Welt, und ihre Bugs und Sicherheitslücken tun das auch.
Nachtrag: So kritisch dieser Artikel auch klingen mag, ich empfehle nicht, den Beruf des Softwareentwicklers zu beschränken oder alle Softwaresysteme einer behördlichen Genehmigung zu unterwerfen. Dies ist ein beschreibender Beitrag, kein vorschreibender.
Er hat zudem ausschließlich die Entwicklerseite im Blick. Manager und CEOs, die Entwicklern nicht genug Zeit geben, um eine ausgereifte Software zu erstellen, sondern es vorziehen, etwas herauszuhauen, das "gut genug" ist, sind sicher ein weiterer wichtiger Grund dafür, der in einem anderen Beitrag behandelt werden wird.
- Anzeige Hier geht es zum Handbuch für Softwareentwickler bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.