DEV Community

Tolu
Tolu

Posted on • Originally published at soladipupo.substack.com on

The True Cost of Technical Decisions

There are no solutions. There are only trade-offs. Thomas Sowell

We all want to build cool stuff. It’s why we got into engineering.

In 2016, Uber made what felt like the coolest technical decision on the planet. To handle their insane growth, they decided to split their monolithic codebase into microservices. On a whiteboard, it looked brilliant. Elegant. Scalable.

Fast forward three years, and they hadn’t built a sleek machine; they’d grown a jungle.

They had over 2,000 distinct microservices. Trying to debug why a ride request failed felt less like engineering and more like archaeology, tracing a single click through 50 different services owned by different teams. They were spending more time tracing function calls than shipping actual value to customers.

It took them years and millions of dollars to unwind that “brilliant” decision into something manageable.

This is the hard truth that took me years to learn: Complexity isn’t a badge of honor. It’s a tax. And you pay it with your most precious resource; your time.

The “Weekend Project” Trap

We’ve all been there. You look at a vendor like Auth0 or Datadog charging $500 a month and think, “What a rip-off! I could build a basic version of that in a weekend.”

And you’re right. You probably could build it in a weekend.

But then you spend the next two years patching it, securing it, upgrading it, and waking up at 3 AM when it breaks because you didn’t account for daylight savings time in a specific timezone.

Your salary is real money. If buying a managed tool saves your team just three hours of collective engineering time a month, it has usually paid for itself. Stop treating your time like it’s free.

The Jungle You Create (The Hidden Costs)

When you choose to build something that you could buy, you aren’t just saving license fees. You are planting vines that will eventually choke your productivity.

  1. The Maintenance Vine: Code is never “done.” It’s a living liability that needs constant feeding. Every line of custom infrastructure code you write is a line of feature code you didn’t write.

  2. The Opportunity Cost Vine: While your team is busy reinventing a payment gateway that Stripe already perfected seven years ago, your competitor just shipped the game-changing feature that’s going to steal your market share.

  3. The “Bus Factor” Vine: You know that “lightweight, custom” internal tool Bob built? Well, Bob just quit to join Google. Now you are the only person on earth who understands how it works. Good luck taking a vacation this year.

The Senior Engineer’s Rule: Only Build the Magic

So, how do you decide? You can’t outsource everything.

My rule of thumb has become simple over the years: Outsource the plumbing so you can focus on the magic.

  • BUY the boring stuff. Authentication, email delivery, basic monitoring, standard payments. If 10,000 other companies need the exact same thing, don’t build it yourself.

  • BUILD your differentiator. The thing that makes your company unique. The secret sauce algorithm. The core user experience that nobody else has. That’s where your brainpower should go.

Early in my career, I optimized for “Resume Driven Development.” I wanted to build everything from scratch because it felt like real engineering.

Now? I optimize for sleep and shipping. My job isn’t to write the most code; it’s to solve the problem in the smartest way possible so the business wins.

Take a look at your Jira board right now. What ticket are you dreading? Is it wrestling with some custom, over-engineered beast that isn’t core to your product?

What would happen if you just deleted that code and bought a solution instead? (Okay, you will probably need some consultations and approvals before you light the legacy repo on fire since I really don’t want you to get fired because of my post, but you get the point.)

That is the difference between just coding and actually engineering.

Top comments (0)