It is fascinating that the management of a lot of software companies are wondering why their employees are demotivated, quitting all the time and why the quality of their software products is so low although they need ages to develop. In most cases the reason for this is that they are simply treating their developers in a wrong way. I've now worked for a lot of IT companies on a lot of projects of different types, and especially since I am freelancing, I have seen the internals of many companies from different branches. There are very good managers, but there are a lot of bad ones. And most of them don't even have a clue what they are doing wrong. Here is a short list of things I think managers should know about us:
- Programmers are intelligent people. If you treat them like stupid assembly line workers, they will behave like this after some time, and the quality of your software will decline.
- If your developers have ideas how to improve your product, listen to them. It will help to improve your product and make the developer starting to indentify with it, making him want to improve it even further. If you don't like their ideas, tell them why. Simply ignoring such inputs is more than just demotivating for developers.
- Reviews: Regularily sit down with your developers and ask them what they are thinking and what they need. Even ask them about what they are thinking about how you are doing your job. And tell them how and if you are content with their work. Why? If a programmer has the feeling nobody cares about him and his work, he starts not to care for his work as well, which usually results in really bad software.
- If you tell your developers 2 hours before a deadline that this deadline actually exists, you did something wrong. Really. You cannot expect a programmer to implement a totally new huge feature instantly without proper planning. Well, you can. But then you should expect some.. well.. side effects at least.
- Team building: Regularily arrange events outside of the office, so that people get to know each other better. If you are working in a team of people you don't know, your performance is everything other than optimal.
I bet there are some more items I could add on this list, but I think these are the basics.