In traditional project plans, you scope out the major pieces of work in detail and then carry them out in a very well defined, predetermined sequence.
Sounds great. But the problem is that this only works well in stable environments. In unstable, ambiguous environments of volatile change, these predetermined schedules continually get thrown off — resulting in frustration.
What’s the solution? Iterative scheduling. Iterative scheduling is based on the recognition that in complex environments, the information you need in order to make detailed plans for tasks beyond the immediate future is simply not available. The result is that, if you do make those plans, they will often be inaccurate. The only tasks for which detailed plans can be made are those tasks that are right before you in the near future.
Hence, iterative scheduling proceeds by planning in smaller buckets of work. You have a clear vision and goal towards which you are working, but you do not create detailed plans for the upcoming tasks further out in the future until the current tasks before you are completed. Only then will you have the knowledge you need to do that detailed planning, not only because the environment will be different once you get to that point, but also because completing those buckets of work itself changes things.
Detailed planning is great. But when you are in an ambiguous environment and find yourself unable to create those detailed plans, take heart that the problem is not with you. Rather, you just need to adapt your planning method to your circumstances. Keep the large goal before you, and then proceed in smaller buckets of work by planning in detail the tasks that are right before you, but resisting the temptation to get too detailed about the tasks beyond that until you finish those items that are right before you.