I don't have many rules for life that have a negative spin. And, really, this one just sounds negative at first.
When we start a new project, we try to plan for everything. But I have to remind people: Something's going to go wrong. I don't know what it is. But it will happen. We'll find it and fix it. Nothing can go wrong that we can't fix.
As I said, this only sounds negative. It's actually positive!
Why will something go wrong? There are two reasons.
1) Perfection does not exist
2) Clients don't pay enough to make things go right.
Here's what I mean.
First, perfection. You're not perfect. Your clients aren't perfect. Their other vendors aren't perfect. The hardware and software aren't perfect. Communications isn't perfect. Your estimates aren't perfect. etc.
What can you do?
You do your best. You eliminate possible problems with planning and preparation. You hire good people. You train you people. You work on communications and expectations. You buy good hardware and software, with good support.
In other words, you bring quality and high expectations to the part of the process you control.
Second, client spending.
This is not a slam on clients. Most clients can't spend enough money to avoid all problems.
Money can only buy so many decimal points of "uptime." Consider two examples.
At the low end, think about the difference between these two computers:
Cheap P.O.S. (not point of sale) Dell machine with a 30 day warranty and a blazing celeron processor.
Business Class HP with a three year warranty and a solid dual core processor.
The price difference: $300-400 per unit. The business class computer costs very little extra and virtually guarantees a better experience with lower maintenance costs over a three year period.
Most clients are willing to buy a higher level of quality at this price.
But how many are willing to buy the next level of dependability, reliability, and performance? "For only $1,000 more . . .." For most clients, it's hard to make the argument that they need the next level of reliability.
So they make a reasonable balance between cost and performance.
Here's a higher-end example: Zero downtime for the server.
The ability to cluster servers and provide true zero-downtime has existed for quite awhile. But does the client need that? For some the answer is yes. For most, no.
We all know the truth: If Google and MSDN can have downtime, anyone can have downtime.
All clients can achieve 99.9% uptime. That's means less than 45 minutes of downtime per month. Even if your server takes ten minutes to reboot, and you reboot once a week, you'll achieve this.
Now move to 99.99% uptime. That's 4.5 minutes of downtime per month. This takes a little more time, effort, and money.
99.999% uptime? That's .5 minutes of downtime per month. Now we're talking serious time, effort, and money.
For most clients, buying that 5th nine is not worth the price.
The bottom line is, we all play an "insurance game" with success.
We invest in enough good people, good equipment, and good software to buy our way into the comfort zone. We minimize how many things can go wrong, and how wrong they can go.
But we cannot eliminate risk.
Something will go wrong.
But our excellent preparation means we are ready to tackle the problem and make everything right in the end.
There's a certain beauty in how these things work out. The client who only buys cheap computers and a cheap consultant ends up with more failures and a slower, messier, costlier fix..
Meanwhile, the client who invests in the best has almost no problems. And the problems that arise are easily fixed by the excellent consultants.