Agile software development is an approach to organizing a project into smaller pieces of work. Start by defining the outcome, then break the work into tasks that contribute to it. Smaller components can make a timeline easier to predict when external or unknown events make a single project-wide estimate difficult. section 9.1.2 section 9.9
The choice depends on the project. Waterfall plans as much as possible before work begins; for a well-defined project, that can help predict time and cost and support a call for external bids. Its up-front definition takes time, however, and its plan is less able to accommodate changed requirements or technology. Breaking work into smaller components offers a different way to manage uncertainty, not a guarantee that the schedule will hold. section 9.1.2 section 9.9
Define the destination before dividing the work
A customer-intake modernization project can be described internally as replacing a Windows XP-dependent process with Java on a serverless environment, or externally as moving the process to the cloud for flexibility and throughput. Once the intended outcome is clear, divide the project into tasks that move toward it. section 9.1.2
Questions for putting the approach to work:
- Is the outcome clear enough to guide the smaller tasks? section 9.1.2
- What does the ticket system reveal about task status, and who will guide the project through its lifecycle? section 9.9
- How will client and user feedback be welcomed without fragmenting the code base? section 9.9




