"Simple is hard enough, especially at scale."

There’s a natural tendency in software towards over-engineering. While this can happen due to inexperience, but it’s also just as easy (or easier) to do when you’re experienced. Either way, this happens because, as it turns out, it’s really fun to write and build new code.

This sort of phenomenon isn’t unique to software either. Processes in business as well as the systems we create in society all trend towards complication.

In our personal lives, this entropy often takes the form of complicated routines or accumulating too much stuff. We start our adult lives in a small place with nothing to our name and realize years later that, as they say, “The things you own end up owning you.” Your mind feels cluttered.

When the stakes are small, it’s easy (and even fun) to take on random cool responsibilities, use the fancy new software framework, and buy the shiny new object. It’s not until we get busy (kids, life, work, or - for software - millions of users) that the feeling of fun vanishes and we realize we’ve put ourselves into a state that’s hard to manage.

--

I was recently watching an interview with Bassem Dghaidi, a software engineer who works on GitHub Actions. In the interview, he repeatedly states the point that “Simple is hard enough, especially at scale” when it comes to system design in software. I thought this was a profound way of saying what I have repeatedly experienced so far in my career and life. It’s what triggered this article.

The more you build out (or buy, or take on), the higher the baseline operational cost you’ll pay. Every process, responsibility, and line of code requires a certain level of maintenance. This isn’t always readily apparent until later.

A new hobby might seem fun in the moment, but - yet again - you accumulate more stuff and spread yourself thin across everything in your life. It’s much better to stay as focused and simple as possible until it almost hurts not to grow.

--

Warren Buffett famously said, ”The difference between successful people and really successful people is that really successful people say no to almost everything.” Saying no to unnecessary complication, design, purchases, and processes keeps you nimble. It keeps you lean. You can respond to what’s really important to you.

Simplicity is beautiful. Maybe you don’t need the fancy new gadget, if only because you should be hyper-focused on what really matters. Maybe you don’t need to implement a committee for a decision at work or your community. Maybe you don’t need to build a new service or implement a cache on your server just because when your request volume doesn’t warrant it.

When you keep your life and projects simple, what’s really important (and what needs to be fixed when it’s broken) becomes crystal clear. When the time comes where you actually need to scale, you’ll know because you’ll feel the burn and it will be easier to do it because what you have is simple.

Choose a simple approach, say no to what you don’t need, and only say yes to opportunities (and work) that you can tell truly matters. “Simple is hard enough, especially at scale.”