Many programmers sooner or later encounter problems with stable production applications that worked fine for months or years. By that time the original developers forgot all details. Or they do not work with the company anymore.
The problems range from subtle to catastrophic. For example, an application may suddenly crash, or refuses to start, or stops accepting user requests.
Clearly, a bug lingers somewhere in codes. I am going to name such bugs Ambushing
until a better wording will appear.
How ambushing bugs could elude serious testing and not reveal themselves soon after the application was put in production? It may happen only if they are intermittent and, moreover, shows up very seldom. Most of them are timing‑dependent and/or data‑depended. Or/and they appear only under a certain load, likely a heavy load. Usually it is practically impossible to reproduce the bugs in a reasonable time.
Unless a maintainer happens to be already familiar with an offending bug, diagnosing and fixing it often is technically hard. As with all production systems problems, deploying the fixes often is also difficult operationally, particularly when necessary changes affect many users.
November 13, 2013