Cargo Cult Software Engineering

In der Südsee gibt es einen Cargo-Kult von Menschen. Während des Krieges sahen sie Flugzeuge mit vielen guten Materialien, und sie wollen, dass das Gleiche jetzt passiert. Also haben sie arrangiert, Dinge wie Start- und Landebahnen zu bauen, Feuer an den Seiten der Start— und Landebahnen zu machen, eine Holzhütte zu bauen, in der ein Mann sitzen kann, mit zwei Holzstücken auf dem Kopf für Kopfhörer und Bambusstangen, die wie Antennen herausragen — er ist der Controller – und sie warten darauf, dass die Flugzeuge landen. Sie machen alles richtig. Die Form ist perfekt. Es sieht genau so aus, wie es vorher aussah. Aber es funktioniert nicht. Keine Flugzeuge landen. Also nenne ich diese Dinge Cargo-Kult-Wissenschaft, weil sie allen scheinbaren Regeln und Formen der wissenschaftlichen Untersuchung folgen, aber ihnen fehlt etwas Wesentliches, weil die Flugzeuge nicht landen.
– Richard Feynman

Ich finde es nützlich, einen Kontrast zwischen zwei verschiedenen Organisationsentwicklungsstilen zu ziehen: “prozessorientierte” und “verpflichtungsorientierte” Entwicklung. Prozessorientierte Entwicklung erreicht ihre Wirksamkeit durch geschickte Planung, Verwendung sorgfältig definierter Prozesse, effiziente Nutzung der verfügbaren Zeit und geschickte Anwendung von Best Practices im Software Engineering. Diese Art der Entwicklung ist erfolgreich, weil sich die Organisation, die sie verwendet, ständig verbessert. Selbst wenn seine frühen Versuche unwirksam sind, bedeutet stetige Aufmerksamkeit für den Prozess, dass jeder nachfolgende Versuch besser funktioniert als der vorherige Versuch.

Commitment-oriented development hat mehrere Namen, darunter “hero-oriented development” und “individual Empowerment”.” Engagementorientierte Organisationen zeichnen sich dadurch aus, dass sie die bestmöglichen Mitarbeiter einstellen, sie um totales Engagement für ihre Projekte bitten, sie mit nahezu vollständiger Autonomie befähigen, sie extrem motivieren und dann sehen, dass sie 60, 80 oder 100 Stunden pro Woche arbeiten, bis das Projekt abgeschlossen ist. Commitment-orientierte Entwicklung leitet seine Potenz von seiner enormen Motivationsfähigkeit ab – Studie für Studie hat ergeben, dass die individuelle Motivation bei weitem der größte Einzelbeitrag zur Produktivität ist. Entwickler verpflichten sich freiwillig, persönlich zu den Projekten, an denen sie arbeiten, und sie unternehmen oft außergewöhnliche Anstrengungen, um ihre Projekte zum Erfolg zu führen.

Organisatorische Betrüger

Bei sachkundiger Verwendung kann jeder Entwicklungsstil qualitativ hochwertige Software wirtschaftlich und schnell produzieren. Aber beide Entwicklungsstile haben pathologische Lookalikes, die nicht annähernd so gut funktionieren, und das kann schwierig sein, von den echten Artikeln zu unterscheiden.

Die Organisation der Prozessbetrüger stützt ihre Praktiken auf eine sklavische Hingabe an den Prozess um des Prozesses willen. Diese Organisationen betrachten prozessorientierte Organisationen wie das Software Engineering Laboratory der NASA und die ehemalige Federal Systems Division von IBM. Sie stellen fest, dass diese Organisationen viele Dokumente erstellen und häufige Besprechungen abhalten. Sie kommen zu dem Schluss, dass sie ähnlich erfolgreich sein werden, wenn sie eine gleichwertige Anzahl von Dokumenten erstellen und eine vergleichbare Anzahl von Besprechungen abhalten. Wenn sie mehr Dokumentation generieren und mehr Meetings abhalten, werden sie noch erfolgreicher sein! Aber sie verstehen nicht, dass die Dokumentation und die Meetings nicht für den Erfolg verantwortlich sind; sie sind die Nebenwirkungen einiger spezifischer effektiver Prozesse. Wir nennen diese Organisationen bürokratisch, weil sie die Form von Softwareprozessen über die Substanz stellen. Ihr Missbrauch von Prozessen ist demotivierend, was die Produktivität beeinträchtigt. Und es macht nicht viel Spaß, für sie zu arbeiten.

Die Commitment-Imposter-Organisation konzentriert sich in erster Linie darauf, Menschen zu langen Arbeitszeiten zu motivieren. Diese Organisationen betrachten erfolgreiche Unternehmen wie Microsoft; Beobachten Sie, dass sie sehr wenig Dokumentation generieren; bieten Sie ihren Mitarbeitern Aktienoptionen an; und dann müssen sie Berge von Überstunden leisten. Sie kommen zu dem Schluss, dass sie erfolgreich sein werden, wenn auch sie die Dokumentation minimieren, Aktienoptionen anbieten und umfangreiche Überstunden erfordern. Je weniger Dokumentation und je mehr Überstunden, desto besser! Diese Organisationen übersehen jedoch, dass Microsoft und andere erfolgreiche, auf Engagement ausgerichtete Unternehmen keine Überstunden benötigen. Sie stellen Leute ein, die es lieben, Software zu erstellen. Sie Team diese Menschen mit anderen Menschen, die Software genauso viel Liebe zu schaffen, wie sie es tun. Sie bieten großzügige organisatorische Unterstützung und Belohnungen für die Erstellung von Software. Und dann drehen sie sie los. Das natürliche Ergebnis ist, dass Softwareentwickler und Manager freiwillig lange Stunden arbeiten. Betrügerorganisationen verwechseln die Wirkung (lange Stunden) mit der Ursache (hohe Motivation). Wir nennen die Betrügerorganisationen Sweatshops, weil sie eher hart als klug arbeiten, und sie neigen dazu, chaotisch und ineffektiv zu sein. Es macht auch keinen Spaß, für sie zu arbeiten.

Cargo Cult Software Engineering

Auf den ersten Blick scheinen diese beiden Arten von Betrügerorganisationen genaue Gegensätze zu sein. Das eine ist unglaublich bürokratisch, das andere unglaublich chaotisch. Aber eine Schlüsselähnlichkeit ist tatsächlich wichtiger als ihre oberflächlichen Unterschiede. Keiner von beiden ist sehr effektiv, und der Grund dafür ist, dass keiner versteht, was seine Projekte wirklich zum Erfolg oder Misserfolg bringt. Sie gehen durch die Bewegungen, wie effektive Organisationen auszusehen, die stilistisch ähnlich sind. Aber ohne wirklich zu verstehen, warum die Praktiken funktionieren, stecken sie sich im Wesentlichen nur Bambusstücke in die Ohren und hoffen, dass ihre Projekte sicher landen. Viele ihrer Projekte stürzen ab, weil dies nur zwei verschiedene Arten von Cargo Cult Software Engineering sind, ähnlich in ihrem mangelnden Verständnis dessen, was Softwareprojekte zum Laufen bringt.

Cargo cult Software Engineering ist leicht zu identifizieren. Cargo Cult Software-Ingenieure rechtfertigen ihre Praktiken mit den Worten: “Wir haben es in der Vergangenheit immer so gemacht” oder “Unsere Unternehmensstandards verlangen, dass wir es so machen” — auch wenn diese Wege keinen Sinn ergeben. Sie weigern sich, die Kompromisse anzuerkennen, die mit einer prozessorientierten oder verpflichtungsorientierten Entwicklung verbunden sind. Beide haben Stärken und Schwächen. Wenn sie mit effektiveren, neuen Praktiken konfrontiert werden, bleiben die Softwareentwickler von Cargo Cult lieber in ihren Holzhütten mit vertrauten, komfortablen und – nicht unbedingt – effektiven Arbeitsgewohnheiten. “Immer wieder dasselbe zu tun und unterschiedliche Ergebnisse zu erwarten, ist ein Zeichen von Wahnsinn”, heißt es in einem alten Sprichwort. Es ist auch ein Zeichen von Cargo Cult Software Engineering.

Die wirkliche Debatte

In dieser Zeitschrift und in vielen anderen Publikationen diskutieren wir darüber, ob Prozess gut ist oder individuelle Ermächtigung (mit anderen Worten, verpflichtungsorientierte Entwicklung) besser sein könnte. Das ist eine falsche Dichotomie. Prozess ist gut, und so ist individuelle Ermächtigung. Die beiden können nebeneinander existieren. Prozessorientierte Organisationen können ein extremes Engagement für bestimmte Projekte verlangen. Commitment-orientierte Organisationen können Software-Engineering-Praktiken geschickt einsetzen.

Der Unterschied zwischen diesen beiden Ansätzen hängt wirklich von Unterschieden in Stil und Persönlichkeit ab. Ich habe an mehreren Projekten jedes Stils gearbeitet und mochte verschiedene Dinge an jedem Stil. Einige Entwickler arbeiten gerne methodisch nach einem 8-zu-5-Zeitplan, was in prozessorientierten Unternehmen häufiger vorkommt. Andere Entwickler genießen den Fokus und die Aufregung, die mit einer 24 × 7-Verpflichtung für ein Projekt einhergehen. Commitment-orientierte Projekte sind im Durchschnitt spannender, aber ein prozessorientiertes Projekt kann genauso spannend sein, wenn es eine klar definierte und inspirierende Mission hat. Prozessorientierte Organisationen scheinen seltener in ihre pathologischen Lookalikes zu verkommen als Commitment-orientierte Organisationen, aber jeder Stil kann gut funktionieren, wenn er geschickt geplant und ausgeführt wird.

Die Tatsache, dass sowohl prozessorientierte als auch Commitment-orientierte Projekte pathologische Lookalikes haben, hat die Debatte getrübt. Einige Projekte, die in jedem Stil durchgeführt werden, sind erfolgreich und andere scheitern. Dies ermöglicht es einem Prozessanwalt, auf den Prozesserfolg und die Fehler des Engagements hinzuweisen und zu behaupten, dass der Prozess der Schlüssel zum Erfolg ist. Es ermöglicht dem Commitment Advocate, dasselbe zu tun.

Das Thema, das auf der Strecke geblieben ist, während wir über Prozess vs. Engagement debattiert haben, ist so offensichtlich, dass es, wie der entwendete Brief von Edgar Allen Poe, einfach so offensichtlich war, dass wir es übersehen haben. Wir sollten nicht über Prozess vs. Engagement debattieren; Wir sollten über Kompetenz vs. Inkompetenz debattieren. Der wirkliche Unterschied besteht nicht darin, welcher Stil gewählt wird, sondern welche Ausbildung, Schulung und welches Verständnis für das Projekt zum Tragen kommen. Anstatt über Prozess vs. Engagement zu diskutieren, sollten wir nach Möglichkeiten suchen, das durchschnittliche Niveau der Entwickler- und Managerkompetenz zu erhöhen. Das wird unsere Erfolgschancen verbessern, unabhängig davon, welchen Entwicklungsstil wir wählen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.