Underperformance rarely arrives as a single dramatic event. It builds gradually, and the early signals are easy to rationalise away if you are not paying attention.
Increasing dependency. The engineer who used to work independently now needs frequent guidance. They ask more questions, escalate more decisions, and their pull requests sit longer because they are less confident in their own work. This is not the same as a junior engineer learning the ropes. This is someone who was previously capable and is trending in the wrong direction.
Narrowing contribution. They stop doing the extras. No more volunteering for code reviews, no more participating in architecture discussions, no more helping onboard new hires. They do their assigned tickets and nothing else. In isolation, this looks like someone having a quiet month. In combination with other signals, it is a pattern worth investigating.
Quality drift. The code still ships, but it requires more review cycles. Edge cases get missed. Tests are thin or absent. Other engineers start doing quiet rewrites after merge. This is often the first signal that peers notice, sometimes before the manager does.
Disengagement in one-to-ones. An engineer who used to have opinions and push back on decisions now says everything is fine. They have stopped advocating for anything. This is not contentment. It is withdrawal.
The key insight from organisational psychology research is that early intervention dramatically improves outcomes.[2] The longer underperformance continues without acknowledgment, the harder it is to reverse, because the engineer internalises the behaviour as acceptable and the team internalises the manager's silence as indifference.