Usually I learn things about what I do and how I work when talking to non technical people, yesterday wasn't different. Trying to explain a little about Agile and why we do things this way I realized that sometimes there's a missing gear on this machine.
Agile is a way to think about software development and maybe other things too, we organize ourselves in a process to deal with the undeniable truth "Things change." Agile is not a mystery, just realize that things will change and you will come up with some process to help you on that. Of course people already came up with some methodologies and tools, you can use it or adapt yourself to your reality, nothing is written in stone, specially if you know that things will change in near future.
From the methodology/organizational way, usually we try give clients room to change things. Clients have to have something in hand to realize what they want, what is the priority of things and other issues. We keep our cycles small so we interact more often, get the most updated information and delivery what is expected. Communicate often, be open to change and development will be headed to the same direction of your client expectation.
Small cycles means a lot more commitment, as a team, we keep close eye on what we are doing, how long it takes, the problems, the pace and so on. Some people when see pictures like this thinks that Agile is just fun and no work, beware this fallacy. Agile is a very committed way of work and think. We don't hide problems, tasks or how we feel on how things went. Exposing all of this make an Agile team vigilant and always visible to the client. The client, in fact has a major role in Agile but sometimes it seems it is the only gear that is missing.
Agile goes with the motto "Client, we will interact with you often, we want you prioritize, as soon you change your mind please tell us, we want you to share your time with us...". What I see is that sometimes clients get this wrong, more like "I can change things anytime and have update reports every day." , this is not the right way to think.
Commitment is a two way street, if the team is committed, the client should be committed in the same degree. Surely we try to cope with change but this doesn't mean that the client shouldn't put enough thought on requests. We communicate often but this doesn't mean we are reporting only, we're in fact sharing and asking for information. We want deliver value, but this value will result of a sum of commitments. As in any relationship the two parts have to make an effort to make it work, is just not possible do it just from one side.
If someone is selling "We do Agile, tells us what you need, sit and watch your product going live.", this is unlikely to be true. Agile can deliver faster and better but know that this machine is very weak if is missing a gear, the client.