Pp. 159-170 in Psychology of Computer Use, ed. T. R. G. Green, S. J. Payne, and G. C. van der Veer. London: Academic Press, 1983.


The purpose of the present paper is to discuss the use of diary notes for illuminating the problems of program development. By diary notes will be understood here notes describing problems considered and solved in the course of the development of programs, taken day by day as part of the development process itself. The aspect of such notes considered here is their recording of what actually goes on in the programmer's mind during programming, in the sense of what the programmer perceives to be the task to be done and the problems and their solution. Upon subsequent analysis, diary notes may contribute to an understanding of the problems of programming, and to developing effective programming techniques.

Results of the Diary Analysis

The diary analysis given as illustration above suggests, as one result, that when the programmer is fully aware of the implications of errors in various parts of a project, his or her error rate will be influenced strongly by the severity of the consequences of errors in each part, in the sense that more errors will be made where they matter less. This result accords well with common sense and with experience reported earlier.

As another result, a problem analysis aiming at a full justification of every program part in the most effective manner has resulted in an analysis report written mostly in prose, but making use of eight different kinds of formalization. This result may be viewed as a skeptical comment on some recent work aiming at establishing a single formalized notation for program specification.

The most striking result of the present study is the indication of a high level of program design correctness obtained by a problem analysis requiring a written, articulated justification of every part of the program. This result, if generally valid, would be highly important to practical development. It therefore suggests further studies aiming at clarifying whether a problem analysis of the kind considered is a feasible approach to solving at least some of the problems of error-free program construction. Such studies should aim at finding out to what extent errors in programming are related to the argumentation used when writing the program. As another aspect, the further studies might attempt to yield observations related to other persons and problems. In either case the studies might very well make use of the diary approach, and indeed, it might be difficult to pursue them in any other way.

In conclusion it appears that several important aspects of programming can be conveniently and effectively studied by means of diaries, in the sense described above.