Tuesday, December 20, 2011

How do you retain great developers?

There is a difference between an average developer and a great developer. The difference is easy to see. A great developer learns extra on the side by attending conferences, user groups, and has side projects to learn new technologies. Average developers clock out at five and don't touch the computer again until the next morning. Great developers are better than average developers because their knowledge can improve an organization's competitiveness in the marketplace and increase efficiencies for processes which reduce costs.

In my opinion here are the top three motivations of a great developer to make them stay:

1. Challenge with new technology = growth and marketability.
I met a cashier at a local grocery store. I was shocked to find out he was a former COBOL programmer. He told me he was making 25% of what he had made as a developer and that he couldn't find a job. Since then it is always in the back of my mind that I need to not only learn, but get experience in cutting edge technology or I might become a cashier at a grocery store. Everyone knows that five years from now, companies will be asking for five years experience in whatever technology just came out. If your organization or a consulting assignment is stuck with old technology and there is no plan to move to new technology, your good developers will leave. I have seen this over and over again where consultants are placed on an ancient technology assignment and they leave their consulting company. I have seen entire development departments leave because management made a decision that it was too costly to move to a newer technology. I have seen businesses go under because all of their technical knowledge went out the door.

2. Treated Fairly.
Everyone wants to be treated fairly. This can be broken down into three areas:
2a. A developer has the tools necessary to do his job. A PC that is no more than two years old and 8GB of memory, a comfortable chair, a comfortable temperature, two monitors so he can look at requirements on one, and code on the other, and Re-sharper.
2b. Performance reviews that are fair. It is not only about having a cost of living increase. Developers need to feel that they are making a difference. If your review process, is 100 metrics with "meets expectations" wording; it is flawed. The problem with a lot of metrics is that great developers will be reviewed as being average. The problem with "meets expectations" wording is the same. Managers can say things like, well I expected you to do great so you just meet expectations. Great developers will be treated unfairly as average developers.
2c. Benefits that are fair. Companies that take away benefits or salary that have been earned by developers through years of service or position in order to save money to look better to stock holders will see an arterial bleed of developers leaving. If there is comp time, it should be one to one; or more than one to one if it is a holiday.

3. Management that can be trusted.
I love John Maxwell's book on Leadership. Trust is like earning and spending pocket change. Good decisions earn trust for a manager, bad decisions spend trust for a manager. At some point the last bad decision is made, and the manager is out of pocket change. If the manager is not fired, the great developers simply leave the organization.

Are you a developer? What motivates you to stay at a company?

2 comments:

mattmc3 said...

You missed two of the biggest ones for me - the people I work with have to be top notch as well, and the product has to be something I believe in. I left my last job 4 years ago because I got sick of writing software for actuaries and bean counters - far removed from real people with real problems. And, I got sick of being the team's rockstar. That meant that the team's advancement ended with me. While that's great for the ego in the short term, in the long term it meant that Matt would just do it, so there was no fresh blood, no new ideas, and no one to challenge my edicts and force me to keep being better. I was comfortable, so I left which is an interesting phenomenon since your post states the opposite, which is if the developers aren't comfortable they'll leave. I guess either we're never happy, or we're not all the same :)

Greg Finzer said...

Those are two great points Matt. I like to work with people smarter than I am too, or at least with different knowledge so that I can learn from them. I guess I have been lucky because I have yet to work on an application as boring as actuarial tables.

We are saying the same thing about being challenged both professionally and personally. When I said I want to be comfortable; I meant the temperature and the chair. I once worked on an assignment where there were four people in a room the size of a walk in closet. In the summer time, we all sweated and it smelled. It was so bad, we had a can of febreeze in the room. The chair gave me a back ache. There was one restroom for 50 guys. You had to wait in line to go the the restroom. I remember driving to McDonalds a couple times because I couldn't hold it. In the afternoon after lunch, the restroom had so much usage that the entire office smelled.