Longtime readers will recognize the concept of "unknown unknowns."
As Donald Rumsfeld famously noted:
- "[T]here are known knowns; there are things we know we know."
- "We also know there are known unknowns; that is to say we know there are some things we do not know."
- "But there are also unknown unknowns—the ones we don't know we don't know."
"[I]t is the latter category that tends to be the difficult ones."
An article I read recently–along with its top comment–reminded me of this point. I'm sharing them here for two reasons:
- The article excerpt and anecdote are interesting on their own
- They offer a valuable lesson for us as software developers (generally) and Access developers (specifically)
Bananas Bring Bad Luck on Boats...
The following is an extended excerpt from Jonah Goldberg's article, When Historians Go Bananas. (Note that while the article is political in nature, this excerpt is not.)
Speaking of bananas, have you ever heard that it’s bad luck to bring a banana on a boat? Well, strap in.
I’ve had a mild interest in nautical superstition ever since I was a kid. It’s probably because my name is Jonah. At summer camp, I met a kid who grew up around boats and he couldn’t believe that my parents would name me Jonah, given that the name was synonymous with bad luck. Here’s the pithy summary from Wikipedia:
A “Jonah” is a long-established expression among sailors, meaning a person (either a sailor or a passenger) who is bad luck, which is based on the Biblical prophet Jonah. Clergymen are considered bad luck, as they are all of Jonah’s ilk. Redheads and women are also to be avoided as passengers.
So good luck to any ginger priests—or priestesses!—named Jonah who want to go on a cruise.
Anyway, the first time I was told that bananas were bad luck, I went on a deep dive into structural anti-bananaism. It turns out that it’s what social scientists would call an overdetermined phenomena—i.e., there are multiple sufficient explanations.
Herewith some of them:
Bananas, like hope, float. When a cargo ship carrying bananas and a bunch of other stuff sank, only the bananas would float to the surface. So the poor banana got the blame.
Banana peels are slippery—they cause accidents and accidents are dangerous on boats. ‘Nuff said.
Bananas “scare” away fish. Okay, they don’t actually scare away fish, at least to my knowledge. But because ships carrying bananas had to go very fast to get them to port before they spoiled, sailors trolling for fish were often going too fast to catch any fish. They blamed the bananas.
The Bermuda triangle or something. The trade route from the New World to Europe took ships through rough seas. Sailors often blamed the cargo for mishaps.
Bananas are the scythe of Chronos. Bananas emit ethylene gas as they ripen. The problem is that ethylene gas causes other fruits and vegetables to ripen very quickly (which is why if you want to get unripe fruit to ripen, put it in a bowl with a banana or two). Poorly ventilated cargo holds full of a wide variety of produce would arrive in port with the perfectly ripe, but incandescently evil, bananas sitting amid giant pools of rotted goo. Hence the bananas must be bad luck.
Bananas, somewhat like rock ‘n’ roll, cause spontaneous combustion. The same process of ethylene-induced hyper-ripening produces a byproduct: alcohol. Every now and then a stray spark would ignite the alcohol and the whole ship would burst into a banana-fueled inferno.
Finally, bananas are the underground railroad for Satan’s minions. Because venomous spiders and snakes like to live in bananas, sailors carrying them would disproportionately get bitten and die or generally have a very unpleasant time at sea. Again, they blamed the bananas.
...And In Grocery Stores
While I found the above excerpt fascinating, my main reason for including it in this article was to provide context for the top comment that followed it:
I had never heard of bananas being bad luck to take on a boat. However, the fact they emit ethylene touches on one of those weird lessons I've learned in my professional life.
I work for a company that develops hydrogen fuel cells. Back towards the start of my career, I was in test engineering. We were worried about chemical contamination poisoning the fuel cell catalyst and causing a decrease in performance, so we spent a lot of time investigating air pollution levels in the urban environments where fuel cells were going to be presumably powering vehicles. Then we started selling fuel cells to forklift manufacturers, as it turned out there was a great market opportunity to replace battery-powered forklifts used in places like grocery warehouses and logistics centers. The fuel cells started experiencing unexpected performance loss, and it seemed like a contamination problem. What was going on?
Upon investigation, we figured out that *ethylene* was poisoning the catalyst. The effect was fully recoverable with the correct operating technique, and it was easily managed using the right type of filter on the air inlet. The source was ripening bananas, and areas called "banana rooms" in grocery warehouses where green fruit was dosed with ethylene to speed ripening before shipping to stores.
I love this story, because it illustrates that you can take a bunch of smart people, have them work hard to anticipate and solve novel problems, and you still run into trouble because of something that you didn't imagine. The problem wasn't car exhaust, it was bananas. The lesson is you don't know what you don't know, and you need to have the humility to accept it and be prepared to deal with the unexpected.
Moral of the Story
You don't know what you don't know.
As a software developer, it's nearly impossible to know as much about a client's business as the people who work in it. That's why some of the most useful Access applications are not written by "developers" but by "power users." Unfortunately, many of these Access apps are also quite brittle. After all, a power user's expertise lies in the business domain not in the software development domain.
Typical software developers look down their noses at such applications, decrying their lack of adherence to software development best practices.
That's too bad, as the all-too-common approach of ditching an existing app in favor of building something brand new from scratch eschews the years (often decades) of business experience that went into building an application that solves real problems. The replacement system is often technically impressive, yet practically inept.
A far better approach is for us, as software developers, to show a bit of humility.
Accept that there are things we don't know we don't know. Take every opportunity to learn from–not dismiss–the domain knowledge of the power users who built the current system. In doing that, we might one day save our system from the metaphorical bananas that might otherwise bring it to its knees.
Cover image created with Microsoft Designer and DALL-E-3