Delivery Date or Features?
Again, the Agile movement comes to our rescue by asserting that the software should be built as a simple working system, with features added in a priority determined by the customer. By bringing the code up to shippable quality very often, it’s possible to pick any ship date from the outset, and hit that ship date.
You just won’t know exactly what features will be delivered on that date.
The alternative is to insist on a very specific feature set, which means that predicting the date is out the window, unless you’re willing to either sacrifice quality or have heavily padded estimates.