The hardest thing I have learned in 25 years of building software is not how to identify which projects are going to fail. That part, frankly, gets easier with experience. The hard part is deciding what to do when you see it coming.
I want to be direct about something that has been circulating in engineering circles lately: the idea that senior engineers sometimes deliberately let bad projects fail, and that this can be the right call. I have mixed feelings about this framing, but I think it is worth engaging honestly rather than reflexively dismissing it.
A story I am not proud of
Early in my role at a previous company, I could see that a major infrastructure rewrite was going to be a disaster. The scope was wrong, the team was wrong, the timeline was fantasy. I said so in the initial design review. I was told the decision had already been made at the board level. I raised it again in a 1:1 with my CEO. He thanked me for my perspective and moved on.
After those two attempts, I made a choice: I stopped actively fighting it. I documented my concerns in email. I kept my team insulated from the worst of it. And I watched the project collapse over 18 months, exactly as I had predicted.
Was that strategic patience? Or was it abdication? I have asked myself this question many times.
The framework I use now
After a lot of reflection, I have developed three signals that I use to determine whether staying silent is acceptable or whether I need to keep fighting regardless of political cost:
Signal 1: Customer harm potential. If real customers are going to be harmed - financially, in terms of their data, their safety, their ability to do their jobs - that is a line I do not stay silent on. I will escalate to the board if I have to. I will put it in writing. I will be annoying about it. This is non-negotiable.
Signal 2: Junior engineer career risk. When I see talented engineers whose careers might be damaged by association with a doomed project, I try to intervene - not necessarily to save the project, but to protect those individuals. This might mean advocating for them to be assigned elsewhere, or making sure their contributions are clearly documented separate from the project outcome.
Signal 3: Pure organizational sunk cost. This is the gray zone where the “let it fail” argument has its most validity. When the downside is wasted money and management embarrassment, and when the team working on it actually might learn something important from the experience, there is a real argument for stepping back. Not because you are indifferent to the waste, but because sometimes organizations have to learn lessons the expensive way.
The honest part
I want to acknowledge something uncomfortable: this framework is easier to apply when you have job security, reputation, and a safety net. The calculus looks very different for engineers who cannot afford to be wrong about when to spend political capital. I have been in a position of relative security for much of my career, and I should not pretend that framework works the same way for everyone.
I also want to be clear that “documenting concerns” is not the same as actually doing something about them. Documentation is necessary but not sufficient. There is a real risk of using “I raised it in writing” as a form of moral laundering - making yourself feel better about staying silent by creating a paper trail.
The question I am sitting with
Where do you draw the line between strategic restraint and complicity? I have been on both sides of this decision and I do not think there is a clean answer. But I do think the engineering community benefits from having this conversation explicitly rather than leaving it as an unspoken norm that gets passed down informally.
What signals do you use? And have you ever gotten the calculus wrong in either direction?