We can debate the pros and cons of one development process over another until we're blue in the face, but the simple fact is that we will never declare a true winner. There simply is no silver bullet development process that will help every development team deliver every product on time and on budget. This article provides a brief overview of three development processes and when they are most appropriate.
Trendy development processes come and go, but the debate over which software development process is “best” never seems to end. At almost any industry conference today, you’re sure to hear someone condemning the waterfall process, proclaiming that design is dead, or wondering if process is even relevant considering today’s compressed project timelines. In my opinion, you can gain a lot more from retiring the “Which development process (if any) is best?” question forever, and replacing it with a slightly different one: “Which development process is best for my project?”
We can debate the pros and cons of one development process over another until we’re blue in the face, but the simple fact is that we will never declare a true winner. Why? Because different processes have different strengths and weaknesses. There is no silver bullet development process that will help every development team deliver every product on time and on budget. Likewise, there is no “good for nothing” development process. Each development process is viable and useful, but each one works better in some situations than it does in others.
Moreover, most companies (in my estimate, about eighty percent of them) do not really have any development process in place—even if they think they do. A development process that’s on paper is not sufficient. For a development process to be useful, it must be implemented and followed on a daily basis. But before you start worrying about which development process is best, you should implement some kind of defined, repeatable process in your organization. One thing is for certain: any development process is better than no development process.
What Process Works Where?
If you’re working on a somewhat traditional project (for instance, an accounting system) where the features are defined a priori and it’s possible to freeze the specification, the waterfall process is your best bet. The waterfall development process starts with one long design phase that defines the entire project and all of the product’s features; this phase typically includes requirements analysis. Once the design is set in stone, the implementation phase begins. After all features described in the design phase are implemented, they are integrated into a working product. Finally, the product is tested, and then it is shipped to customers. The flow of these phases is represented in Figure 1.
Figure 1: The waterfall process moves through each phase of development until final release