Much of the skill of Prolog programming comes from the ability to harness its comparatively simple syntax in sophisticated ways. It is possible to provide an account of part of the activity of Prolog programming in terms of the application of techniques—standard patterns of program development which may be applied to a variety of different programming problems. Numerous researchers have attempted to provide formal definitions of Prolog techniques but there has been little standardization of the approach and the computational use of techniques has been limited to small portions of the programming task. We demonstrate that techniques knowledge can be used to support programming in a wide variety of areas: editing, analysis, tracing, transformation and techniques acquisition. We summarize the main features of systems implemented by the authors for each of these types of activity and set these in the context of previous work, using a standard style of presentation. We claim that a techniques-based system which integrates these features would be worth more than the sum of its parts, since the same techniques knowledge can be shared by the different subsystems.