Recently, Jason posted about bad development managers. Like Jason, I was also told early in my career that “Sales and Marketing is the natural enemy of Development”. I also learned early on that this isn’t entirely true. While it is true that the sales team will sell products that don’t exist yet and features that don’t exist or that are technical implausible to build in the timeframe promised, it is generally due to customer demand. Whether you like it or not, if you develop commercial software you will be driven largely by your market’s demands.
As Jason points out, a good manager is hard to find. Almost all development managers come from either the business side or the technical side. It is this single focused background that causes the problem. As I mentioned in my post “Can a Manager Be a Techie and Survive?”, a good development manager must have a blend of managerial skills, business smarts, top-notch technical skills and integrity in order to be effective.
The manager who only has a business background doesn’t understand the complexities of software development. He doesn’t realize the styles of management that work in other aspects of business usually fall short when applied to a team of developers.
Unfortunately, a similar problem occurs for the developer turned manager. Often times, this is the manager that wants to micro-manage everything, criticizes the developers work and stops them from getting the job done. All of this is done in a vain attempt to prove they are still technical while they fail to actually manage the team.
So what makes a bad manager?
It’s a curious mix of hubris and ignorance that makes a bad manager, whatever their background–people who believe themselves superior to those beneath them, but at the same time feel threatened by them. Who will favor cronies and bluster over the advice of more competent engineers.
A good manager, on the other hand, is the first and last line of defense and sanity for his development team. It is his job to shield the development team from management and shoulder the responsibility when something goes wrong; at the same time he’s the one to pass praise from management on to the team and make sure their accomplishments are recognized. A good development manager is not self-serving and doesn’t try to make himself look good at his teams expense. There is a great book written for developers who find themselves being managers called Herding Cats by J. Hank Rainwater.
It is actually more difficult for a developer to become an effective manager because the skills required to be a manager are completely different than those required to be a developer. It is no longer about the technical realities of how to get the project done but about the logistics of how to get the project done and how it needs to integrate with the other product offerings and the overall strategy of the company. At this level, it is still important to be knowledgeable at the technical level but you shouldn’t be expected to still be a “techie”.