On Sane Tradeoffs

The design called for four tires in both the front and rear, together with four-wheel drive, which required a new suspension solution.

Vladimir Zagorsky, Chief of BelAZ’s Suspension Design Engineering Department

What’s better, a Lamborghini Aventador LP 780-4 Ultimae Roadster or a Belaz 75710 dump truck? Maybe you could use some context. The Lamborghini makes 769 horsepower and is one of 250 that will ever be made. It also has an MSRP $546,847. Now, you might be thinking this is a trick question, and you could be right. The Belaz 75710 dump truck has 2,300 horsepower from each of its two 16-cylinder turbocharged diesel engines, can carry the weight of 290 Lamborghinis, and costs about $6,000,000.

Whatever your answer, neither is likely to be in your driveway, and for good reason. They have very niche, specific use cases – and associated costs. The most popular car in the world from 2013 until at least 2020 was the Toyota Corolla. It fulfills many people’s needs at an affordable price. It isn’t the fastest or best-handling car. You can’t haul a lot of stuff in it, compared to many other models. It doesn’t look particularly interesting. It does what it needs to.

I’ve found that discussions around software are almost inherently about tradeoffs. I could write some code more concisely, but at the expense of readability. We could make this part more performant, but it would require using a programming language only one person at the company currently knows. I could make this bit of code both more concise and readable, but at the expense of time.

Time is a component in nearly all tradeoffs, to be fair.

The Toyota Corolla is the result of compromise. It could be made faster but have a worse ride. It could have cushier seats but cost more. It could have more room inside at the expense of fuel efficiency. These compromises can be seen as a negative, but they are a fact of life.

I found it tempting early on in my software development career to immediately apply learning. If I learned about software performance, I would see code through that lens for a few weeks and focus on making things more performant – even if they didn’t really need it. Now, I realize that performance is just one of many considerations of software development.

Every consideration is just one of many for software development.

Jared Porcenaluk Handshake Protocol Cover

Leverage my ten years of software engineering experience to find a tech job that matters, get hired, and get paid what you deserve.

It’s all in my book, Handshake Protocol – the step-by-step guide to getting hired as a software engineer.

↓ I'll get a dopamine hit if you share this post