I was recently reminded of a thought-provoking but often-overlooked essay by Peter Naur from 1985 called “Programming as Theory Building” (scan here, plain text here). He suggests that, “…programming properly should be regarded as an activity by which the programmers form or achieve a certain kind of insight, a theory, of the matters at hand. This suggestion is in contrast to what appears to be a more common notion, that programming should be regarded as a production of a program and certain other texts.” His thoughts on what programmers actually do, especially when modifying programs, seem directly relevant to most research software development. In particular, when the Jupyter Notebook and R Markdown are discussed as ways to make research more reproducible, I wonder if part of that is to encourage the programmer to make her theory of what she’s doing explicit.
This post originally appeared in the Software Carpentry blog.