It's a problem that has existed since the dawn of computing. Only a good software engineer can be capable of judging the quality of another engineer's work, but good software engineers typically aren't interested in management. They enjoy software development too much. Even if they were interested in being a manager, they likely wouldn't be very good at it. Management requires a very different set of skills.
Managers of software development teams are in a very unenviable position. It's like herding a bunch of anti-social and territorial wild-cats. They have very few tools at their disposal to qualitatively judge the performance of their engineers. Most of the quantitative metrics are worthless:
- Lines of code written per day? Meaningless!
- Lots of overtime hours worked? Could be a good sign or a bad sign!
- Spending hours staring at their screen? Might be a lazy imbecile or a genius!
Consider this list of questions to which any good software-engineering manager must have good answers:
- Is an engineer's design for a given project going to stand the test of time?
- In a group of developers, which one is best suited for a particular project?
- How accurate is the time estimate for a given project?
- Is a project taking too long due to legitimate unknowns, or due to the developer's incompetence?
- Are the bugs due to the nature of the beast or due to some avoidable mistakes?
I figured that with all of this talk in our industry about methodologies, standards, best-practices, and performance metrics, there must be some good, practical resources already out there to help managers navigate these difficult waters. Apparently I was wrong. If there is, I can't find them.
Rather than simply admiring the problem, I've decided to do something about it. I have no delusions. I don't expect that my musings will solve the industry's woes. I do hope, however, that this blog will be one more tool in your belt as you scale this seemingly insurmountable cliff. As a software engineer, I feel like I can help you. I don't want your job. Honestly, it looks terrible. But I do understand the technical side of things and I think that I can give you some practical advice which may help you answer questions like the ones above.