I routinely hear performance reviews from my fellow managers that sound something like this:
"This developer is doing a horrible job. I constantly have to give guidance, monitor their performance, and make corrections to their code."
My response, is usually, "Yes, but what are you doing to manage his performance to a higher level?" The job of a manager is to manage, but most managers prefer to report. Instead of managing a resource, they simply report the resource's performance. Few managers understand this. Let's use the analogy of a car. Let's say you you think you have a flat tire. You use a tire pressure gauge to check its inflation level, and determine that the tire is indeed low. Does that fix the tire? No, you simply used a tool to report that state of the tire. If you took the car to a tire shop, you wouldn't think much of a mechanic who simply told you that the tire pressure was low. You already knew that. You don't need information about the tire. You need the tire to be fixed. However, despite operating like an ineffective mechanic, we continue to let managers think they are doing a great job by simply reporting what most people already know. Great managers don't just report the defects of their teams. Great managers actively work to fix the defects in their teams.
Managers are supposed to decrease the weaknesses of their teams while increasing their strengths. Far too many managers I've encountered simply let their teams function in the way that they received them. Therefore, if a manager gets a great team, then the team produces great work, and we think that the team had a great manager. However, that is often not the case. Great teams tend to produce great work irrespective of the manager in charge of the team. Conversely, if a manager receives a poor team, then the team, unsurprisingly, produces poor results. Managers, in this situation, tend to blame the team and almost never admit that they are bad managers.
Effectively managing a team (instead of simply reporting the team's performance) requires the ability to deeply analyze each person on the team and understand how to make improvements. This is hard work which is why most managers avoid it. You have to understand how each person receives feedback, create performance improvement plans, and conduct regular checkpoints to measure progress. While every team member has to own her career, the manager has to be fully invested and accountable for the improvement of everyone on her team.
Far too many managers are content to simply be reporters. The only way to improve the number of great teams in the software industry is by teaching managers how to steadily improve the performance of their teams no matter the condition in which they were received.