Die letzten 50 Jahre Computerentwicklung sind geprägt von tiefgreifenden Veränderungen, die sowohl die Art und Weise der Programmierung als auch die Effizienz von Entwicklerteams revolutioniert haben. Der Landmark-Band „The Mythical Man-Month“ von Frederick P. Brooks aus dem Jahr 1975 bleibt trotz seines Alters eine wertvolle Referenz, um zu verstehen, welche Herausforderungen und Prinzipien über die Jahrzehnte erhalten geblieben sind und welche Aspekte sich grundlegend gewandelt haben. Der Titel „The Mythical Man-Month“ ist vor allem wegen Brooks’ Gesetz bekannt: Die Hinzunahme von mehr Arbeitskräften zu einem verspäteten Softwareprojekt führt meist zu weiteren Verzögerungen. Doch abgesehen von dieser Erkenntnis zeigen der Wandel und der Fortschritt der letzten fünf Jahrzehnte ein vielschichtiges Bild der Softwareentwicklung und der damit verbundenen Effizienzsteigerungen.
Ein zentrales Thema bei der Betrachtung der vergangenen fünf Jahrzehnte ist die Entwicklerproduktivität. In den frühen Tagen der Computerentwicklung war die Produktivität der Programmierer durch unzählige Herausforderungen eingeschränkt. Tools waren selten portabel und mussten speziell für jede Hardware- und Programmiersprache neu entwickelt oder angepasst werden. Ein Entwickler, der für das IBM 360-Betriebssystem programmierte, stand vor der Aufgabe, neue Programmierschnittstellen zu schaffen und ältere Programme, die für andere Systeme geschrieben wurden, neu zu schreiben. Dieses Problem der geringen Portabilität zieht sich durch die frühe Softwaregeschichte wie ein roter Faden.
Hardware-Architekturen waren vielfältig, standen oft in Konkurrenz zueinander und machten die Softwareentwicklung zu einer durch ständige Neuerungen und Kompatibilitätsprobleme geprägten Disziplin. Im Gegensatz dazu hat sich heutige Softwarelandschaft stark professionalisiert. Standardisierte Hardwarefamilien wie x86 und ARM haben den Wechsel zwischen Geräten stark vereinfacht. Betriebssysteme haben sich weiterentwickelt, sodass bei einem Computerwechsel häufig keine Anpassung der Software nötig ist. Windows beispielsweise legt großen Wert auf Abwärtskompatibilität, sodass selbst Programme, die ursprünglich für ältere Bit-Architekturen entwickelt wurden, weiterhin laufen.
Plattformen auf Betriebssystemebene, wie die Java Virtual Machine oder Webbrowser, ermöglichen zudem die Ausführung von Programmen auf vielen verschiedenen Systemen, was die Portabilität weiter erhöht und Entwicklungszeiten verkürzt. Neben der Portabilität war und ist die Verfügbarkeit guter Werkzeuge ein essenzieller Faktor für die Produktivität. In den Anfangszeiten wurde Werkzeugschaffung oft als ein persönliches Geheimnis betrachtet. Programmierer hüteten ihre Tools wie wertvolle Schätze, da sie dadurch einen Vorteil bei ihrer Arbeit gegenüber Kollegen erlangten. Die Zeit der Einzelkämpfer und Werkzeug-Sammler ist mit dem Aufkommen des Internets und der Open-Source-Bewegung jedoch Geschichte.
Heute sind Entwicklerwerkzeuge in großen Teilen frei verfügbar und werden gemeinsam weiterentwickelt. Projekte wie Visual Studio Code, Jenkins oder populäre Frameworks für Frontendentwicklung wie React und Next.js zeigen, wie kollaborative Entwicklungen Werkzeuge ständig verbessern und zugänglich machen. Eine weitere wichtige Entwicklung ist die Entstehung spezialisierter Plattform-Teams in größeren Unternehmen, die sich um die Bereitstellung zentraler Werkzeuge und Bausteine kümmern, während Produktteams diese verwenden, um neue Funktionen und Produkte zu entwickeln. Dieses Prinzip wurde bereits in den 2010er Jahren etwa bei Uber umgesetzt und spiegelt eine clevere Organisation wider, die es erlaubt, durch gemeinsame Infrastruktur die Geschwindigkeit und Qualität der Produktentwicklung zu erhöhen.
Während Brooks noch davor warnte, alle Entwickler-Tools in einem Team zusammenzufassen, da dies Effizienzverluste bedeuten könnte, zeigt die heutige Praxis, dass spezialisierte Plattform-Teams in einem Unternehmen durchaus Sinn machen, sofern sie Flexibilität und Anpassungsfähigkeit bewahren und zugleich Gemeinschaftsstandards schaffen. Ein weiteres Thema, das Brooks in seinem Buch angesprochen hat, ist das Debugging, also die Fehlersuche und -behebung in Softwaresystemen. Schon damals war bekannt, dass dieser Teil der Programmierung der langsamste und schwierigste ist. Interactive Debugger, also Programme, die das Anhalten des Programms in definierten Haltepunkten und das Prüfen von Variablen während der Laufzeit erlauben, haben die Produktivität deutlich gesteigert. Brooks berichtete sogar von einer Verdopplung der Produktivität in Systemprogrammen durch die Nutzung solcher Werkzeuge.
Diese Erkenntnis wird durch heutige Entwicklungsumgebungen wie Visual Studio, IntelliJ oder Eclipse bestätigt, die umfangreiche, interaktive Debugging-Funktionen bereitstellen. Die Herausforderung des Fehlermanagements bleibt bis heute aktuell. Zwar sind die Werkzeuge besser geworden, und automatisierte Tests, Feature Flags und andere Methoden unterstützen Entwickler darin, Fehler schneller aufzuspüren und zu beheben. Doch die Hauptursache für unerwartete Fehler liegt oft in unzureichenden oder missverständlichen Anforderungen und Spezifikationen. Diese Erkenntnis hat sich über Jahrzehnte gehalten, und trotz technischer Verbesserungen bleibt die präzise und klare Dokumentation eine der zentralen Säulen erfolgreichen Softwareentwickelns.
Betrachtet man den Umgang mit Dokumentation im Laufe der Zeit, zeigt sich eine interessante Entwicklung. Anfangs war Dokumentation schlicht notwendig. Während der Hochphase der Wasserfall-Entwicklung wurde sie zum unverzichtbaren Element, um Projektphasen klar zu strukturieren und den Fortschritt zu verfolgen. In den 2000er Jahren ging der Fokus zeitweise eher auf agile Methoden und schnellere Iterationen, weshalb Doku oft vernachlässigt wurde. Heute erlebt ausführliche Dokumentation, gerade in der Planungsphase, eine Renaissance.
Sie dient als Kommunikationsmittel, um Anforderungen zu klären, gegenseitige Erwartungen abzugleichen und die technische Basis für das weitere Vorgehen zu schaffen. Trotz all der Fortschritte in Tools, Prozessen und Organisation bleibt ein Fakt seit 50 Jahren unverändert: das schwierige Management von Terminen innerhalb von Softwareprojekten. Verzögerungen bei der Auslieferung sind weiterhin die Regel, nicht die Ausnahme, und oft wird versucht, Verzögerungen soweit möglich zu verdecken. Brooks’ Beobachtung, dass gute Meilensteinplanung und effektive Führung entscheidend für den Projekterfolg sind, gilt daher auch heute noch uneingeschränkt. Die Komplexität der Projekte und der Einfluss vieler externer Faktoren machen eine verlässliche Zeitplanung nach wie vor zur Herausforderung.
In der heutigen Softwarelandschaft existieren diverse Frameworks und Messmethoden, mit denen versucht wird, die Produktivität und Effizienz von Entwicklerteams messbar zu machen. Modelle wie DORA, SPACE oder DevEx bieten dabei Hilfestellungen, wie der Entwicklungsprozess analysiert und optimiert werden kann. Große Unternehmen wie LinkedIn oder Uber teilen mittlerweile öffentlich ihre Erfahrungen mit der Messung von Produktivität, was eine neue Qualität von Erkenntnissen über Softwareentwicklung bietet. Zusammenfassend lässt sich sagen, dass „The Mythical Man-Month“ nach 50 Jahren noch viele Kernwahrheiten beinhaltet, jedoch viele der damit verbundenen technischen Herausforderungen durch den technologischen Fortschritt heute anders gelöst werden. Entwickler sind dank portabler Systeme, offener und gemeinschaftlich weiterentwickelter Werkzeuge sowie spezialisierter Plattform-Strukturen deutlich produktiver als noch in den 1970er Jahren.
Dennoch bleiben organisatorische Herausforderungen, wie Terminmanagement, klare Spezifikationen und gutes Dokumentationsmanagement, unverändert wichtige Erfolgsfaktoren für Softwareprojekte. Die letzten fünf Jahrzehnte zeigen so zugleich Kontinuitäten als auch radikale Veränderungen, die den Weg für die heutige Softwareindustrie geebnet haben und sicherlich auch die Zukunft prägen werden.