This chapter considers an alternative to the ‘programming plan’ view of programming expertise, namely that expert programmers have a much wider repertoire of strategies available to them as they program than do novices. This analysis does not dispute that experts have ‘plan-like’ knowledge, but questions the importance of the knowledge itself versus an understanding of when or how to use that knowledge. This chapter will firstly examine evidence which challenges the completeness of the plan-based theory and then it will look at evidence which reveals explicit strategic differences. As the studies are presented a list of strategies available to experts will be maintained. Although the emphasis of this section of the book is on expert performance, the chapter concludes with a brief look at studies of novices, since the strategic approach includes the assumption that the strategies used by novices are different from those available to experts. From all these studies it will be seen that experts choose strategies in response to factors such as unfamiliar situations, differing task characteristics and different language requirements, whilst many problems for novice programmers stem not only from lack of knowledge, but also from the lack of an adequate strategy for coping with the programming problem.
The previous chapter has presented studies of expertise in computer programming that have concentrated on the content and structure of expert knowledge. The dominant concept has been the ‘programming plan’, which has been proposed as the experts’ mental representation of programming knowledge, and which has been used in the development of programming tutors and environments for novice programmers.
This chapter examines those aspects of expertise that are not easily explained by plan-based theories. It is intended that the strategic approach described in this chapter should be seen as a complementary, rather than alternative, explanation of expertise. As the various studies are described a list of important strategies which programmers may use will be developed. The studies that are to be presented reveal problems with two implications of the plan-based approach:
- 1that ‘programming plans’ provide a complete explanation of expert programming behaviour;
- 2that a novice can be defined as someone who does not possess this expert knowledge.
An important, but often implicit assumption of the plan-based theorists is that the cognitive processes underlying programming are relatively straightforward. Often based on ideas from artificial intelligence, these processes are taken to be general problem-solving skills (cf. SOAR, Laird et al., 1987; ACT*, Anderson, 1983), which a novice programmer also possesses. The learning of computer programming is the acquisition of the appropriate knowledge structures for the problem-solving skills to use. These knowledge structures may then be labelled ‘plans’ (see Chapter 3.1 for more details), though other possibilities exist. The critical feature is that expertise is seen as the acquisition of knowledge.
The alternative position is that expertise in programming may involve a variety of cognitive processes which, coupled with changes in knowledge, can give rise to a choice of different methods for solving any particular programming problem. These different methods can be termed strategies. The critical feature of the strategy argument is that observations of novice-expert differences can be caused by either knowledge differences, processing differences, or both.
Any assessment of this argument has two important strands. Firstly some evidence questioning the plan-based theory will be presented (evidence for the theory has been covered by the previous chapter) and then evidence of strategic differences will be described. For these reasons it is important that the evidence for alternative aspects to expertise beyond the plan-based theories is carefully considered