This one is a Blast from the Past -- I originally wrote and posted it on December 15, 2005 -- but it is as true today as it was then. I even considered palming it off as fresh material.
It's a standard Dilbert joke that managers are idiots. One doesn't have to hang around programmers too long to find out that many of them work for managers that don't have a clue about developing software and thus make many a nutty decision based on profound ignorance. Plenty of Delphi fans have had a boss that follows the "Nobody ever got fired for choosing Microsoft Development tools" rule and choose Visual Basic as a corporate standard. <shudder> And the old adage states that programmers make crappy managers.
So, I guess, based on the above, it's impossible for someone to be a good manager of programmers. If one doesn't know anything about programming and has never been a programmer, then apparently, he will suck as a manager. And if one has been a programmer, and is so good at it that he gets promoted to be a manager, he,too, will suck as a manager. Sounds like a lose/lose situation all around -- programmers doomed to a life of sucky supervisors.
Well, I'm not buying it. Surely somewhere, somebody is managing programmers well. Somebody has to be leading folks to build some of the insanely good software projects that are going on out there. So, what does it take to manage programmers well? Good question. I'd say that such skills and capabilities exist. I'd also say that they are, sadly, in relatively short supply. Too many Dilbert strips end up on too many cubicles in software development shops.
First, to be a good manager of programmers you have to be,well, a good manager. That's easier than people think, really. Here's my basic list of things one can do and not do to be a good manager:
- Place the careers of the people that work for you above your own. Never, ever, ever, ever, ever take a dump on an employee to make yourself look good to your boss. Always let the boss take a dump on you instead of your employee. Take responsibility for everything bad that happens under your watch. Dole out all the credit for good things that happen to your people. If you have some bizarre, overwhelming need to impress and brown-nose your boss, let your employees make you look good. It's your job to make your employees happy and productive. It's not your job to get promoted. (And do I need to say that if your employees are happy and motivated, then they'll do a good job, which means you are doing a good job?)
- Place the needs of the employees over your own. What's the quickest way for a Marine Corps officer to be considered the biggest jerk since Josef Stalin? Get in the chow line ahead of his Marines. Officers don't eat until the troops do. Take the same attitude, and your people will love you and work hard for you. Give them the good computers. Give them the good chairs. Don't take a perk for yourself until they all have it. Believe me -- they will notice this. Another way to state this is don't ask your employees to do anything you yourself aren't willing to do. If you want your folks to work 12 hours a day, you need to be there 13 hours a day.
- Recognize that your employees know what they are talking about and might actually know more about some things than you do. (If they don't know what they are talking about and they don't know more about some things than you do, then you need to get new employees). If your employees seem to think that the WonderWidget is a much better solution to a problem than the SuperSprocket, then, hey, maybe, just maybe, they are right. Just because you read about the SuperSprocket in some magazine that takes $4.6 million dollars a year in advertising from SuperSprocket, Inc., doesn't mean that is the way to go.
- As a follow on to that, don't try to impress your employees with your knowledge. Don't spout buzzwords unless you know what they mean. They probably are going to think that you are an idiot anyway, so feel free to appear to be ignorant about things that, well, you are ignorant about. If you don't have a clue about what the best printer is for the needs of your team, then let the folks on your team that do know about such things choose the printer. If you don't know the answer to something, say so. The quickest way to be thought an idiot is to try to act like you know what you are talking about when you don't.
- Manage yourself out of a job. The best managers are the ones that sit in their office all day surfing the internet because they've set things up so that their people can take care of everything and thus they don't have anything to do. People love being the ones with the power, authority and skill to do the work. If you are in their shorts all day, making all the decisions, doing all the work, and taking all the credit, you will be a crappy manager. Once you've managed yourself out of a job, then, besides surfing the net, you can spend all your time making things even better for your employees and protecting them from the foibles of your boss.
- Encourage your employees to tell you what is bugging them. When I was running a 24/7 Intelligence Watch, I told my people that if they found a Dilbert cartoon that exactly described a stupid, irritating, or aggravating situation in our organization or something that I was doing that was "pointy-haired-boss-ish", they could bring it to me or put it on my desk anonymously. If you are totally committed to the first two items on this list, they will come to you. If you aren't, they never will. And if your employees aren't bringing issues and complaints and problems to you, then you have a big problem.
- Reward your employees with what they want to be rewarded with. Frankly, this is usually good old cash money. But if you can't do that, perhaps they want better computers, a nicer desk chair, a day off, whatever. If you want to reward someone, find out what they want and give it to them. But please, PLEASE -- I'm begging you here -- do not call a big meeting and pass out a "Worker of the Week" award with some cheesy certificate ginned up with Microsoft Publisher. When I was in the Navy and at a joint command, I had an Air Force Colonel that did this, and he was universally mocked and reviled for it. Everyone thought it was a joke. No one wanted that silly certificate and everyone hoped and prayed that they wouldn't "win" the thing. Those that did posted them like they post Dilbert cartoons on their cubicles -- sort of like a badge of "dishonor".
Now, that's all general stuff. It applies to all managers, whether they lead a team of auto workers or a group of Delphi programmers. What does it take to manage programmers well?
- I think that to be a good manager of programmers, you have to be, or at least have been, a programmer yourself. This goes against the conventional wisdom, I know, but I think that in order to understand the way programmers work, you really have to have done it yourself. It's true that many programmers would make bad managers, but it doesn't follow that every programmer guarantees that one will be a bad manager. Programming is one of those strange professions that mixes right- and left-brained skills. To program well, you have to have an ordered, mathematically oriented mind, but at the same time you have to come up with artistic, creative solutions to puzzles and problems. One really needs to be one to understand one. Now the hard part here is that most programmers don't want to be managers. Alas -- a quandry there, eh? Well, if you run across one thatdoes, don't hesitate to consider it. If you are a programmer and want to be a manager, let your bosses know, they'll probably be happy to hear it.
- Give programmers what they want: challenging work, a quite place to do that work, a good fast computer, a good salary, and the opportunity to expand their skillset. Don't be cheap on these things. This may cost a bit more,but you'll make it back in spades.
- To as large a degree as possible, let programmers choose the tools that they use. I know, I know, this isn't always possible. Sometimes those decisions are made above your pay grade. But then again, if you use Delphi under the table to produce a solution twice as fast for half the cost, then maybe Delphi won't be under the table for long. If one of your guys wants to try to build that new intranet application in Ruby On Rails, let him. Why not? Who's going to know? If it works and gets deployed early, it's likely that no one will care what tool or language was used to make it, and now you have a new skill in your quiver.
- Be flexible. Some programmers do their best work between 10:00pm and 04:00am. Let them. Some hate to wear ties, dress shirts, khakis, etc. Don't make them. Some are flat out nuts. Let them be. Nothing wrong with all of that as long as they produce good code, eh?
Okay, that's a pretty good list. I've been on both sides of the fence, and as a consultant, I see all sorts of management types and methods. I deal with programmers on a daily basis, and I are one myself, so I think I have a pretty good grip on what's going on from a lot of angles. I'm sure you all will come up with more stuff and comment on it. Please do. After all, I'm not an expert on this stuff and I only write this to try to make you look good. ;-)