As a company owner or hiring manager, attracting software developers into your organisation is one challenge. You have to hook them in with a job specification and then sell your company to them in an interview as-well as gauge their technical abilities.
But once a developer starts at your company, you then have to retain them. The jobs market is quite vibrant at the moment and developers have a plentiful choice of companies to go to as a permanent or contractor developers.
On-boarding and training up a new developer is quite a large commitment to a company in terms of time and costs, so how do you keep a developer engaged and wanting to stay so they can be productive and give a return on your investment.
In this short article I want to share some of my thoughts and view on this, but what I would really like to happen is for you to comment on this article and give your opinion either as a developer or as a companies hiring manager.
Has your company done something else to retain staff, if so what and how well did it work? Did they try something and it didn’t work?
Salary and Benefits Package
This goes without saying so I won’t spend long on this. A developer should be paid a fair amount for their skills. If they are underpaid compared to the local market, they will eventually move on. Some companies offer bonuses, some even actually pay them, but in my opinion you shouldn’t base employment choices off of a non-contractual bonus.
Provided the Proper Tools for the Job
If you are paying money for a developer then you should make sure they have all the tools they need to get the job done. This means a decent desktop computer with a couple of decent sized screens, or a good spec laptop that can cope with the development environment and potentially hosting virtual environment.
You should also make sure they have all the software they need, like Visual Studio for .NET developers etc. If it is an industry norm to provide tools like Resharper or Code Rush, then you should provide these tools as they are becoming common place and developers expect them. I still find it amazing that some companies won’t pay for resharper even though the tools will pay back dividends in increased productivity and higher quality code.
It really is a false economy to skimp on tools when you are paying for someone’s time. If they don’t have the best tools for the job, then they won’t be as productive as they should be. Would you expect a mechanic to repair your car and not have a decent box of spanners? Of course you wouldn’t.
Decent Sized Desk
When working for a company, you are going to be spending a lot of your time sat at a desk, so you want it to be a good sized desk that you can make your own. You will want to put books and family photos etc there and make it feel like a small home away from home. I have worked at one company before where I was given a tiny desk where everything felt cramped and very uncomfortable. This does not make you productive or happy.
Clean and Light Working Environment
A work environment should be well lit with natural light if possible and clean. There is nothing worse than working in a dull, untidy office. Sometimes a window seat isn’t possible, but the office lighting should ideally use flicker free natural-light balanced lighting.
Allowed to Wear Headphones
Developers like to block out the world around them and focus. This may be by listening to their favourite music, or it might be listening to music specifically designed for coding too like Carl Franklins latest music album. I have one developer on my team who has brought a new pair of Bose QC-25 noise cancelling headphones and listened to ambient background sounds like coffitivity to focus. And boy do those Bose headphones work well!! I personally like to listen to film soundtracks / scores when I am getting in the zone.
Interesting and Complex Problems to Solve
Developers spend a lot of time at work, so they want to feel interested in the work that you are doing. The best companies from my experience are those that have you working on interesting projects, or products. If you are just spending your time writing CRUD applications then you will get bored pretty quickly, but if you are working on something that feels innovative, complex and has variety, then you will remain engaged and interested in the company.
Pushing Technical Boundaries and not Just Legacy Maintenance
Following on from the previous example, to keep an developer interested will want to be pushing technical boundaries and keep up-to date with modern technologies. It may not be practical or wise to stay on the absolute bleeding edge, but keeping reasonably up-to date will keep a developer interested in what they are doing. What is very demotivating is if developers have to maintain a creaking old legacy system, especially if it is like an old VB6 application that you have on life support. Sometimes you can’t avoid having to keep these running, but try to balance it with new and interesting work, otherwise developers will just get bored and leave.
A Learning Culture
A good developer loves to learn. Technologies moves at such a pace these days that you are forced to learn all the time, and a company should support and embrace this. There are many ways a company can do this. First, a company should allow time for learning and research. This could be an afternoon a week, or a time boxed period each day. A company should also provide training resources for developers to use.
In my experience, residential off site training is quite expensive so doesn’t tend to happen very often, but with companies like Pluralsight who offer very affordable training on demand, there really is no excuse. The benefits a company can get from these sorts of training sites will pay dividends as developers keep their skills up-to date. OK, I am a little biased with Pluralsight as I design courses for them, but there are other alternatives too like Udemy, Linda.com etc.
I also think it is very beneficial to provide access to book libraries like Safari Books Online as they are great learning and research tools. I haven’t bought a technical book in years because I make extensive use of my Safari subscription both to read book, and to use them as a research tool by searching through multiple books.
Easy Access to White Boards
I believe plenty of whiteboards are essential. You can not under-estimate a group of developers trying to solve a complex problem by huddling around a whiteboard. They make brainstorming in a group very effective. You can either get the large boards that screw to the wall or mobile boards on wheels.
Free Tea and Coffee
This goes without saying, but developers generally like their tea and coffee, so why not provide it for free or at-least offer a discounted coffee bar. The company I work for has 2 on-site Starbucks and a Costa Coffee, and these are great social meeting points for developers who can go for a drink to take a break between coding sessions.
This hasn’t been an exhaustive list of ways to engage and retain developers, but is just an initial brain dump. What would be really good is to hear from you all about what you or you companies do to retain developers. What works and also as important, what doesn’t work? If you have a view on this, then please do leave a comment for this post below.