|
The other day I opened my mail and found a very legal-looking notice. At first I started getting a little grumpy because I thought it might be a Jury Duty summons, and that's the last thing I wanted to have to deal with right now. After I opened it up, I found out that the contents of the envelope were far worse than any summons to jury duty.
Turns out it was a notice of "Failure to Appear". Apparently, on one of my many criminal escapades throughout the New England area, I got a parking ticket (or so claimed the note). I failed to pay this parking ticket, and I failed to appear in court to contest the ticket, and I never called and plead not guilty for the ticket. The penalties for failure to appear included potentially arresting me, charging me with heavy fines, and revoking my driving privileges permanently.
Further inspection of the notice showed that the ticket was for "overtime parking" on a street I'd never been on in a city that I've only quickly passed through on my way to somewhere else. It also took place on a day where I was at work in Manhattan. My first thought was, "WTF is going on here?!?!?"
So at this point, I had an unpaid parking ticket and a "failure to appear" black stain on my permanent record that was far worse than any of the "permanent record" offenses that our teaches warned us about in school. After pacing around a few times, drinking a half-dozen cans of Mountain Dew to calm down (yes, caffeine does actually calm me down... go figure) I called the number on the nasty-gram and tried to figure out what was going on.
The lady on the other end of the phone was fantastically friendly (which was a good thing, because I was in a near-death panic and my chest was ready to explode). Turns out, as she says, many of the officers writing tickets have "handwriting like doctors", and letters are often easily confused. That's what happened with me - the person writing the ticket had written the plate number in such a way that, when entered into the computer, was confused with mine.
Here's where Cooper would point out a classic example of ridiculously stupid software. When parking tickets are written, the color, make, and model of the vehicle are also written down on the ticket. When entered into the computer, the computer looks up the license plate number and then shows the color, make, and model of all vehicles registered to the owner of that plate. The software happily let people continue on a road that would eventually incarcerate me and ruin my entire life because it never once said "Hey, the color make and model on the parking ticket don't match any of the cars owned by the .NET addict. Do you really want to ruin his freaking life? Well, do you??"
The lady said that this kind of thing happens all the time, and she even has a cheat-sheet that she uses to run "alternate license plate numbers" given the most frequently occurring typos (such as entering a "V" when the officer wrote down a "Y", etc). After she ran an alternate plate while I was on the phone with her, she quickly found someone whose vehicle did match the make, model, and color of the vehicle that was ticketed. She even had a routine she has used hundreds of times to back out all of my supposed transgressions and attach them to the new guy she found (I relish in the nastygram he will be receiving a couple days from now...).
So, classic Cooper example. The software is functioning as designed. It does its job. It allows data entry from hand-written tickets and then has a "ruin life" button that allows the workflow to continue down the eventual road that will lead to the demise of an unsuspecting ticket-dodger. However, despite satisfying requirements, the software is a complete failure and an absolute waste. It doesn't do what it should do, or what people want it to do or what they expect it to do. You'd think it was common sense: GIGO, Garbage In, Garbage Out. If you are entering data from an error-prone medium such as officers writing on unstable surfaces, small notepads, in a hurry - the least you could do is put a couple sanity checks and data scrubbers into the system.
Anyway, the moral of the story is this: your bad software might not lead to your users getting arrested, but it could pretty easily ruin someone's day. In other words: let's stop making crappy software people, all it takes is applying a little practical real-world common sense and stepping away from the narrow-minded "programmer trap" of assuming that if software satisfies requirements that the software does its job properly.