The best senior software engineers I’ve worked with all share this...

When something breaks in production, they don’t start with “the requirements were unclear” or “another team caused it.”
They start with: “What did I miss?” or “What assumption did I make that turned out to be wrong?”
They treat every outage, bad deploy, or missed deadline as data.
If a system failed, they ask:
Should I have added better observability?
Could I have asked sharper questions earlier?
Did I simplify too much?
What guardrail would prevent this next time?
Even when they technically did the right thing, they still look for ways to increase future signal: better metrics, smaller rollouts, clearer contracts, earlier feedback loops.
This mindset is what separates seniors from mids.
Senior roles are all about reducing repeat mistakes and compounding good decisions.
No blame. No ego.
Just learn → adjust → apply.
That is what turns experience into wisdom and gets you promoted.

Whenever something doesn't go their way, they deeply analyze the circumstances to identify what they should have done differently, or, even if they acted appropriately based on all the information available, how could they have gotten more information or taken intermediate actions to extract more signal to inform later bigger actions.
They don't dwell or make excuses. They just learn and apply that learning to the future so they don't make the same mistake twice.