I’ve worked with many companies in the Washington, D.C. metropolitan area, and there’s a huge retention problem. Here are some of my thoughts on how to retain top talent in the software industry in general. It might be relevant to note that this is from a millennial’s (Generation Y) perspective.
1. Reward top talent according to what they want. Ask them individually how they want to be rewarded, and reward them. Examples are recognition, financial rewards, promotions, and paid time off. If you can’t do it, at least show some effort or progress.
2. Ask about their desired career path and guide them. There are too many cases where management want to keep employees where they are most efficient. Efficiency is good for the tasks, but it’s also boring for the employees. You could also be missing out on some amazing potential. Guide them towards their goal by building the skills they need.
3. Rotate interesting tasks across developers. Usually a project comes with many redundant, boring tasks. Do not let only one developer take all the interesting tasks, it rarely does any good. If only one developer can tackle such tasks, this is a resource management issue, let other developers shadow or pair with the developer to tackle difficult, interest problems together to fix this problem.
4. Encourage developers to set up one or two meetings a day outside of regular lunch hours to discuss the larger technical scope of the project. Maybe even have developers present their work. Doing such would allow developers to keep the big technical goals in mind and it also gets the developers out of their seat increasing physical activity. Surely this would also improve code quality. In my world, I would have something like recess or gym class mid-day to refresh the mind.
5. Keep hours flexible, but set core hours. Developers are more efficient at different times of the day with breaks. Some days the brain just doesn’t work, and some days it does wonders. Core hours are not meant to be 7 hours of the day, it should be at most 6 hours but preferably around 5 hours.
6. Give developers a sense of ownership of their code. If a developer works on the full feature set from top to bottom, they will gain a sense of ownership. Adding new features and refactoring will be a breeze, and developers could have some pride in their code. This usually improves efficiency too.
7. Don’t force or encourage developers to take short cuts. There’s a quick way, and there’s the right way. In my opinion, usually the right way doesn’t take much longer than the quick way. There’s no reason to take short cuts when there are so many negatives including hurting morale.
8. Let the bad developers go. Sometimes there are bad developers. Not just bad in terms of code quality, but hazardous to the culture and office environment. Recognize the problem early, and don’t make any extra effort to retain negative talent.
This covers most of the topics I wanted to write about, but every situation is different. Open communication with the employees is the easiest way to find and resolve issues. I know there are a ton of recruiters hunting for software developers, but employees would rather stay loyal.