I’m glad I’m not the programmer whose software failed to warn operators at Ten Mile Island how serious their emergency was. There were greatly mitigating circumstances for this software failure, but I’d generally rather work on projects where the implications of failure are far less serious. I can remember an embarrassing case where my irresponsible programming cost my company an expensive repair. Fortunately they did not take it out of my pay.
I needed to communicate some data trends by drawing very large, detailed diagrams. My boss showed me a little-used piece of equipment we had, a “plotter” (a kind of printer) with a thirty inch wide printing bed. A monstrous roll of paper fed the plotter, which could thus draw pictures 30” by ANY LENGTH in size, just what I needed.
Programming the plotter was simple. You issued commands to raise and lower its pen some distance. You issued commands to move the pen in any direction. If you lowered the pen far enough to touch the paper and then commanded it - or the paper - to move, you drew a line.
In my first debugging session, I told the plotter to move the pen about a quarter of an inch below the surface of the paper and then to draw a graph. The plotter dutifully lowered the pen into the inch-thick sheet metal bed below the paper and engraved my graph in the metal. (My engraving did look pretty, I must say.) We had to buy a new metal bed, the most expensive part of this expensive plotter.
In the many years since then, as you can imagine, I’ve often wondered whether the manufacturer might just, perhaps, pretty please, have made it impossible to lower the pen into the metal. Or, to look on the bright side, I could claim I was one of the first people to do three-dimensional printing!