Software engineering is “the branch of CS that deals with the design, implementation and maintenance of complex computer programs”.(Merriam Webster dictionary). A cornerstone to software engineering are the patterns used for program design. In (year) the Gang of Four (GoF) presented 23 patterns used widely in industry—tried and tested—to achieve the objectives of software engineering.

In essence, there are three classes of design pattern. These classes allude to the structural, behavioural, and creational aspects of programs. The pattern used in a program need not necessarily be limited to one pattern, but may incorporate a mix of patterns, depending on the task at hand.

Knowledge of design patterns would help an initiate to understand why a complex program has been put together the way it has. This is a higher level of thinking that transcends mere programming: It is regarded that there are three stages to programming. The beginner stage is learning the syntax. The second stage is learning how to implement an algorithm. The third stage is looking at the program strategically as a way to achieving an objective.

Therefore, design patterns would be useful to the strategic overview of program design, and in-depth knowledge of design patterns will help the novice enormously especially in the second stage of implementation of a program, or otherwise in the review of code, to understanding the purpose.