As a programmer I'm all in favour of the agile methodology, we all know it makes sence, however how do you sell this to a third party ?.
The work we do is generally fixed price and it is usual for us to only have a high level view of the requirements when we quote as it is often a competitive situation. We often find that when we win a contract and get to look at the detail the features grow in scope. While we do have a mechanism for managing this scope creep it is not robust and transparent enough which commonly results in us conceding days.
The agile methodology may say there is no such thing as scope creep, however in the real world we all know there is. When a customer asks you to provide a solution, at a fixed price and time scale (which they always will), and then change the goal posts mid-project that is scope creep. At the end of their budget they will quite likely to be left with something different then they originally intended and which may not fully meet their original requirements. At that point they’re going to come back and argue that they've not got what they paid for - the only protection we have against that is a spec that lays out exactly what they're going to get up front that we can deliver against, clearly not the agile way.
I know people will say the customer should be kept informed at all times as to what they're getting and what's being moved out of scope blah blah blah...- however in the REAL world as far as I can see you'll always get a customers who will then say at the end - this isn't what you promised to deliver / we've paid for. How do we manage that situation?.