Naur on Programming as Theory Building (1985) [pdf]
pages.cs.wisc.eduI've really liked this essay and think it's getting at something essential, but at the same time I think some of the conclusions aren't well supported. I heartily agree that a principle part of programming is building, maintaining, and sharing our understanding of the systems. I don't see why that implies that there are no concrete methodologies that could help us do that, and I don't think the essay does a good job of making the link.
I think it's helpful to take the specific quote that describes his apparent view:
> An elaborate study of five different methods by C. Floyd and several coworkers [Floyd, 1984] concludes that the notion of methods as systems of rules that in an arbitrary context and mechanically will lead to good solutions is an illusion.
> ...
> Where the Theory Building View departs from the methodologists is on the question of which techniques to use and in what order. On the Theory Building View this must remain entirely a matter for the programmer to decide, taking into account the actual problem to be solved.
This is not an outright rejection of methods or methodologies, only the method-centric view: The belief that there is some universally (or near universally) applicable method which can mechanically be applied to solve arbitrary problems in programming.
it does not imply that no concrete methodologies would help us, but rather they will all fail at truly capturing the theory built by the programmer, as per the author.
really interesting to see such theory can be applied to multiple fields