Referring to one of my earlier blog posts where I talked about how Agile welcomes change… today I would like to elaborate on WHY Agile tries to inculcate a mindset that accepts constant change using real life examples.
Have you ever, at any point in time during your lives, heard some of these phrases:
- “Gochange your clothes, you’ve been wearing them for 2 days now”
- “Dang, a flat tyre, now i’ll have to change it”
- “if you don’t change your eating habits, you’ll die of obesity”
- “Boy, your school is horrible, you better change it or it’ll ruin your future”
Now let’s try and change these sentences so that they negate change.
- “Don’t change your clothes, you’ve been wearing them for 2 days now”
- “Dang, a flat tyre, now i’ll have to keep using it”
- “Don’t change your eating habits, you’ll die of obesity”
- “Boy, your school is horrible, you better not change it or it’ll ruin your future” (this one doesn’t even make sense :S)
Now, I know some of my examples were loaded just to prove my point but still what I’m trying to show is that we cannot, I repeat we cannot plan for every little thing that may happen to us during any particular day. If we can’t plan every thing in advance for even a single day, how can we as human beings expect to plan in advance, the entire length of a project (that may span from weeks, to months to even years) and assume nothing would change along the way.
In Pakistan there are two methods of travel from point A to point B in a cab. Let’s call one method ‘the Alpha way’ and the other ‘the Beta way’. The Alpha way is to get charged via a fare meter on the basis of number of kilometers you travel from point A to point B. The Beta way is to do a rough calculation of the distance you would have traveled going from A to B, and negotiate on a price. Once that price is decided you sit in the cab, go to point B and pay the pre-settled amount.
Now, consider the following scenario. You opted for the Alpha way. The cabby starts driving but half a kilometer down there’s a blockade. He drives back half a kilo meter and takes another route, 2 kilometers down the road he runs into another road all dug up, and so he takes a third route (I’m not exaggerating, its an every day thing in Pakistan), all the while your meter is running like a high-on-dope gerbil spinning a small ferris wheel and you can’t help but stink the entire car with salt water dripping down from head to toe (in short you’re sweating). When you reach your destination, for what would have cost you 200 bucks, you end up paying 550 or so. You pay extra money for all the routes that you changed, just to get to point B which was your initial plan all the while.
If you had taken the Beta way, you probably would have had to settle for 300 bucks or so, but, road blocks or no road blocks ALL you would have paid was 300 bucks for going from A to B.
Do you see where this analogy is going? We as engineers, project managers, business analysts and especially entrepreneurs do the exact same thing with our customers. When we’re gathering requirements we expect the customer to:
A) know ALL the requirements that he’d ever have, day one!
B) somehow plug a mental usb flash drive and transfer all the knowledge from his brain to ours…again to the last detail.
And then we plonk all the requirements in a document, label it SRS (Software requirements specifications) in block bold letters and put a gun on the customer’s head saying, “These are the holy words spoken by you and inscribed till enternity in this holy book called the SRS. If you Godforbid tell us anything later which is outside this holy book of requirements you will pay for it~~~” *Loud devilish laughter MU HU HU HAHAHAHA*
And that’s that. If during the course of a project a customer runs into a ‘road block’ and HAS to change routes, even if the ultimate goal remains the same i.e. getting to point B, we the ‘helpers’, the ‘solution providers’ hold the customer by the scruff asking him to pay… Why did he not have the miraculous ability to anticipate the unknown we wonder… after all he is the customer!
On that note I’ll end my banter for today. I’ll continue from the same note next time I blog, explaining how if we start thinking like a customer we can really excel in the software development business.
Call it Agile… call it what you will… at end of the day, it’s commonsense.
My two cents.