Skip to Main Content
Iterative development can take many forms, depending on the project's goals: iterative prototyping can help evolve a user interface. Agile development is a way to closely involve a prototypical customer in a process that might repeat daily. Incremental build lets developers produce weekly builds of an evolving product. A spiral model can help the team confront and mitigate risk in an evolving product. Each iteration involves a certain amount of rework to enhance and fix existing capabilities (the good). However, excessive rework could indicate problems in the requirements, the developers' skills and motivation, the development processes or technology used, or all of the above (the bad). Exorbitant levels of rework result in truly untenable situations (the ugly). On the other hand, too little rework could indicate insufficient review and testing or too little anticipation of the product features needed to support the next version (bad that can turn ugly). Understanding and correcting the root causes of problems that result from too much or too little rework can significantly increase productivity, quality, developer morale, and customer satisfaction.