If everyone knew it was the taps
...software development would be a whole lot easier.
As it stands, and to stretch the metaphor to breaking limit, what the client believes is a problem with the taps could be the pipes, corrosive water, or the sink.
Never mind using 'never done' as a smoke screen, how many times have contracts been used to insist that the client got 'what was specified' even if the system is a pile of junk? Stupid client for not knowing what they want! After all, you don't call out a plumber to fix your taps, find out that there is a hole in your feed pipe, and insist that they fix the problem, do you? No, you insist that they replace that perfectly good tap.
Agile projects can have deadlines - the only ones that wouldn't are those where something is continually developed and improved in-house, such as online retailing. That makes sense. I don't know of any Agile developer worth their salt who would begin a project without a clear idea of when it is expected to end.
The difference is that Agile, with that end date in sight, has mapped out a series of iterations with reasonable goals. This approach leaves room for changes in requirements, and provides reasonably tight, though not oppressive, checkpoints to follow the project's health and progress.
I wish I knew where this 'warm, fuzzy agile message' was. If you run an agile project as one of the poorly run agile projects Matt describes, you're not doing agile development. You're an idiot.
Agile development is Still Hard Work. You still have to graft, you have to think, and you have to be mentally on top of things. What you don't have to do is a lot of stuff that impacts your ability to deliver the software. What you must, absolutely _must_ do is manage the project properly, as Matt says.
Well, I say 'as Matt says', but I managed to pick this up from my interpretation of that 'warm and fuzzy message'. If you spend a day refactoring code to a better pattern design, you had better hope that this is in your 2-week plan, _and_ signed off at the morning meeting. If there is more important stuff than moving functionality around, I would be surprised to see something like that get past a morning meeting. Or are we talking about people who say 'agile looks good, but pair programming looks like it sucks, and I don't really like tests while coding, and morning meetings are no good, and there's no way we can deliver what we promised in a 40-hour week, and... and... and...'
That isn't agile. It's also not part of the agile message.
This is the kind of writing that I imagine would be pretty good if you wanted to convince people that you had written a book that 'fixed' agile. You know, finding 'problems' and then 'addressing' them, albeit with solutions that are 'already' part of the process you are 'refactoring'.
Hmm... Matt, haven't you written a book about this somewhere? Oh yes, there it is plugged again :)