After the Gold Rush Mon, Jul 16. 2007

"Software engineers shall commit themselves to making the analysis, specification, design, development, testing, and maintenance of a software beneficial and respected profession. In accordance with their commitment to the health, safety, and welfare of the public, software engineers shall adhere to the following eight principles: [...]" -- The Software Engineering Code of Ethics and Professional Practice

"The success of a software project depends on not writing source code too early in the project."
McConnell sagt uns in After the Gold Rush, dass auch in der Softwareentwicklung die Zeit der amateurhaften Goldsucherei vergangen ist. Es ist an der Zeit systematisch organisiert und professionell vorzugehen. In dieser 156 Seiten umfassenden Sammlung von Essays schildert er die aktuellen Zustände der SW-Industrie und zeigt mögliche Auswege aus der Misere von nicht-enden wollenden fehlgeschlagenen Projekten.
"A Standish Group survey of more than 8,000 business systems projects found that the average project overran its planned budget by more than 100 percent."McConnell schreibt üblicherweise Bücher mit einer langen Bookshelf-Haltezeit, so auch hier. Die Krankheiten die McConnell 1999 der Software-Branche diagnostiziert, treffen auch 2007 noch zu.
Die Essays sind drei Teile geteilt:
- The Tar Pit
- Software Dinosaurs
- Fool's Gold
- Orphans Preferred
- Software Engineering Is Not Computer Science
- Prospecting
- After the Gold Rush
- Engineering a Profession
- Ptolemaic Reasoning
- Body of Knowledge
- Novum Organum
- Through the Pillars
- Stinking Badges
- Architects and Carpenters
- Hard Knocks
- The Professional's Code
- Alchemy
"The commitment software developers' have to their projects as compared to their commitment to their companies is unusual. [...] Once a programmer has visualized the software to be built, bringing the vision to life becomes paramount and the programmer feels tremendously unsettled until that can be done."

Im ersten Teil des Buches zeichnet McConnell einerseits ein Bild der SW-Branche - ein Code-and-Fix (Trial-and-Error) Entwicklungsmodell, welches zu Projekten führt, die entweder komplett failen oder hoffnungslos veranschlagte Ressourcen (Zeit, Budget) überstrapazieren und obendrein eine extrem hohe Fehlerrate aufweisen - und anderseits ein Bild der Psyche von Menschen die in der Softwareentwicklung arbeiten.
Auf die Frage ob Software-Entwicklung Kunst oder Wissenschaft ist, antwortet McConnell, dass Software-Entwicklung vieles ist, aber vorrangig doch Engineering sein sollte. Er argumentiert weiters, dass die Ausbildung von professionellen Softwareentwicklern im Rahmen eines Software-Engineering Studiums erfolgen sollte, und man nicht weiter auf Computer Science (Informatik) Abgänger zurückgreifen dürfe.
"Individual heroics can contribute to project success, but teamwork generally contributes more than individual accomplishment does."
Im darauffolgenden Teil geht es darum, warum Softwareentwicklung verantwortungsbewusster betrieben werden muss, warum die aktuellen Vorgehensweisen schlecht sind und welche Folgen aus ihnen resultieren. Welche Massnahmen sollten ergriffen werden, damit man bereits bei der Ausbildung zukünftiger Software-Engineers sicherstellen kann, dass sich zwischen den Praktiken der Besten und jenen des Durchschnitts nicht weiter eine klaffende Kluft ergibt.
"The gap between the best software engineering practice and the average practice is very wide - perhaps wider than in any other engineering discipline." -- Fred BrooksMcConnell argumentiert, dass die Ausbildung an Universitäten besser werden muss und man Standards braucht um sicherzustellen, dass Absolventen über gewisse Grundlagen in der professionellen Softwareentwicklung verfügen. Er bespricht wie mögliche Software-Engineering Studiengänge aussehen könnten, welche Themen sie behandeln sollten und welche Entwicklungen sich aktuell in verschiedenen Ländern abzeichnen.
"Keeping up to date in software engineering can be time-consuming, and many software developers don't even try. One publisher reported that the average software developer reads less than one professional book each year and subscribes to no professional magazines."
Im letzten Teil geht es schließlich um die Frage, ob professionelle Softwareentwickler nicht aufgrund ihrer Verantwortung gegenüber der Allgemeinheit (und ihren Kunden) eine Zertifizierung/Lizenzierung durchlaufen müssen sollten. Nur eine solche würde seiner Meinung nach, ein Mindestmass an fachlicher Ausbildung und Erfahrungen garantieren können und dies sei schließlich auch der Grund, warum sich andere Berufsgruppen wie Mediziner oder Ingenieure solchen Qualitätssicherungsmassnahmen unterwerfen müssten.
Ein Fehler in einem mechanischen Teil eines Boilers hatte 1937 in einer texanischen Schule zur Folge, dass dieser explodierte und mehr als 300 Schüler sterben mussten. In Texas reagierte man daraufhin, indem Ingenieure von nun an ein Lizenzierungsverfahren durchlaufen mussten, um ihren Beruf ausüben zu können. Die Steuerungs-Aufgabe dieses ehemals mechanischen Teiles wird heute oft von Software übernommen.
McConnell stellt die Frage: Warum gelten für andere Ingenieurs-Bereiche oder Berufe wie Mediziner wesentlich strengere Kriterien als für Softwareentwickler?
"An attempt to trade quality for cost or schedule actually results in increased cost and a longer schedule."
Noch müssen Software-Entwickler kein Berufsausübungsverbot fürchten, falls ein Fehler in einem Software-System Menschenleben fordert. Aktuell werden nicht einzelne Personen sondern Prozesse bzw. konkrete Softwaresysteme zertifiziert. In der Luftfahrt etwa, ist eine Erlaubnis der EASA oder FAA nötig, wenn man ein Flugzeug entwickeln und damit Passagiere befördern möchte. Um diese Zertifizierung zu durchlaufen, müssen bei der Entwicklung strenge Standards (siehe DO-178B) eingehalten werden.
"Conway's Law: the structure of a computer program reflects the structure of the organization that build it."Es sind streitbare Ziele und Wege die McConnell vorschlägt, mit denen er zwar keinen Konsens, aber immerhin doch eine Diskussion unter den Betroffen erreicht.
Update: Die zweite Edition (2004) erschien unter dem Titel: Professional Software Development - Shorter Schedules, Better Projects, Superior Products, Enhanced Careers.
Posted by Wolfgang Kaufmann
in Bücher