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