I was relaxing at home this weekend, enjoying my favorite TV show, The Simpsons, when my cable suddenly displayed a message that my cable box wasn’t authorized for access. But, I was sure I had paid my bill on time. I tried to restart the box, but it didn’t resolve the issue.
I called my cable provider, which is Time Warner Cable. After about 10 minutes on hold, I finally spoke with a representative. She informed me that she was going to restart the box. I told her I had already tried that, but she was welcome to try again. After she restarted it, the picture returned. I asked what the issue was, and she said that after lengthy periods without a restart this issue tended to occur. That got me to thinking.
When we have to debug issues at work, one of the first things we try is restarting the browser and clearing the cache. If that fails, cookies are cleared and the page is refreshed. This often resolves the issue. However, it occurs to me that this isn’t really fixing the problem because it’s a complete system reset, which is akin to restarting the cable box.
Often, a problem arises because the engineer who designed the system never planned for a fringe case that is causing the bug or issue. Resetting the system doesn’t actually fix the problem. A complete reset makes the bug / issue a moot point. But, it never investigates the true issue with the software.
The team that developed my cable box should be happy that it can run for days or even weeks without issue, however, that doesn’t make it perfect. The problem isn’t that their software has a minor bug, it’s that software is such an integral part of daily life, bugs are inconvenient. Bugs, even the most minor, establish a level of frustration that detracts from the quality of the product. This is true from cable boxes to web applications. Consumers expect their products to be ready at a moments notice. While issues can be resolved with a system reset, they detract from the usefulness of the product.
As we move into a realm where software controls almost every aspect of our lives, stability becomes even more important. It’s not enough for products to pass bare bones unit tests. We must move products into the next level where quality meets stability and software rises past the point of available to extremely reliable.