Here's a short story about total system design, and planning for failure. Last friday night, I was filling up my truck with gas, and I did the "pay at the pump" thing, using my credit card. After I filled my tank, the pump's display helpfully asked "Do you want a receipt? Yes / No". I usually say no, but I wanted to remember the price per gallon, so I said "Yes." Within 2 seconds, it said "Printer Not Available." Why did they offer to print a receipt if the printer is not working? A more helpful system would have simply stated "See attendant if you want a receipt," knowing that the printer was down. To make this system more effective, they would have to: a) know when the attendant had replaced the paper roll b) remember that last time they tried to print, it didn't work. c) reset the printer state when the attendant did a test print, or closed the access panel. Perhaps cost was the prohibitive factor.
My experiences with computer programming, using c#, Mono, Ruby, Rails, SQL Server 2000, and MySQL.