When trying to make things better also makes things worse.
A Lesson in Chesterton's Fence and Radical Empathy
Have you ever taken on an existing project, identified how to improve it, ripped out the “bad parts,” and then realized that you made things worse? I know I have. I still cringe when I see others get burned by the desire to improve things only to make things worse. It’s an easy mistake to make. However, it’s also an easy mistake to avoid once you frame the problem using a second-order thinking technique called Chesterton’s Fence.
In the matter of reforming things, as distinct from deforming them, there is one plain and simple principle; a principle which will probably be called a paradox. There exists in such a case a certain institution or law; let us say, for the sake of simplicity, a fence or gate erected across a road. The more modern type of reformer goes gaily up to it and says, “I don’t see the use of this; let us clear it away.” To which the more intelligent type of reformer will do well to answer: “If you don’t see the use of it, I certainly won’t let you clear it away. Go away and think. Then, when you can come back and tell me that you do see the use of it, I may allow you to destroy it.
The moral of the story is that if an existing system is in place and it doesn’t seem to make sense as to why it exists, you need to take a step back and sort out why it might have been put there in the first place before you dismantle it. If you disassemble it before you understand why, unexpected things can happen.
Years ago, at the first Gophercon (Denver 2014), I met Brad Fitzpatrick (he was on the Go Programming Language core team then). I remember it was over a game of pool after the conference had ended on one of the days, and everyone was talking shop. Somehow we got on the topic of inheriting broken code bases, and I remember something Brad said that has stayed with me to this day. On the subject of walking into a codebase that was a mess, he said something to the effect of “Whenever I see a mess, I always try to start from the assumption that some smart person under constraints was solving a problem that met their needs at that time.” He said that starting from this assumption forced him to take an empathetic approach as to why this codebase was no longer serving its needs. This sort of radical empathy changed my perspective on approaching Chesterton’s Fence style situations, and it’s a framing I still use today.
Notable media I enjoyed this week
when you get possessed by jazz demons
This is exactly how I feel when all the parts come together on some wacky coding project I’m working on. This makes me happy. All of it.
He started a computing REVOLUTION—then the shortage hit
Jeff Geerling interviews Eben Upton, co-founder of Raspberry Pi. As someone who loves using Raspberry Pi for hacking projects, It’s unfortunate that they are still hard to find, but this sets the context quite nicely.
Consistent Hashing | Algorithms You Should Know #1
I’ve recently discovered ByteByteGo’s content on Substack and Youtube. It is worth checking out. I already have a pretty decent understanding of consistent hashing, but this video illustrates the concepts beautifully in an easy-to-consume (and share) video.
Thanks for sharing this excellent food for thought, Nathan 👏 Highly relevant to my world. Will keep me nourished this weekend.