Clipper's "Aspen" is 16 years late, and counting.
But I STILL want it!
That and Kim Novak ....
--
With Kim, there's always a sliver of hope, eh?
Seriously, there are ways of delivering software on time, and there are people
doing it. Just work in small iterations such that there's something that
could hypothetically be delivered at the end of each iteration. Now, measure
how much actually gets done per iteration on average, and plan based on that.
Make sure that the features are prioritized top-down so that features that
might get left off at the end are optional. If the schedule slips, the
release doesn't have to.
A key point is that each iteration must be complete and deliverable, so no
matter what happens, -something- could be delivered at any time. Testing
can't wait until the end, and deployment and installation can't wait until the
end. At the end of the first iteration, you may have nothing more than "Hello
World" that passes all tests and can be successfully deployed and installed.
Just that is an excellent start.
Now for the surprising part - it looks like Microsoft might be starting to
adopt a methodology similar to what I just described above. In up-coming
generations of MS software, we might miraculously start seeing products
delivered on schedule.