Eine solche Inkompetenz wäre mit anderen Ingenieurdisziplinen niemals durchgekommen. Unter keinen Umständen würden wir Bridges akzeptieren, die so viele Fehler aufweisen wie das durchschnittliche Softwaresystem. Warum ist die Software-Design-Situation so schlimm? Warum gibt es so viele Feigenprogramme auf der Welt?
Um den Grund dafür zu verstehen, müssen wir zunächst verstehen, wie sich die Fähigkeiten eines Entwicklers auf die Nützlichkeit der von ihm erstellten Software zur Lösung eines bestimmten Problems auswirken.
In der ersten Kategorie sehen wir "Entwickler", die im Wesentlichen inkompetent sind. In dieser Kategorie gibt es ein breites Spektrum an Fähigkeiten, aber jeder darin ist insofern ähnlich, als sein Endprodukt funktionell nutzlos ist. Computer sind in dieser Hinsicht rücksichtslos - wenn Sie nicht wissen, wie Sie Ihre Anwendung zum Kompilieren bringen können, können Sie sie auch gar nicht schreiben. Wenn Sie nicht wissen, wie Sie die grundlegenden Funktionen Ihrer Anwendung erstellen, wird sie von absolut niemandem verwendet. Unterhalb eines bestimmten Skill-Schwellenwerts können Sie keine verwendbare Software erstellen. Die meisten "Entwickler" in dieser Kategorie experimentieren in ihrer Freizeit mit Code und erstellen selten professionelle Software.
Sobald wir jedoch die Schwelle überschreiten, ändert sich die Situation dramatisch. Am unteren Rand des Diagramms befinden sich die Entwickler, die in der Lage sind, minimal funktionsfähige Softwaresysteme zu erstellen. Und wenn sich diese Entwickler verbessern, wächst auch der Nutzen ihrer Software schnell. Eine Anwendung, die "funktionierte", aber langsam, fehlerhaft, unsicher und verwirrend war, wird allmählich weniger fehlerhaft, leistungsfähiger, sicherer und verständlicher. Im Gegensatz zu den beiden anderen Kategorien wird die von ihnen erstellte Software erheblich besser, wenn Entwickler in dieser Kategorie Fähigkeiten entwickeln.
Wenn Entwickler eine bestimmte Fähigkeitsschwelle erreichen, überschreiten sie diese.
und fallen in die dritte Kategorie. In einer Kategorie, in der jeder ein so hohes Maß an Kompetenz erreicht hat (in Bezug auf die Aufgabe, die er löst), dass weiteres persönliches Wachstum nur minimale Auswirkungen auf das Endprodukt hat. Beispielsweise kann jeder zufällig ausgewählte Ingenieur von Google eine CRUD-Anwendung sowie Jeff Dean erstellen .
In einer idealen Welt wären die einzigen Entwickler in der ersten und zweiten Kategorie Studenten oder junge Berufstätige. Und alle professionellen Softwaresysteme würden hauptsächlich von Entwicklern der dritten Kategorie erstellt. Entwickler, die alle Fähigkeiten perfekt beherrschen, um ihr Problem zu lösen und Lösungen zu entwickeln, die dem theoretischen Ideal sehr nahe kommen. In einer solch erstaunlichen Welt würde die gesamte Software um uns herum ungefähr das gleiche hohe Qualitätsniveau aufweisen, genau wie erwartet funktionieren, mit optimaler Leistung und ohne Sicherheitslücken. In dieser Welt würde die Gesellschaft auf jede Software mit Freude und nicht mit Ärger reagieren.
Es gibt jedoch zwei Probleme zwischen uns und dieser Utopie.
Erstens ist die Anzahl der Entwickler in der dritten Kategorie im Vergleich zur zweiten Kategorie äußerst gering. Programmierung ist "leicht zu erlernen, aber schwer zu beherrschen". Millionen von Menschen können ein funktionierendes Skript schreiben, aber nur sehr wenige beherrschen die Kunst des Software-Designs. Darüber hinaus gibt es keine Hindernisse für den Einstieg in die Softwareentwicklungsbranche - für Programmierer gibt es kein Analogon zur American Medical Association oder zur International Bar Association. Es ist nicht verwunderlich, dass es im Vergleich zur Anzahl der kompetenten Spezialisten viel mehr Personen mit Anfangs- und Zwischenkompetenz gibt.
Zweitens ist die Nachfrage nach Entwicklern unglaublich. Softwareentwickler haben die Möglichkeit, enorme Beiträge für praktisch jede Branche zu leisten. Im Vergleich zu mehr Nischenberufen wie der Astronomie, in denen die Möglichkeiten stark eingeschränkt sind, ist die Softwareentwicklung ein Bereich, in dem es an Talenten mangelt. Das Hauptproblem besteht darin, talentierte Softwareentwickler zu finden und keine geeigneten Jobs für sie zu finden.
Wenn Sie diese beiden Probleme kombinieren, stellt sich heraus, dass die meisten Unternehmen, die erfahrene Entwickler einstellen möchten, nicht die Möglichkeit dazu haben. Es gibt nicht genug gute Leute, die eingestellt werden können, und diejenigen auf dem Markt erhalten oft unvergleichlich bessere Angebote von Unternehmen auf FANG-Ebene oder von explodierenden Startups.
Daher treffen alle anderen Unternehmen in einer solchen Situation die optimale Wahl. Sie stellen Entwickler aus der zweiten Kategorie ein. Entwickler, die allgemein als "gut genug" bezeichnet werden können. Ihre Anwendungen weisen Fehler und Sicherheitslücken auf und können keine hohen Lasten bewältigen. Aber zumindest sind diese Leute in der Lage, etwas "Funktionierendes" zu schaffen. Etwas Nützlicheres als der Status Quo. Etwas, das mit minimaler kritischer Analyse in die Produktion eingeführt werden kann.
Es kann irregeführt werden, dass diese Situation für die ganze Welt und alle Fachleute selbstverständlich ist. Aber eigentlich ist es nicht.
Es gibt viele Positionen, die ernsthaftes Training erfordern, aber in die Kategorie "leicht zu erlernen" fallen. Dies sind Berufe wie ein Taxifahrer, ein Bauarbeiter oder ein Barkeeper. In solchen Berufen gibt es einen großen Anteil von Arbeitnehmern, die die Kategorie der Hochkompetenz erreicht haben, und eine weitere Verbesserung der Fähigkeiten bringt praktisch keine Vorteile.
Es gibt auch viele Berufe, in denen die Möglichkeiten so begrenzt sind, dass Arbeitgeber lieber nur hervorragende Fachkräfte einstellen. Dies gilt beispielsweise für Pianisten. Amateurpianisten gibt es in vielen Familien, aber sie werden niemals in einem Konzertsaal spielen, da die Anzahl der talentierten Pianisten die Anzahl der geplanten Konzerte bei weitem übersteigt.
Schließlich gibt es Berufe, die schwer zu meistern sind und viele Möglichkeiten bieten, aber regulatorische Eintrittsbarrieren aufweisen. Zum Beispiel medizinische Praxis. Es gab viele Menschen in der Welt vor Obamacare, die sich keine Krankenversicherung leisten konnten und sich gerne für "mindestens eine" Gesundheitsversorgung entschieden hätten, anstatt für gar keine (lohnt es sich, dies zu tun, ist eine weitere schwierige Frage).... Aufgrund strenger Vorschriften können jedoch nur diejenigen medizinische Leistungen erbringen, die ihre hohe Kompetenz unter Beweis gestellt haben. Ähnlich ist die Situation in vielen Ingenieurdisziplinen, die einer strengen behördlichen Kontrolle unterliegen, wie dem Bau von Brücken und Wolkenkratzern und der Herstellung medizinischer Geräte.
Die Softwareentwicklung ist zu einem merkwürdigen Schnittpunkt all dessen geworden. Es ist leicht zu erlernen, daher gibt es weltweit Legionen von "gut genug" Entwicklern. Entwickler, die sehr nützliche Softwarelösungen erstellen, aber voller Fehler und Sicherheitslücken sind. Gleichzeitig ist es schwierig, diesen Beruf auf hohem Niveau zu beherrschen, so dass es viel schwieriger ist, Entwickler zu finden, die solche Fallstricke vermeiden können.
Die Softwareindustrie ist so reich an Möglichkeiten, dass die meisten Unternehmen es fast unmöglich finden, gute Fachkräfte einzustellen. Es ist so reich an Möglichkeiten, dass es zwar Legionen von Rookie-Entwicklern auf der ganzen Welt gibt, aber für jeden von ihnen Arbeit ist.
Schließlich gibt es in der Softwareentwicklung keine Eingabesteuerung. Jeder kann an einem Coding-Schulungsprogramm teilnehmen, an einigen Online-Coding-Kursen teilnehmen und am nächsten Tag seine Dienste für Upwork anbieten. Und das Produkt ihrer Arbeit kann ohne behördliche Kontrolle sofort in die Produktion eingeführt werden.
Wenn Sie alles zusammenfassen, können Sie verstehen, warum es auf der Welt so viel lahme Software gibt. Software verschlingt die Welt, begleitet von Fehlern und Sicherheitslücken.
: , , . , .
, , . CEO, «» — , .