Explain Variable Scope with Ponies
Lately I've been using the following analogy as a valuable tool in my sales process. Used properly, it's totally killer and you're gonna love me for it. I promise. It involves ponies, kind of...
First of all, let me set the context by explaining the problem I'm helping you solve. (Mind you, I know that not everyone does Agile the way that I do at Hashrocket, so it definitely won't apply to everyone.) But if you do try to sell Agile, even if it's only to your managers, bear with me and tell me if this situation sounds familiar:
- You talk to a new client
- Client has a list of features desired, perhaps even a requirements document or functional spec
- Client wants to know how much it will cost to get their project done (or just a ballpark estimate)
- After explaining that it's up to them how much it will cost (since they will be required to prioritize for business value and manage scope) Client still wants to know how much you think it will cost to "get done"
- After explaining for the tenth time that it's really up to them how much they want to spend and optionally giving them a wide (and meaningless) estimate like $50 to $150 thousand, they still want to know how much you think it will cost.
People that haven't done Agile software generally don't understand the concept of variable scope. They think they know exactly what they want, and they want a price. If you don't give them a price, they'll keep looking until they find a provider that gives them a price, for better or worse... usually worse.
Here's the analogy, which serves to illustrate variable scope and price very effectively. Compare the requirements to a child's Christmas list or letter to Santa. (or three kings or whatever) For reasons that will be obvious in a moment, this analogy going to be most effective with actual parents that have to go Christmas shopping for their kids every year.
Rattle off a realistic gift list like the following one:
- Barbie doll
- Barbie book that comes with makeup
- Playhouse with kitchen
- Barbie video game
- Barbie coloring book
It's important that you communicate that all or most of these items involve ambiguity about what is actually desired.
Ask the client (or yourself): How much do you have to spend to get this list "done"?
How much does a Barbie doll cost nowadays? Twenty? Thirty? Less? Who knows? You can ballpark it, sure, but what about some of the other things on the list?
It's actually impossible to say how much it will cost to fulfill this list until you actually do the Christmas shopping! Why? Because of the ambiguity!
If you're a parent on a budget, then you might have an idea of how much you're going to spend fulfilling the desires on this list, but only because you have a budget in mind. And even in that case, you still don't really know exactly how much you're going to spend, because you're going to make buying decisions on the fly as you visit the stores where you're going to buy the gifts. Stuff will be on sale or out of stock, you might feel better or worse depending on other people you have to buy gifts for. No matter what, you must try to maximize the happiness of your child without breaking the bank and making everyone else happy.
Even rich parents that don't go shopping with a particular budget in mind will understand this analogy! They still have to maximize the child's happiness without knowing exactly what you're going to end up spending. For instance, it's the rare child that will actually get a pony for christmas, but maybe while shopping the parent sees a stuffed pony doll, or a My Little Pony playset and spends $20 to buy it and cross "Pony" off the list. Maybe they don't. I have no idea how to fulfill that Pony request, and neither does your client, until they actually start shopping.
That's where I'm going with this. Actually implementing the prospective client's project is like doing the Christmas shopping described above. You might know approximately what things on your client's requirements list will cost beforehand, but there's never a way to know exactly what you're going to end up spending until you actually start crossing items off of that list (clearing the backlog) and decide that you're done (release the software).