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

    Get us over the water, not build us a bridge

    One of my managers used to say that the goal of an engineering team is to "Get us over the water, not build us a bridge".

    It's a silly phrase that hides a profound insight into how the most effective engineering teams operate. Working with their product owner/manager, not for them. At the very least engineers should understand how their work solves the customer's problem.

    Customer defined broadly. This can be an end user, an internal team, a paying customer, or an executive with a pet project.

    Product works with engineering
    Product works with engineering

    The image shows two extremes of a spectrum – a widget factory model compared to an empowered teams model. You're likely somewhere in between. Some days you just gotta get things done because they need doing. Other days you get to think deeply and iterate on a solution.

    Widget factory

    In a widget factory engineering teams are told "build a bridge" and they build a bridge. Best solution or not, a bridge is what you'll get.

    The "widget factory" term is contentious.

    When I mention it among friends of varied backgrounds, many let out a cathartic sigh and say "yes it sucks so much, never again". When I mention it among silicon valley nerds they go "I thought that was just an old story people say to scare children".

    The widget factory
    The widget factory

    The widget factory stems from an old model of software development that thought of coding like manufacturing. Super smart people get in a room together, design the whole system, then hand off tasks to engineers who "just need to code it up".

    Engineers get little to no input and may not even understand the problem they're solving. Bland tasks show up, you write the code, ship it off, and someone else makes sure it solves the customer's needs.

    I've personally seen this model as an outsourced freelancer. The widget factory feeling is a big part of why I ended my freelancing career and went into product engineering.

    The problem with this approach is that it's slow, unrewarding, and leads to products nobody likes. The up-front design takes time and is too abstract to find the issues, the implementation finds problems that are hard to fix without a re-design, and the final product doesn't match the customer's vision because the fuzzy image in their mind didn't translate.

    To move fast, you need a tight feedback cycle between the customer, the design, and the implementation. The widget factory struggles at this.

    Feature team

    In a feature team model teams are told "get us over that river" and they work with constraints to figure out how. Best strategy or not, across that river you'll get.

    You're likely on a team like this! They are the most common in modern companies.

    Feature teams improve on the widget factory by bringing product managers into the engineering team. Cagan talks about them as a transition step towards fully empowered teams.

    Feature team combines product and engineering
    Feature team combines product and engineering

    A feature team combines product and engineering, but doesn't give the team autonomy to set its own direction. Customers (defined broadly) express their needs and the team has leeway to find the best solution.

    This unlocks tight collaboration and quick feedback cycles between product and engineering. Instead of product and customer iterating in the abstract before talking to engineers, product and engineering iterate together with working code as the guide.

    Because engineers understand the problem they're solving, they can recommend innovative solutions that you wouldn't think of without a deep understanding of the system. And engineers can push back on requirements that would be costly to implement.

    This feedback is key. Product cannot make good decisions without quality input from engineering.

    If option A takes 2 weeks and option B gets you 80% of the value in 2 days, product will want to know. Especially if they wouldn't think of option B on their own.

    Likewise product may have an idea that looks fantastic, but when you explain the cost – how long it takes to build or how risky the bugs are because your foundation is a pile of spaghetti – they might say "Okay not worth it. Let's do this other thing instead".

    You can't have those conversations in a widget factory.

    Empowered teams

    In an empowered teams model, teams are given objectives and full autonomy to execute. Turns out the cows you wanted to pet across the river come to your side every week! No need to cross the river at all.

    This is the power of an empowered team. Each team can figure out the best way to get what the customer (defined broadly) needs. Maybe even finding problems to solve that the customer didn't notice they had.

    Empowered team adds autonomy and collaboration with the customer
    Empowered team adds autonomy and collaboration with the customer

    The empowered team builds on the feature team by adding tight collaboration with the customer (defined broadly). The product development process becomes the product development cycle.

    From an engineering perspective, this can feel similar to the feature team. You work in close partnership with your product owner, make sure they have good inputs to make decisions, and seek ways to fulfill customer needs with a good balance between cost and quality.

    But the way you measure success changes.

    In a widget factory or feature team, you care about outputs – did the team do the work? Did features get shipped, were meetings attended, did you do the sprint rituals and ceremonies. You do the work and the rest is somebody else's problem.

    With empowered teams you care about outcomes – did the team achieve a result? Leadership doesn't ask if you shipped features, had meetings, or used the right project management approach. They set business goals and the rest is up to you.

    Cheers, ~Swizec

    [sparkjoy|get-us-over-the-water-not-build-us-a-bridge]

    Published on May 14th, 2024 in Mindset, Teamwork, Product development, Scaling Fast Book

    Did you enjoy this article?

    Continue reading about Get us over the water, not build us a bridge

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