This is similar to my previous business post: The Cost of Perfection is Too High… this takes it the next step. Not only is it too expensive to be perfect, it’s too expensive to even think about getting perfect!
So many times in meetings you quickly get together and solve the main problem that’s sitting in front of you. High fives all around and the project gets scheduled.
Then you start thinking about how there are holes in the idea. (I’m as guilty as anyone BTW) You start with a solution that works for 95% of the people out there and then start to think of the last 5%. How can you get that last bit? Or perhaps it needs to be configurable at runtime? Or maybe a test? What about that partner, we can’t have it be on for them.
The list is endless.
Before you know it the complexity of the solution goes up by an order of magnitude. The once simple project is now a beast. As the project grows in complexity the reach of it grows as well. More people need to be brought in to make sure the growing scope doesn’t impinge on their fiefdoms — of course it does and adds ever more complexity.
It’s a vicious cycle.
The product that gets built is now hard to test and too hard to use for the normal case. You would be sure that it covers all of the use cases in the spec if you could only test it, which invariably you can’t. The product that’s delivered to solve the world’s problems can’t even be proven to solve any problem. The complexity that the business community asked for in the live configuration capabilities is now too hard for them to use.
Now you have this albatross that was too expensive to build to throw away. Now you have no choice but to maintain it.
Or you could have just implemented the 95% solution and wait for real life to tell you what you need to add. For all you really know, the “5%” might never even be hit anyway.
Don’t over-plan for the future. You’ll most likely be wrong anyway.