Contrary to some common misperceptions, agile is a highly disciplined and rigorous framework for developing software. Like any other disciplined undertaking, agile requires solid planning. Agile planning is however fundamentally different from traditional waterfall planning. As previously discussed, in the waterfall model, a development plan and schedule involves decomposing each requirement for the release into a set of tasks and then making estimates for the effort required for every task. For even modestly scoped commercial software projects the number of tasks could range from hundreds to thousands, and it is clear to most that these plans quickly become of out of date and need a huge amount of effort to maintain. Agile planning on the other hand is designed to be adaptive. The principles behind this approach are: 1) plans should only be as detailed as the depth of information currently available, and 2) planning must be continuously adjusted as improved project knowledge becomes available. Agile teams should be prepared to make planning adjustments as information about requirements, design constraints and the team’s velocity improves.