|Welcome to the Monastery|
I agree that the customer should be involved from the beginning, and that a project plan at it's end is never what it looked like in the beginning or even half-way through, but I also believe that you should have a plan. Many development groups don't, and it shows.If the life cycle is(briefly):
Then you are coming back around to getting specifications, but you are also coming back around to the planning stage.
Too much code that I see being written is being written with sketchy specifications and planning with too many changes during the code and test phase because the specification and implementation plans are poorly thought out and implemented. I don't know, maybe it's just the environments that I have been in, but I get the feeling that it is the same all over.
I always get a top 20 list from a customer (for instance), and then we narrow it down to five or ten features that are the most important, rank them, and then add others as we hit our milestones. I'm not ignorant to changing specifications, or what good design specification, customer interaction and feed back are, I'm just suggesting that it needs to happen on a larger scale. And part of that communication also works toward expectation-management, which is a key factor, in my opinion. No going off into a sealed chamber to create, but everything done in front of the customer, so that their opinion counts, but it is shaped by what they see as possible and what is being accomplsihed.