testrus tweets about a paper written by Jason Catena discussing “Programming as Theory Building”, an article written by Peter Naur, reprinted in Alistair Cockburn's Agile Software Development:
Naur makes the argument that the act of developing software has mistakenly been taken as an act-of-production—production of “a program and certain other texts.” He cites several examples of empirical data inconsistent with the production model of development; including, the fact that documentation of arbitrary completeness and exactitude does little, if anything, to convey an understanding of a program to those not involved in its original creation.
Theory building, `a la Naur, is the individual and collective effort to: understand the world; understand how the software is shaped by the world and how it will integrate with that world; understand the essence of the software and how best to articulate (code) that essence; and understand if you have gotten the first three understandings right.
The observable activities associated with theory building include telling a lot of stories, exploring ideas, trying things to see if they work, testing your understanding, populating your physical space with evocative reminders of your understanding, and doing these things iteratively in increasingly comprehensive increments. Looks a lot like an agile environment, but bears little resemblance to a production environment.
testrus also shot me a link to an article by Dave West that references Naur's work as well.