DEV Community

Jonathan Hall
Jonathan Hall

Posted on • Originally published at jhall.io on

What does an outhouse have in common with modern software development?

Apologies for the “unsanitary” topic today… But it’s based on a true story, so bear with me, or skip this one if you don’t like emails about… toilets.

I’m spending February in Guatemala, visiting my wife’s extended family. The last couple of days we were staying in the remote mountains about an hour outside the city of Huehuetenango, where my wife’s mother grew up. My wife’s grandmother, who is now 94, treated us as the guests of honor by slaughtering a turkey, and preparing it with some rice and local soup.

During our stay, we slept in my niece’s house, which was recently built, less than 5 years ago. It’s a simple house, but roomy and comfortable, except for one detail that my wife commented on: The bathroom is situated outside of the house. It’s not an outhouse. It’s attached to the main house. But it’s accessed through a separate doorway.

This means that a midnight bathroom run means unlocking the front door, about three paces through the night air, then unlocking the bathroom door. And again in reverse. It also means that after a shower, you must walk through the living room in a towel. Awkward!

So why would they put the bathroom outside, in a new house?

Habit.

My wife explained that in her earliest memories of visiting her grandmother, there was no toilet. You had to walk up the mountain and take care of business behind a tree. Later on, they installed an outhouse, minus the house part. Just a board with a hole in it. And the smell!

Later on a proper outhouse with walls.

Now, in the house my niece and her husband built only 5 years ago, effectivley an outhouse, with running water, physically attached to the house.

It’s all the convenience of indoor plumbing… with all the inconvenience of an outhouse.

But don’t we do this all the time in tech? We hold on to old, obsolete habits, even when there’s no longer a reason, and they may be actively detrimental.

Long-lived feature branches. Staged software releases. Manual acceptance testing.


If you enjoyed this message, subscribe to The Daily Commit to get future messages to your inbox.

Top comments (0)