Have you ever gone into the washroom to do your business and been surprised at the end to find out someone used the last of the toilet paper (and there are no extras in the washroom)?

Surely someone must of noticed that the roll was at the end. Why didn't they go get more (reactionary)?

Even better, why didn't someone notice that they were loading the last roll and go get more (proactive) before it was all gone?

How many areas of your business are like this?

Do you wait until the customer notices something or do you deal with it just before the customer is inconvenienced? Even better, do you deal with it before the customer even notices; making it a non-issue? Is it all a part of your delivery and support process?

Software development and information technology used to be about reacting to customers. Then as IT staff got more busy and short of people compared to the work, some of them started figuring out ways to deal with little problems before they become big ones, reducing future work and headaches. Are you the Maytag repairman from those commercials or being run ragged and stressed out?

In software development this has led to TDD, BDD, unit testing, automated user interface testing, automation, error logging, load testing, server failover, active monitoring, etc. Does this guarantee no future problems?

No.

But it does reduce the likelihood of being caught with your pants down and no easy way to clean up a mess.

And you can make the fixes without a high risk of breaking something else.