4

Peter Naur – Programming as Theory Building

Posted September 2nd, 2011 in Technical and tagged , , , , by Richard

I was re-reading appendix B in Alistair Cockburn’s book, Agile Software Development, 2nd edition.  He has posted the entire appendix on his own blog.

Peter Naur thinks it important to consider the sort of activity that programming is.  Because if it is misconceived, we will not be as successful at it as we could be.

… the main point I want to make is that programming in this sense primarily must be the programmers’ building up knowledge of a certain kind, knowledge taken to be basically the programmers’ immediate possession…

Naur calls this kind of knowledge a ‘theory’, in the sense that the philosopher Gilbert Ryle used the term. A theory in this sense is a kind of tacit knowledge that a person can acquire, that – here is the strange part – cannot be expressed, i.e. cannot be put down as so many rules or principles.  However, one in possession of a theory about a program can, by working closely with others, induce them to acquire a similar theory, one that is serviceable for carrying on the development of a computer program in accord with the theory of it.

What does this mean for practice?  It is often recommended that a team of programmers who have developed a program remain closely connected with it throughout its life.  In Naur’s sense, they possess a theory of the program that other people cannot acquire by reading the program source code and any amount of documentation, no matter how well written.  There will be objection to this idea.  It once was, and still is in some quarters, a standard practice to hand over a program to a maintenance team after the program sees production.  The idea is that the original designers, presumably expert developers, should move on to new projects where their skill in, shall we say ‘theory building’, can best be utilized.  Meanwhile, the maintenance team, usually comprised of members with less skill and experience than the original developers, will take responsibility for program extensions and bug fixes.  A major point of Naur’s essay is that this is misguided.  Without a period of transition, where at least some of the original developers work on the maintenance team, the group picking up a program having only the source and documentation will be trying to ‘resuscitate’ a dead program, a program whose original development team has dispersed and the theory forgotten.  They will be attempting to build a new theory of the program and how it relates to the world.  And it is almost guaranteed they will get it wrong.  This is not a diatribe against documentation.  But it must be realized that the point of documentation is to be an aid to memory in the building of a theory of the program.  Using a document alone is not sufficient to acquire an adequate theory of the program.  Getting that requires speaking directly – and at length – with someone in possession of it.

You will have to digest the Naur essay and see if you agree or not.  I believe that Naur is right, and that a tacit knowledge, a theory of a program and its relation to the world (domain) is created by the programmer.  This is the real activity of what we call computer programming.  It is about gaining an understanding of a certain kind and becoming an expert in that program and its domain.  This turns the programmer, as person, into a value asset for the employer.  Naur concludes that as such, programmers should be recognized for what it is they actually do, which is to become knowledgeable.  This, and not the texts they produce as source code and documents, constitutes their real contribution.  This is why programmers should be kept together as working teams and kept working on software they have developed.  Because they are the ones in possession of the program’s theory and cannot give it easily over to others, but only over time in working with new team members.

4 Responses so far.

  1. For those interested in Naur’s work, I would like to refer to my book which is based on a lengthy technical discussion that I had with Peter Naur in the spring of 2011 in Denmark. http://www.lonelyscholar.com/node/7
    Although Naur does not use the words “Agile Software Development” in my discussion with him, it does seem fair to say that he would agree with much of Agile’s underlying philosophy.

  2. Richard says:

    Edgar, thank you for your comment! I am interested in your book. I did not know that Naur was influenced by the work of William James. But I am not surprised. I am becoming more and more interested in the relationship of the history of American pragmatic philosophy to the relatively recent pragmatic turn among practitioners of software development.

  3. Richard says:

    Actually, I now recall reading an opinion piece by Peter Naur a few years ago in Communications of the ACM, in which he mentioned William James. I think this one:

    http://dl.acm.org/citation.cfm?id=1188922&dl=ACM&coll=DL&CFID=52217066&CFTOKEN=29117030

    I remember being surprised to see such an article in the ACM and surmised that it was accepted due to Naur’s prominence in computing history.

  4. Richard,

    Given your interests, you may want to have a look at the following articles:

    + H. Robinson, P. Hall, F. Hovenden, and J. Rachel. Postmodern software development. The Computer Journal, 41(6):363375, 1998.

    + J. Low, J. Johnson, P. Hall, F. Hovenden, J. Rachel, H. Robinson, and S. Woolgar. Read this and change the way you feel about software engineering. Information and Software Technology, 38:7787, 1996.

    best wishes,
    Edgar

Leave a Reply






Notify me of followup comments via e-mail. You can also subscribe without commenting.