This appendix contains a description of the eleven most common causes of delays in projects. For a detailed analysis of these and other causes of delays, see the works by McConnell and by Goldratt (McConnell, 1996, Goldratt, 2002).
- Expansion of functionality
The expansion of functionality is a phenomenon in which new functionalities continue to be conceived and requested as the project proceeds. The software can never be completed in this way.
- Gold plating
Gold plating is a phenomenon in which programmers and designers try to make many details of the software or design too elaborate. Much time is spent improving details, even though the improvements were not requested by the customer or client. The details often add little to the desired result.
- Neglecting quality control
Time pressure can sometimes cause programmers or project teams to be tempted to skip testing. This frequently causes more delays than it prevents. The time that elapses before an error is discovered in the software is associated with an exponential increase in the time that is needed to repair it.
- Overly optimistic schedules
Overly optimistic schedules place considerable pressure on the project team. The team will initially attempt to reach the (unrealistic) deadlines. These attempts lead to sloppy work and more errors, which cause further delays.
In this regard, be particularly wary of schedules that are imposed from above. The desire to complete a project (more) quickly sometimes arises for primarily strategic reasons; if it is not feasible, however, it should not be attempted. The project will not proceed more quickly and the product will ultimately suffer.
- Working on too many projects at the same time
Dividing work across many different projects (or other tasks) causes waiting times that lead to many delays in projects.
- Poor design
The absence (or poor realisation) of designs leads to delays, as it requires many revisions at later stages.
- The ‘one-solution-fits-all’ syndrome
Using the right software for a project is important. Some software platforms are more suited to particular applications than others are. Thinking that the use of particular software will greatly improve productivity, however, is also a trap.
- Research-oriented projects
Projects in which software must be made and research must be conducted are difficult to manage. Research is accompanied by high levels of uncertainty. When or if progress will be achieved in research is unclear. When software development is dependent upon the results of research, the former frequently comes to a standstill.
- Mediocre personnel
Insufficiently qualified personnel can cause project delays. Technically substantive knowledge of the subject of the project plays a role, as do knowledge and skills in working together to play the game of the project.
- Customers fail to fulfil agreements
Customers are not always aware that they are expected to make a considerable contribution to the realisation of a project. When customers do not react in a timely manner to areas in which they must be involved, projects can come to a standstill. Worse yet, the team may proceed further without consulting the customer, which can lead to later conflicts.
- Tension between customers and developers
The tension that can arise between customers and developers (e.g. because the project is not proceeding quickly enough) can cause additional delays, as it disturbs the necessary base of trust and the working atmosphere.