I’ve been espousing for awhile now about #rampantComplexity, posting the occasional article where software and systems are needlessly hard to use or chaotically interacting. Recently I have experienced several examples right out of my home. Generally I think these issues point to complexity, to way too little automated testing and automated regression testing, and finally to too few developers and product managers who understand how to elicit good requirements and usage scenarios (today called user stories, in the past often called use cases).
- Our new dishwasher. It’s a simple thing: like every other dishwasher I’ve ever had, I’d like to be able to warm dishes in it. I’ve even had some with a “warm dishes” setting. However, my current model just has a few cycle options. All imply getting the dishes wet first. There’s no dry-only or heat option. Why are they taking functionality away from us?! #DontTheyThinkAboutUseCases?
- Our microwave and oven combination is hilarious, there are so many little things wrong with its user interface. First, there is a button lock. If you push these three or four buttons in this order, the interface locks, and an unlock button appears on the face. It turns out that the easiest way to lock the interface is to wash the face of the unit with a cleaning cloth. My wife has done this several times unintentionally; she then comes to me wondering why the appliance no longer functions. My explanation makes sense but she has forgotten about it weeks later when the problem reoccurs. #DontTheyThinkAboutUseCases?
- Moving to the next microwave/oven interface issue, if you open the microwave door to check on the progress of the object you’re “nuking”, you can then close the door and elect to turn it back on and continue heating the item. That continue button works about 90% of the time. Sometimes though it just ignores you, and you are forced to completely start over. #DontTheyTestThisStuff?
- There is a delayed start option for the oven, but I am not patient enough to figure out how it works. There is a store program option as well, but it is not obvious what a program even is. The documentation is unfathomable. #RTFM
- If the recipe says set the oven temperature to 365 degrees, one cannot follow the directive. The interface is a cool-looking slider, and it’s limited to 25 degree increments. Oh wait. Two years after writing that, I’ve discovered there’s an additional interface that allows 5 degree increments.
- The refrigerator has an aural beep which repeats, informing you that the door has been left door open. An almost-closed door is open in the eyes of the software, but the speaker is inside the refrigerator so it’s muffled by the mostly-closed door. Linda has some hearing loss and cannot hear the tones at all unless right next to fridge.
- The same sound is emitted by the refrigerator if the temperature inside is too high. Typically this occurs because the door was left open for some period. Of course when we discover this we close the door. The sound continues until the temperature is restored to 38 degrees by the fridge. There is no way to defeat this annoying sound. Even though the door is closed, the sound continues ad nauseum.
- I have an antique in my garage, a 1995 Explorer. To be fair, our community’s knowledge of systems complexity was much less mature in those days, but it’s still in my garage, and I love this wild story. The car has an outside air temperature (OAT) sensor in it, and a display for that temperature in the car, overhead between the front seats. I found out at my Ford dealer the location of the OAT sensor: it’s in the engine compartment. Really? There’s more noise in there than signal!! As it transpires, in the instrument cluster there is an ECU (CPU for computer guys, ECU means electronic control unit), and it has an algorithm running which understands the current state of the system (how long the engine has been running, etc.) which compensates for the noise. Wow. Over many years I’ve found that the algorithm is right to within about 4 degrees most of the time.
- But wait, there’s more. In the next model year 1996, a different climate control system vendor was used, and it had an OAT display. The vendor wanted a feed from the OAT sensor. Whoever they asked was aware of the sensor and the algorithm, but instead of passing along, say, an API, to get at the algorithm’s output, they were handed a requirements document explaining the algorithm. The vendor functionally duplicated this algorithm in their climate control system. All was well until in the field, customers reported that the two OAT readouts were Not Always The Same!! Implement a complex algorithm two different ways, and you can often see this happen for yourself, and the hardware running the algorithm was different also. They apparently performed a recall over this. Sadly, most recalls cost an extraordinary amount of money.
- Though our 2011 Escape does not suffer from this problem nearly as bad as some of the newer cars out there … I tweeted (as this was originally written, in 2017, but I’m no longer on twitter) about new cars and an article about them written by the WSJ. “Touchy touch screens, buggy software, mystery sounds, all baffling to drivers, forcing some to enroll in two-hour seminars. And then the beeping started …” I’ve seen this with a variety of people in my life, but most especially my mother, who wouldn’t even dream of buying a laptop computer much less a new car. She hung onto her 1993 Thunderbird until she gave up driving last year. (The WSJ article is here I hope you can see it despite the paywall)
- Recently, when my wife Linda tried to visit to her work website, nothing happened, she’d get just a blank screen and spinning. She could visit any website we could think of … except her work website. We decided to investigate. Her work website worked fine on her iPhone and several other devices, but still not on her work PC. We cleared all the stupid caches, cookies and crackers – no help. We tried two other browsers, one freshly downloaded – no help. Rebooted the laptop – no help. Shut it down and waited 5 minutes, rebooted the laptop – no help. Linda called the tech support folks, they read from their scripts – no help. Then I power-cycled the cable internet modem in the house to reboot it. That worked. *sigh*
What would YOU do to try and keep these issues from arising in your next product effort?