When I was a junior engineer, my manager would occasionally confide his frustrations to me in our weekly 1:1s. He would point out a project another team was working on and say, “I don’t believe that project will go anywhere, they’re solving the wrong problem.” I used to wonder, “But you are very senior, why don’t you just go and speak to them about your concerns?” It felt like a waste of his influence to not say anything.
So it’s quite ironic that I found myself last week explaining to a mentee why I thought a sister team’s project would have to pivot because they’d made a poor early design choice. And he rightfully asked me the same question I had years ago: “why don’t you just tell them your opinion?” It’s been on my mind ever since because I realized I’d changed my stance on it a lot over the years.
The answer is that being right and being effective are different.
In large companies, speaking up about what you see as a “bad project” is a good thing. But only in moderation. Sometimes the mark of seniority is realizing that arguing with people who won’t listen isn’t worth it; it’s better to save your counsel.
Bad projects
What I mean by a “bad project” is many things:
UX : making product complicated, solving a problem which doesn’t exist, breaking existing workflows
: making product complicated, solving a problem which doesn’t exist, breaking existing workflows Technical : overcomplicated design, wrong library, poor performing architecture
: overcomplicated design, wrong library, poor performing architecture Political: chasing hype cycles, exists primarily to justify a promotion
It’s important to point out that for much of the lifecycle of a project, whether it’s “bad” is highly subjective. Software engineering is largely a game of tradeoffs and making decisions which are not perfect but the best possible with the information available. There often can be disagreements on whether correct choices are made and it only becomes obvious much later on, potentially years after a project has shipped.
... continue reading