Here's a trap engineers fall into all the time.
You are asked to solve a problem and you think "Ah yes! The general case for this is so and so and to make the solution work forever in all cases we'll need to ...".
Engineering is programming over time, right? Not always! Sometimes you need to solve today's problem and move on.
For example – our PM wanted to prove a hunch with an A/B test on the corporate site. We could descend upon this project, that we don't own, and design a generic A/B testing framework that works with Gatsby and our headless CMS and all our product testing infrastructure. Or we can add a useEffect
to one button. 🤔
The team's eyes lit up when discussing the first option. The PM's eyes lit up when discussing the second.
Guess which approach we took.
Yep, we built the useEffect
in one afternoon and moved on. Turns out the team that owns our marketing site is building a more robust A/B testing solution anyway. Should be ready in a few weeks 🤞
Cost vs benefit
What we're getting at here is return on investment. What is the goal and how much does it cost to get there?
This is roughly how I think about this.
You have different solutions that take a certain amount of time or money – the cost. Your solution line goes higher or lower on the graph. The solution will provide value after a starting gap.
The area between these two lines represents my fuzzy understanding of ROI – how much value does a solution need to provide to justify the initial investment.
Value and cost are fuzzy concepts here. Cost can be time, effort, maintenance burden, or even money. Value can be dollars in the bank, lower future cost, or data that your PM can use to win an argument.
Yes value can even be "I had fun building this and it looks great on my CV", but please save that for side projects :)
Why engineers get this wrong
As engineers we love solving big fun problems. And we hate solving the same problem twice.
So we look for the most comprehensive generalest version of an ask and solve for that. Why build a hammer if you can build a hammer factory that creates any hammer you could ever want?
But that's a much harder problem! By the time you're ready to test the hammer factory, I've already fed 5 people.
Remember: Your customer doesn't care about the hammer, they want to eat dinner but the chair's broken. Make sure you ask why they need a hammer factory factory.
Cheers,
~Swizec
PS: like 90% of what I do as tech lead is to pull talented engineers who want to flex (including myself) away from shiny problems and onto the task at hand
Continue reading about Solve the problem, not a different more difficult problem
Semantically similar articles hand-picked by GPT-4
- You can't side-quest a product
- What is the goal of engineering?
- Let small fires burn
- Get us over the water, not build us a bridge
- Own the outcome, not the work
Become a *true* Senior Engineer
Get promoted, earn a bigger salary, work for top companies
Getting that senior title is easy. Just stick around. Being a true senior takes a new way of thinking. Do you have it?
The Senior Minset email crash course
Get a free chapter from the Senior Engineer Mindset book and a sample audiobook chapter, followed by a Senior Mindset 101 email course.
You'll get insights to apply at your work right away.
Have a burning question that you think I can answer? Hit me up on twitter and I'll do my best.
Who am I and who do I help? I'm Swizec Teller and I turn coders into engineers with "Raw and honest from the heart!" writing. No bullshit. Real insights into the career and skills of a modern software engineer.
Want to become a true senior engineer? Take ownership, have autonomy, and be a force multiplier on your team. The Senior Engineer Mindset ebook can help 👉 swizec.com/senior-mindset. These are the shifts in mindset that unlocked my career.
Curious about Serverless and the modern backend? Check out Serverless Handbook, for frontend engineers 👉 ServerlessHandbook.dev
Want to Stop copy pasting D3 examples and create data visualizations of your own? Learn how to build scalable dataviz React components your whole team can understand with React for Data Visualization
Want to get my best emails on JavaScript, React, Serverless, Fullstack Web, or Indie Hacking? Check out swizec.com/collections
Did someone amazing share this letter with you? Wonderful! You can sign up for my weekly letters for software engineers on their path to greatness, here: swizec.com/blog
Want to brush up on your modern JavaScript syntax? Check out my interactive cheatsheet: es6cheatsheet.com
By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️