The second book I checked out of the Library of Congress with my shiny new borrowing card was Alistair Cockburn’s Agile Software Development: The Cooperative Game (which happened to just win this years Jolt Award). Early on Cockburn recommends jumping to an appendix to read Peter Naur’s article “Programming as Theory Building” (thanks ksclarke).

This is my second time reading the article, but this time it is really resonating with me–the idea of writing programs as building theories. Partly I think this is because I was reading it while I attended a recent Haskell tutorial by coworker Adam Turoff here in DC (which I will write about shortly).

On the ride to work this morning a particular quote stood out, and I’m just writing it here so I don’t forget it:

… the problems of program modification arise from acting on the assumption that programming consists of program text production, instead of recognizing programming as an activity of theory building.

It seems obvious at first I guess. But it’s a powerful statement about what the activity of software development ought to be–instead of a string of hacks that eventually brings a piece of software to its knees.