I find myself oftentimes trying to get developers to understand why it’s important to give a client a realistic date upon which to expect a release. I have heard the words that make me cringe: “But it will be ready when it’s ready. This is new stuff and we can’t predict what might happen along the way.” Try telling that to your client for whom your software is a necessary piece for their own software.
I think I’ve finally figured out a way to explain it……
I think every area of the country has the ‘backyard’ auto mechanic. The guy with several cars sitting around that haven’t been repaired since before you were born. But often those folks know more about cars than you can shake a stick at. In my area of the country, we have some of those that are actual businesses. And a few have been recommended to me as the best place to take my not-so-new cars.
When you take your car to a mechanic, it doesn’t halt your need for a vehicle. Especially in areas with poor public transportation. That means either having to rely on someone else to drive you places, or drive with you places, or it means renting a car.
Now the dilemma with the ‘backyard’ mechanic. They may be good. They may be less expensive than the other guy. But many times you don’t know when your car will be finished.
So you take the car in for what you hope is a straightforward repair. You ask the mechanic when it’ll be done and you get a general handwaving. So you make arrangements to hitch a ride, or, worse, you rent a car, to tide you over until your car is ready.
A week passes. Your car isn’t ready yet. Your told the parts have finally arrived, and you’ve moved up the priority list, so they should be working on your car again soon.
Another week passes. Your car isn’t ready yet. Something else came it that was more important than getting your car done.
Another week passes. You finally get your car back. Mind you, when you get it, it runs better than when you left it, because they’ve tweaked a few other things that had been annoying you that you hadn’t even mentioned.
But the fact remains that you were 3 weeks without your car, you were inconvenienced much longer than you expected to be, and you may, if you did end up renting a car, be out more than if you’d taken it to the ‘other guy’.
Now think about a software project. The developers tell you that, with design, development, code review, and testing, the project will take 8 weeks. 6 weeks rolls around and the coding isn’t done. They say it’ll be at least another week added on. 8 weeks passes and the coding is finally done and reviewed. But it’s not tested yet. Add another two weeks. 11 weeks passes. The software is finally delivered. It works great. But in the meantime, you’ve had your team sitting on their thumbs waiting for that functionality so they could get their part done. And your clients, to whom you’ve promised an end product, will now have to be told that it needs to come a month later. So your clients go somewhere else.
Kinda makes sense, huh?