This is my view on how programmers (or obnoxious programmers like me) should be managed. Almost all of these things are based on my personal experience, especially learning from the mistakes made by management.
Everybody knows that programmers are probably the hardest people to manage, because the way they work is so different from the norm. The things that are important to them are not usually important to business people and vice versa. Programmers are also delicate little creatures that remember every single mistake managers make.
I have seen numerous cases of mismanagement that it really raises the question whose fault is it? I would say that the finger can almost always be pointed at the upper management and in some organizations at the HR. It’s their job to pick the best managers to manage programmers.
If you are making management decisions in a software company, you have to know your personnel. Many companies are managed by sales and business people, and they have no idea how to manage programmers, because they don’t know what it’s like to be a programmer.
Usually the best companies, for programmers to work in, were founded by programmers and most of the upper management are former programmers themselves. If your upper management consists of business people, I will bet that they will drive most of the programmer crazy with their stupid decisions.
I do realize that the most important goal of every single company is to make money, but at what cost? One buzzword in today’s economical situations is cost cutting. Companies try to save a little money here and there, but they might not realize that cost cutting can actually do more harm than good. Make enough stupid cost cutting decisions, and your best programmers will go work for a company that does not make stupid decisions to save a few cents here and there.
If you are any kind of manager in a software company, follow these simple instructions and you will earn programmers’ respect.
Read Peopleware, again, and again
There shouldn’t be any managers in software companies that haven’t read Peopleware. The basic principles how to manage programmers are timeless. I don’t have a lot respect for managers, if they haven’t read this book. Instead of spending thousands of dollars in so called management training, every single company should buy a copy of this book for every single employee in the company. You simply shouldn’t be allowed to be a manager, unless you have read this book.
Don’t treat programmers like second-class citizens
Example : One company had this big gala to reward all the best sales people and support people. There was free food and drinks, and stupid awards. Pretty much everyone including the managers of programmers were invited, except the programmers themselves. Programmers do not care that much about awards, but I have never seen a programmer turn down free food and drinks.
Don’t treat programmers like they are all the same
There is a huge variance in productivity between programmers, but not necessarily in their salaries. The best sales people make the most money, because it is easy to measure their sales, but companies are reluctant to pay the most productive programmers what they are actually worth.
Of course, measuring programmers’ productivity is really hard, but when someone is a lot more productive than others, it is actually pretty obvious. In what kind of system the most productive programmer, who is clearly at least two times more productive than the other programmers, gets a pay check, which is at most 20 percent bigger?
Don’t try to impress them with your business bullshit
Most programmers don’t care how you run the company, as long as it doesn’t affect their work too much. If you try to push your business lingo down their throat, they will laugh at you. Probably not out loud, but once the programmers get back to their caves, they will rip you apart. Things like this makes you lose all credibility in the eyes of the programmers.
Don’t waste their time
There are so many ways to waste programmers’ time. Basically anything that does not involve development related tasks makes programmers feel like they are wasting their time. Programmers want to spend their days programming, if you don’t let them do this, they will find another job, where they can actually program.
Meetings are the worst time wasters of them all. You should carefully think before inviting programmers to meetings. Is the meeting really worth of disrupting the programmer’s work flow for multiple hours or possibly the whole day? Most programmers should only take part in design meetings and those are not really meetings in the traditional sense; they are more like interactive design sessions.
You, as a manager, should shield programmers from every useless company event that will disrupt their ability to do their job. Programmers will respect the manager who goes the extra mile to let them do their jobs.
Don’t make their work any harder
Their work is already pretty hard. It doesn’t help, if they have to go through bureaucratic loops and holes to be able to do their job. It does not make any sense that they might not have the access to some integral parts of their job, e.g., source code.
If bureaucratic things and environment restrictions prevent programmers from doing their job properly, their productivity will drop, because they are wasting their time doing stuff they don’t want to do.
Don’t treat them like numbers in a spreadsheet
Programmers are not numbers in a spreadsheet. I have seen too many cases of management by Excel. People are moved around in a spreadsheet to match resources and work load. It just doesn’t work like that. Another mandatory book for managers is The Mythical Man-Month.
First of all, programmers cannot be moved to other projects to make the project finish faster, if the project has been going on for a while already. The bigger problem is that programmers usually don’t like to be moved around like pieces in a chess game. I have seen situations, where management have tried to force moving programmers around without asking them, and the results have been less than flattering for the management.
Don’t ignore their opinions
When programmers open their mouth, they usually have something important to say. Bullshitting is something that is more common to sales people than it is to programmers. Programmers are usually quite smart and ignoring their opinions is a recipe for failure. They know what they are talking about. You, as a manager, have to listen to them and let them know that you will value their opinions and show that their opinions truly matter.
If programmers are not listened to, they will not share their opinions anymore and that is not good for anyone. It’s their job to know the ins and outs of technical issues, and ignoring their knowledge is just stupid management. Most programmers don’t want to work for employees that do not value their opinions.
Don’t ignore their efforts
The difference in productivity between programmers can be huge. Even the same programmer can have huge variance in productivity, if his efforts are ignored for too long. Why should anyone bust their ass off and write more quality software than anyone else, if his efforts are completely ignored? He will get the same salary and perks, even if he only works at 25 percent effort, because he’s still getting more stuff done than the rest of the programmers.
Ignore programmers’ efforts long enough, and you will not have any productive programmers to manage. If your company aims at being mediocre, then it’s fine to ignore their efforts, but if your company actually wants to make a difference, do something to acknowledge the achievements of your programmers.
Don’t ignore their requests
Programmers don’t need many things to do their job. A computer with a monitor or two, a proper keyboard, and a mouse are usually enough. If a programmer wants another monitor, give it to him. If he wants a solid-state drive, you better find a way to fit it into the budget. If he wants a couple of books, you should be happy that your programmer wants to learn new things and every company should support that.
Saving money on the things that are essential for the programmer to do his job is brain dead. Programmers don’t spend a lot company’s money and the last place you want to save is on programmers’ tools. Don’t do it, unless you want to alienate your programmers and watch them go to work for someone with proper budget for hardware and software.
Don’t ever lie to them
Be honest. If you make a mistake, admit it. Programmers respect managers, who will admit their mistakes. They have no respect for managers who make bad decisions and then try to put the blame on the programmers. If you are honest, you will show that you are also a human and programmers can relate to you better, otherwise they think you are drinking some vampire blood in your ivory tower.
If you lie to them and they find it out, they will never respect you or listen to you anymore. You lied to them once, why should they believe you ever again? There is no turning back. Be a man and give your position to someone who actually tells the truth to his employees.
Don’t try to fool them with your limited technical knowledge
Most managers are not as technically gifted as the programmers, ergo they are managers. If you belong to this group, do not try to impress the programmers with your technical skills. Good programmers will smell a fake from miles away. Admit that your technical skills are not on the same level, and let them make the decisions about technical issues. You can give your input, but often it is best to keep your mouth shut, unless you are certain that you are the export on the subject.