One of the most important part of developer satisfaction is, in my opinion, the development tools and the environment. It’s those exact things we, as developers, spend most of our time with. With the right tools developers will be happier and it will ultimately save money for the company. It might even be thing that developer appreciates in the company and does not want to change to another.
Even most of the things needed to achieve good enough level of tools for your developers costs money, it is quite easy to calculate the time the investment pays itself back — it’s a matter of months. Or even weeks.
The most important thing developer needs. Each developer, no matter what kind of software you are doing, should have powerful enough machine to do the work. Also people have different needs what it comes to hardware and accessories: some might want 3 displays, some want to use wheel mouse instead the normal rat and keyboard combination, some might even want a large mousepad and one of those horribly sounding gaming keyboards. Hardware and accessories are not that expensive these days so this might be the cheapest option to start updating your tool set.
Good headphones is also a great way to rise the spirit. Providing good, noice-cancelling headphones for the developers (especially in open offices) can make a huge difference in productivity. Which also means saving of money and time.
While the hardware is a nice thing, you should also think about the software you are using and providing for developers. Starting from the operating system you should think what is the best option and recommend that for your developers. Of course you do not want to be total tyrant and force everyone to use the exact same OS and tools but good recommendations and pre-configured images get you very far.
It does not make much sense to develop library for a Linux on Windows or other way around. Try to think what is your target platform and come up with the close as possible setup for the local development environment. Different environments might have different kinds of restrictions and bugs so seeing the problems as soon as possible in the development cycle can save even more money.
Software can be costly. Especially some tools that are specializing to do very specific task very well can have huge license fees. Also here you should really listen to developers and their needs. There might be some open-source and/or free tools that they like to use so why not let them do that? Using of software should not be limited as long as it’s legal and done by the rules.
This might be not the case for many projects, but having the actual target hardware to run your software on is very important for the project success. Target hardware can be very costly but using it can prevent the company from humiliation when the first tests in the target start. It allows developers to debug and benchmark their software with the exact hardware it’s supposed to be run at. Especially performance issues are often only seen when the software is actually running on the actual target.
Automated testing on target hardware is also very good idea but can cost a lot of money. Having some test farm with tens, or even hundreds, target hardwares running tests for the software can produce bugs you might not even thought of. And all this before the software hits the stores. Developers and the company is again a bit merrier.
One of the things many developers spend their time on is building the software (depending of course the size of the project and used language). Of course having good enough hardware for the job is already a start but this can be taken even further. There are tools you can use to speed up your build time locally or by distributing building to multiple machines. Such tools (for example ccache, icecc, distcc and bazel) can save several hours per week for a single developer. Multiplying this number with amount of developers you have.. Well, think about that.
If tools like this are combined with some powerful servers in the same build pool, it can have a massive effect on development speed. Servers cost money but so does people spinning their thumbs and waiting for the builds to finish.
Scripts and dependency managers
To make life easier, developers should really be able to do some scripting. Spending few hours to make a script that helps you build your software and it’s dependencies correctly, or setting up the development environment for new-comers can, if used by many, save hundreds of working hours. If you want to understand this, you should go and observe how many hours a new developer spends time setting up the environment without any setup scripts. Then multiply that by the number of employees you have hired — it can total a huge amount of hours.
After all it’s all about people. Use time to listen developers’ wishes and try to make them happen. Happier developers means more productivity and that means savings. Investing some money in the tools really can pay off, even on short-term, so please at least consider doing it.