When you are working in an agile way and another project is working in a waterfall — in the beginning at least — agile always looks bad. “They are so organised,” people say “we should have a project plan like that”. Telling people that it will never turn out like that just looks like sour grapes.
The problem is that those Gantt charts look like a prediction. They give the illusion that because you have drawn the charts, things will turn out that way. And you — or your boss — will be disappointed if that isn’t the case. That is, unfortunately, one reason why people like them; someone can write a “go live” date and then shout at people if it ain’t done.
We all want this level of control, just the agile project believes that it won’t look like that. Hankering after it isn’t bad. That level of control is closely related to the peak of our hierarchy of needs. We want freedom of choice, and choice requires control. It doesn’t feel good to be at the mercy of circumstance. And, looking at it from the other side, a programmer who says “It’ll be done when it is done” is really saying “Go away, you won’t understand and I don’t want you to. Programming is My Precious.”
What project management should be about is measurement. If you only ever have measurement then you are a least going to know what is currently going on. If you only have a “prediction” in the form of a Gantt chart that you made up at the start of the project but you don’t know what the current state is then that is much worse. The trick of predicting the future by yesterday’s weather is better than no prediction at all.
The question is, why can’t we estimate software? Personally speaking, I find that even the smallest unit of estimation is routinely off by 100%. Why is that?