Quailty Products

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.

  • juliomiy
    Agreed but Look up the "Halting Problem" and what level of certainty is achievable ahead of time that a program won't get into the state your poor cable box got into
  • If the folks who made my cable box spent even 1 second debating the 'halting problem' and not writing better code that doesn't leak memory, I can see why it needed to be restarted :)

    But seriously, that is an interesting issue. As we move forward in time, it's more and more likely that programs will never halt as they are integrated into our daily lives and routines. Though I would have a hard time proving that mathematically. Regardless, we are becoming more and more dependent on the software that powers our lives.

    Humans may rest, sleep or relax, but that only halt when they die. Luckily for software, it can be restarted.
blog comments powered by Disqus