Neben dem Anspruch der Wissenschaft selbst (siehe vorangegangenes Kapitel) gibt es eine intrinsische Motivation aus der Softwareentwicklung selbst, sich mit der Thematik zu beschäftigen: Alle relevante Software ist derart komplex, dass sie die menschliche Fähigkeit, sie zu erfassen und zu kontrollieren, schlicht übersteigt. Wissenschaftliche Software ist hier keine Ausnahme, sondern Bestätigung: Die intrinsische Komplexität wissenschaftlicher Fragestellungen zwingt uns dazu, entsprechend komplexe Software zu entwickeln. Ohne (technische) Hilfsmittel und das Wissen um über die Jahrzehnte entwickelte Strategien ist das aber zum Scheitern verurteilt.
Aus Sicht der Softwareentwicklung geht es im Buch nicht darum, Code zu schreiben, der funktioniert (im Sinne von: ein korrektes Ergebnis liefert), sondern um Code, der im erweiterten Sinn funktioniert, also insbesondere wiederverwertbar, zuverlässig und überprüfbar ist.
Die Motivation des Buches lässt sich in einem Satz als provokative These zusammenfassen: Code von Naturwissenschaftlern ist in der Regel viel zu schlecht, als dass er sinnvoll weiterverwendet werden kann. Das rührt aber direkt an die Grundlagen der Wissenschaft, denn ohne Nachvollziehbarkeit keine Wissenschaft und kein Erkenntnisgewinn.
Die gute Nachricht: Software zu entwickeln, die den Ansprüchen der Wissenschaft genügt, ist möglich. Die weniger gute Nachricht: das erfordert Disziplin, strukturiertes Vorgehen, Abstraktionsvermögen, die Kenntnis und das Verständnis entsprechender Werkzeuge und Techniken, und die Professionalität, dieses Wissen gewinnbringend ein- und umzusetzen.
Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, es werden aber keine Antworten zur Verfügung gestellt.
Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.
Ein gutes Buch für diejenigen, die sich intensiver und vor allem praktisch mit Programmierung im akademischen Umfeld und in den mehr physikalischen Disziplinen (inkl. Physikalischer Chemie) auseinandersetzen wollen – und denen das Buch zu wenig praxisnah ist:
Andere, (ebenfalls) auf Python zugeschnittene Bücher mit Fokus auf dessen Einsatz im naturwissenschaftlichen Kontext sind (ohne Anspruch auf Vollständigkeit):
Wer sich mehr mit Python beschäftigen möchte, dem sei auch „The Hitchhiker's Guide to Python“ von Reitz und Schlusser sehr empfohlen:
Ein sehr lesenswerter, persönlicher Bericht aus der Frühzeit der Informatik und Programmierung von einer der zentralen Figuren ist die Rede von Edsger Dijkstra 1972 anlässlich der Verleihung des Turing Award an ihn. Hier verwendet er den Begriff der „intellectual manageability“ und betont, warum er zusammen mit Abstraktion zentral für die Programmierung ist.
Auf der NATO-Konferenz zur Softwareentwicklung wurde der Begriff „software engineering“ erstmals breit bekannt gemacht. Naur und Randell haben den Bericht dieser Tagung verfasst.
Ebenfalls ein großer Klassiker, mit Fokus auf dem Projektmanagement, und dazu noch sehr gut geschrieben, ist Frederick Brooks „The Mythical Man-Month“. Hier beschreibt der Autor seine Erfahrungen bei der Entwicklung des Betriebssystems für die ersten IBM-Mainframes in den 1960er Jahren und reflektiert schonungslos über das, was gut und was schlecht war. Die Jubiläumsausgabe von 1995 enthält zusätzlich u.a. noch seinen ebenfalls berühmten Essay „No Silver Bullet—Essence and Accident in Software Engineering“. Die zentrale These dieses Essays:
There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity. Frederick P. Brooks: No Silver Bullet
Eine recht umfassende und strukturierte Einführung in die Softwaretechnik liefert Ian Sommerville mit seinem Buch „Software Engineering“ (in deutscher Übersetzung verfügbar) [Sommerville, 2018Sommerville, Ian (2018): Software Engineering, Pearson, Hallbergmoos].
Das Problem des mangelnden Stellenwerts von Programmierung in den Wissenschaften ist mittlerweile hinlänglich bekannt. Vielleicht einer der ersten, die sich intensiv mit dem Problem und möglichen Lösungen auseinandergesetzt haben, ist Greg Wilson. Er hat mit "Software Carpentry" eine Non-Profit-Organisation gegründet, die sich die Vermittlung von Programmierkonzepten im akademischen Umfeld auf die Fahnen geschrieben hat. Die Veröffentlichung von Artikeln in Journalen mit biologischem Schwerpunkt hat u.a. den Grund, dass die Bioinformatik ohne Computer nicht denkbar wäre. Das bedeutet aber nicht, dass der normale Biologe besser programmieren kann als der Chemiker oder Physiker… (eher im Gegenteil).
Die Qualität von Programmen hat letztlich viel mit der Einstellung der beteiligten Programmierer zu tun. Siehe dazu die Diskussion in Kapitel 33 von [McConnell, 2004McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington] und das Buch „The Pragmatic Programmer“ von Thomas und Hunt [Thomas, 2020Thomas, David; Hunt, Andrew (2020): The Pragmatic Programmer, Addison-Wesley, Boston].