Unfortunately, under tight deadlines, many inexperienced developers will frequently jump right into writing code, without giving proper consideration to gathering requirements, design, and sometimes even testing. It is important to understand how these phases fit together, and what the roles of the client and the consultant typically are. While every phase of development requires the involvement of both client and consultant to some degree, establishing requirements requires the greatest participation by the client, while the development phase typically involves the least. There are two common approaches to application development. In this approach, the steps are tackled one by one, in order, and there is no backtracking.
Requirements gathering is followed by analysis, which is followed by program design, and so forth.
While in principle, this strict ordering of steps simplifies the process and makes it easier to track one's progress, in practice it is often too restrictive in not allowing for cases in which the requirements are either likely to change, or are poorly defined at the start. For example, program design may demonstrate some essential features that were left out of the requirements, causing the development team to revisit that step. Even with an iterative approach, however, some control must still be maintained over the development process to ensure that the effort still moves forward. In this phase, both consultant and client discuss the system to be developed. This is often one motivation for breaking a large project into multiple development cycles.