Programming as Theory Building, das Mental Model nach Peter Naur, beschreibt Programmieren als Aufbau eines mentalen Modells: einer Theorie, warum das Programm funktioniert und wie es zur Problemdomäne passt. Nach Naurs Essay von 1985 existiert das echte Programm in den Köpfen der Entwickler, nicht im Code. Gehen die ursprünglichen Entwickler, zerfällt die Theorie, und Code allein kann sie nicht wiederherstellen; darum zählen Wissenstransfer und die Dokumentation des Warum so viel wie der Code.
Mental Model according to Naur
Details
- Vollständiger Name
-
Programming as Theory Building (Mental Model) according to Peter Naur
Kernkonzepte:
- Theory Building
-
Programmieren ist Erstellen eines mentalen Modells, nicht nur Code schreiben
- Theorie des Programms
-
Tiefes Verständnis, warum das Programm funktioniert und wie es zur Problemdomäne passt
- Wissen in Menschen
-
Das echte Programm existiert in den Köpfen der Entwickler, nicht im Code
- Theoriezerfall
-
Wenn ursprüngliche Entwickler gehen, geht die Theorie verloren
- Dokumentationsgrenzen
-
Schriftliche Dokumentation kann die Theorie nicht vollständig erfassen
- Wartung als Theorie
-
Effektive Wartung erfordert Besitz der Theorie
- Kommunikation ist Schlüssel
-
Theorie muss durch Kollaboration und Konversation geteilt werden
- Ramp-up-Zeit
-
Neue Teammitglieder brauchen Zeit, um die Theorie aufzubauen
- Code als Artefakt
-
Code ist nur eine Repräsentation der zugrundeliegenden Theorie
- Schlüsselvertreter
-
Peter Naur (Turing-Award-Gewinner, 2005)
- Originalwerk
-
"Programming as Theory Building" (1985)
Anwendung in der Softwareentwicklung:
-
Verstehen, warum Wissenstransfer herausfordernd ist
-
Betonung von Pair Programming und Mob Programming
-
Rechtfertigung von Zeit für Onboarding und Code Walkthroughs
-
Erklärung von Technical Debt-Akkumulation bei Teamwechseln
-
Unterstützung von Dokumentationspraktiken, die "Warum" erfassen, nicht nur "Was"
-
Plädoyer für Team-Stabilität und -Kontinuität
Kontrast zu anderen Sichtweisen:
-
Programmieren als Textproduktion → Fokus auf Code-Output
-
Programmieren als Problemlösung → Fokus auf Algorithmen
-
Programmieren als Theory Building → Fokus auf Verständnis