Wie vor 20 Jahren von DeMarco und Lister in Peopleware festgestellt wurde, scheitert die überwiegende Mehrheit der gescheiterten Softwareprojekte nicht an technischen Herausforderungen, sondern an soziologischen Problemen . Dies hat sich in den letzten Jahrzehnten nicht geändert, egal wie sehr sich unsere Werkzeuge verbessert haben.
Missmanagement, unrealistische Erwartungen, Versäumnis, die richtigen Leute für den Job zu finden und / oder sie nicht ihren Job machen zu lassen, was zur Folge hat, dass sie nicht gehalten werden; Arbeitsplätze und Werkzeuge, die nicht für SW-Entwicklungsarbeiten geeignet sind; unbehandelte persönliche Konflikte; Politik ; Dies sind nur einige der typischen Probleme, die dazu führen können, dass ein Projekt von Anfang an zum Scheitern verurteilt ist.
Warum ist es schwieriger, guten Code zu schreiben?
Ich bin nicht ganz davon überzeugt, dass es wirklich schwieriger ist, guten Code zu schreiben als noch vor Jahrzehnten. Im Vergleich zu Maschinencode oder Baugruppen ist alles, was wir jetzt im Mainstream haben, viel einfacher zu handhaben. Nur müssen wir möglicherweise mehr davon produzieren.
Liegt es nur an den genannten Faktoren, Zeit und Komplexität?
Ja, die erreichbare Komplexität hat mit zunehmender Leistung unserer Werkzeuge mit Sicherheit zugenommen (und nimmt auch weiterhin zu). Mit anderen Worten, wir gehen immer wieder neue Wege. Das bedeutet für mich, dass es genauso schwierig ist, die größten Herausforderungen von heute zu lösen wie vor 30 Jahren, die größten Herausforderungen dieses Tages zu lösen.
OTOH Da das Feld so enorm gewachsen ist, gibt es heute weit mehr "kleine" oder "bekannte" Probleme als vor 30 Jahren. Diese Probleme sind technisch (sollten) keine Herausforderung mehr sein, aber ... hier kommt die obige Maxime :-(
Auch die Zahl der Programmierer ist seitdem enorm gewachsen. Und zumindest meine persönliche Wahrnehmung ist, dass das durchschnittliche Niveau an Erfahrung und Wissen zurückgegangen ist, einfach weil immer mehr Junioren auf dem Feld sind, als Senioren, die sie ausbilden könnten.
Sind die Methoden nicht richtig geübt?
IMHO sicherlich nicht. DeMarco und Lister haben einige harte Worte zu Big-M-Methoden. Sie sagen, dass keine Methodik ein Projekt erfolgreich machen kann - nur die Leute im Team können. OTOH die Small-M-Methoden, die sie loben, sind ziemlich nahe an dem, was wir heute als "agil" kennen, was sich weit verbreitet (IMHO aus gutem Grund). Ganz zu schweigen von bewährten Praktiken wie Unit-Testing und Refactoring, die noch vor 10 Jahren nicht allgemein bekannt waren und die heutzutage selbst viele Absolventen kennen.