I have always been a fan of planning everything. Over the years I've come to create a methodology which I call “Rigid-Flexible Planning”. More than a methodology, it's a philosophy with guidelines. So please, take this post as food for thought more than strict rules.
Why plan everything?
When you read “plan everything” you might think I am crazy and my life is dull and predictable. You'd be wrong (maybe not so much about the crazy part). When I say that I plan everything, I mean that I try to be aware of where all my work is headed, which is the goal I am aiming for and which is the estimated effort. Just because the alternative is ignorance.
A plan may fail, it may be delayed, it may be underestimated, etc. But any of those is better than no plan at all, because all of those scenarios provide awareness, lack of planning does not.
And of course, we are humans. So we need mental bandwidth and freedom to perform correctly. Here, the rigurosity or looseness of your planning comes into place. Don't let the plan get in your way, let it be your tool.
When you fail to plan, you plan to fail
-- Benjamin Franklin
So now, which are the basic concepts for this? In my opinion, a planning should have two core properties: Rigidity and Flexibility (You think these are contradictory? Keep reading).
The rigidity is essential in anything that must give us trusted and solid information. For something to be congruent, rules have to be applied. And this is what I mean, all the rigidity to always know with certainty what you have in your hands:
Every task must have time estimation. If you think you don't have an estimation for a task, you will at least have a rough approximation, so use that (I'm sure you know if it's in the order of hours, days or even months). Be aware that sub-tasks can span from working on a task.
Every task must have a priority. This can be represented in different formats: priority order, priority weights, chronological precedence, etc.
Every task must have a “before” and an “after” task. This is important, if you think some task can't have it, let the before task be the “beginning of the project” and the after task be the “end of the project”.
Every task must have a status (ongoing, frozen, waiting, etc.). This can be a little tedious, but it depends how the statuses are defined. If ongoing means “working on it right now” it'll be tedious indeed, but if ongoing means “started but not finished”, that's a different story.
Every task must be SMART.
The flexibility is important for not letting the planning get in our way. If we want our planning to really help us, we need to be aware that life gets in the way, and plans are ever-changing.
Anything must be able to be modified at any time. A problem that may arise from this is how changing something affects other parts of the planning. That should be had into account in order to maintain congruency.
- Planning will go wrong, so it is important to be aware of this and have a system to introduce unexpected events into your planning. A counter measure to modifying existing tasks may be adding sub-tasks.
The system used for planning must be easy to use and natural. If you find yourself in doubt of how to reflect something in your planning, that means the tool is getting in the way and the rules you've set in place are too strict.
It must be easy to pick the necessary information at any moment. This is important in order to focus on the appropriate thought process. There are lots of representations of a plan (Gantt diagram, list of TODOs, etc), but it is important not to be overwhelmed with information and keep in mind only what's necessary at the moment.
The challenge then given this ideas, is to create a workflow which allows for this properties and doesn't make us crazy about it. Complex yet simple.
How would you do it?