Every programmer goes through a part of his life when he is at the most enthusiastic phase of his career.
You know exactly what I'm talking about. It's the "Of course we will work weekends even if we don't need to" phase. Typically happens in the first two years of their career for most programmers.
This is the time when they impress their bosses, bag promotions, score hikes and sometimes even develop deeper roots.
Then they invariably tend to get tired of trying to impress their managers.
Or they just realize that they have a life.
Or they go through phases in their personal life which start demanding more attention.
I've seen managers change opinions of individuals when this happens.
"She was amazing when she joined but she has totally lost that spark now. She's never going to be as good as she used to be".
When you say you are working with people who are incompetent what you often mean is you are working with highly competent people having bad days and instead of trying to help them you've given up on them.
When you've seen someone peak their career with your own eyes, you know exactly what they are capable of doing.
When you say they are incapable of reaching that peak again, you are not putting a hard limit on their capabilities. You're putting a hard limit on your leadership style instead.
Just a little something to think about.