Report Bugs Silently is a method of TacticalTesting
Everybody writes code so that when something bad happens, they print
out an error message or they dump a stack trace or something like that.
As the code matures, they handle some of those problems.
When the product is about to be released, the project manager makes
sure that all the printlns and stack dumps are taken out, because it sure
would be embarrassing if the customer saw those.
So when the program does crash on the customer, all evidence of what
happened has been hidden.
It's much safer to write the code in the first place so that the bugs
are reported in a place where nobody can see them except the developers.
We are lucky to have a pluggable logging system, where it's easy to
configure where log messages get sent to.
That way the developer can print them to the screen, and when the product
is shipped they can be ferreted away in a database.
In our logging system, we have a number of severities - fatal, warning,
and so on.
I have invented a new one called bug.
Whenever a problem of bug severity is logged, it shouldn't have, and
something should be done about it.
The logging system should handle KeepErrorInformation
I've done something like this. Users can get into the habit of ignoring error messages if they are too frequent (of course, these are errors on another system I didn't write =) ). It's really nice when I can just look up the information that has already been sent to me on the problem, and I'm half way to solving the problem.
Some systems directly tell the programmer / maintainer that there is a problem, rather than relying on the user to relay that information.
A few of them pretend to be working fine -- the user hears silence.
- Many vending machines plug into a telephone jack and "phone home" when they are nearly empty.
- telephones do *not* have a little light on the top to indicate when the system is "up". When the system is down for 30 seconds, hardly anyone notices. (Didn't DonaldNorman write something about that ?)
- Some copiers plug into a telephone jack and "phone home" when the toner cartridge is empty, or when X pages have been printed, so it's time for various gears and belts to have scheduled replacement.
- This is also used for billing purposes in many cases; as many office automation shops rent out photocopiers to companies and charge per page. The photocopiers in my office (the big ones, at least), have a data connection in the back, along with a big sign threatening DeathAndDestruction? lest anyone other than AuthorizedPersonnel? touches the cable.
- (I saw it in a movie, so it must be true) Bank tellers have a "silent alarm" button that summons security / police. Other customers in the bank may never realize there was a problem.