09/12/23

You Can’t Unboil a Frog

How to Cope When Your Tech Stack is a Hot Mess of Complexity

5 Min Read

By now you will have heard the tale of the boiling frog — that in order to cook a live frog you gradually turn up the heat so that the frog doesn’t notice it’s being boiled and leaps out of the pot.

It’s a metaphor cautioning you to be aware of creeping changes that ultimately lead to undesirable consequences.

But let's put a new spin on this story: What if the frog is your startup’s technology stack, and the gradually rising temperature is the increasing complexity that imperceptibly cripples your team's productivity over time?

From Freshwater to Hot Soup: An All Too Common Journey

Most will agree that when starting a new project, you’re keen to avoid making the same decisions that landed your last project in a hot soup of complexity. You will stick to simple tech and focus on productivity. After all, all you need is a server, a database, and maybe a front-end framework to give you a head start building your new shiny web app. Your digital frog starts off swimming happily in a cool and comfortable pond, loving life.

Over time, however, new features get added, the codebase grows, and more technologies are introduced into the mix. The temperature starts rising, but the change is so gradual that it's easy to overlook. After all, each new library or service is easy to motivate in order to quickly deliver the latest feature.

But fast-forward and, before you know it, your simple pond has transformed into a complex, scalding hot cauldron of myriad libraries, services, and tangled dependencies. You’ve ended up in a bad place, where your team’s productivity is hampered by complexity and each change is slower, and more likely to blow up production, than the last. Your frog is boiled, and nobody noticed the change until it was too late.

Sunk Cost Fallacy and The Ostrich Effect

Often, once teams start to realize they are in a bad place, they fall victim to the sunk cost fallacy. "We've spent so much time and resources on this setup; we can't just throw it all away", they say. Or they stick their heads in the sand and call it "status quo", convincing themselves (and their leadership team) that the problems are not as bad as they seem and that it’s simply the way modern development is done.

However, the truth is that they are already suffering significant costs in reduced productivity and missed opportunities. Depending on which phase their business is in, this may be putting their entire company at risk. Remember, 90% of startups fail because they run out of money before they find product/market fit.

You Probably Need A New Frog

So you missed the creep of complexity and ended up with a fragmented and unproductive tech stack — what are you supposed to do to save your startup? Clearly, you can’t unboil a frog.

It's hard to give concrete advice, as each situation will be different. But in my experience, it's all too common to avoid the problem entirely. So my best advice is: Buy a new frog.

For tech teams, this often means making seemingly radical changes. It will feel uncomfortable, as it starts with taking a hard look at your current setup, evaluating its effectiveness, and accepting you may need to throw away large parts that have many hours invested in them. This may hurt feelings and cause uncertainty, but recognizing there is a problem is the first step toward resolving it.

What we're doing about it

This very common, and seemingly unavoidable, situation is why we’re building Encore.
(Yeah, that's right, get your frogs here people!)

Encore is a developer platform designed to improve productivity in backend development by reducing complexity. It enables you to swap out boiling water for a new comfortable pond, by automating your DevOps and infrastructure management and providing built-in tooling for local development, observability, testing, and documentation. Simply put, Encore lets you turn down the heat and offers your new frog a far more pleasant swimming environment.

While we consider Encore a leap forward, it doesn't mean you have to immediately rewrite all the services you’ve built or leave behind the few key tools you're (still) fond of. We believe the most important thing is to quickly unlock productivity for building new features and services, as this is where you want your team to be spending their time as you navigate toward product/market fit. To achieve this, Encore provides compatibility layers and escape hatches for integrating with existing systems, gradually migrating existing services, and integrating your favorite libraries and tools.

Wrapping up

The boiled frog metaphor is a reminder for tech teams to be ever-vigilant of the slow, crippling complexity that can seep into previously efficient workflows. Like the frog, teams can be blissfully unaware until it’s too late, because it’s easy to motivate each new layer of complexity in isolation.

What’s hard is seeing the whole and recognizing when it's time to leap out of the boiling pot and into a new pond and a new stack. And when that time comes, make sure you're leaping into a solution that gives you the best chance to thrive again.

About The Author

Marcus is the co-founder of Encore and a long-time builder of platforms. He was previously Product Lead for the payments and subscription platform at Spotify where he worked with numerous teams building large-scale distributed systems serving hundreds of millions of users. He also enjoys baking pizza.

Encore

This blog is presented by Encore, the backend framework for building robust type-safe distributed systems with declarative infrastructure.

Like this article?
Get future ones straight to your mailbox.

You can unsubscribe at any time.