In order to keep a ProjectUnderControl you need: 1. Know exactly what has been achieved. UnitTest''''''s and AcceptanceTest''''''s are a must to do this. 1. Know exactly what has not been achieved. A TaskDatabase is ideal in this case. Specially one that allows to prioritize tasks. 1. GanttChart generated automatically by the TaskDatabase. Plan forward and not backwards. PlansAreUselessPlanningIsIndispensable. ---- ''In my experience, 2 is unattainable. In the projects I'm involved in, some things are known to be uncertain, some known to be likely to change (and we may or may not know how they're likely to change), and (the difficult ones) others are going to change, or even be added or removed. Projects are under control when things are in a state that all these changes can be dealt with with minimum disruption. It is important to know what the current belief is about what needs to be achieved...'' Unattainable because they are uncertain? As you said ''It is important to know what the current belief is about what needs to be achieved...'', and that's not uncertain at all. ''Unattainable because they are uncertain?'' Yes ''As a result, 3 is only good for saying 'if things stay the way they are today, then...' (which is still worthwhile)'' ''On really well managed projects, we might have a clue about 1 (what we've done to date) :)'' Would rewording it to "Know exactly what, of the known tasks, has not been achieved" help with the above complaint? ''It would help, yes. But I think there's a 4 'Know what you're going to do, when the inevitable change happens.'' If there is a change you can do one of 2 things: 1. Take the XP approach: No change is admitted till the end of the iteration. I would like some feedback from XPers about if customers do not get upset about it. 1. Let go what you are doing and do whatever you are asked to do. Log exactly when that change happened, tell the customer how this change is going to affect the project and report at the end of the iteration how that change had a small or a big impact on the result.