Swizec Teller - a geek with a hatswizec.com

Senior Mindset Book

Get promoted, earn a bigger salary, work for top companies

Senior Engineer Mindset cover
Learn more

    Solve the problem, not a different more difficult problem

    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?

    How I think of ROI
    How I think of ROI

    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.


    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

    Published on October 4th, 2023 in Mindset, Engineering, Software Architecture, Complexity

    Did you enjoy this article?

    Continue reading about Solve the problem, not a different more difficult problem

    Semantically similar articles hand-picked by GPT-4

    Senior Mindset Book

    Get promoted, earn a bigger salary, work for top companies

    Learn more

    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 ❤️

    Created by Swizec with ❤️