Easily one of the biggest issues that causes developers to look elsewhere is probably the first issue which causes managers to cringe. ThatÂ’s right, most developers are just like everybody else in that they too exclaim the immortal words of Jerry Maguire, "Show me the money!"
It's a good idea to ensure that all development team members are paid a competitive rate, but the key is to identify a small portion of your development staff as people who you decide to invest in long term, and to take care of them in a way that will make them never want to leave for monetary reasons.
Any kind of additional "perk" goes a long way towards making people happy. These can involve non-liquid monetary assets such as stock options as well as perks like telecommuting, free lunches/snacks/sodas, good hardware, other gadgets (cell phones, PDAs) and so forth.
While these kinds of incentives can go a long way towards pleasing employees, nothing can harm morale faster than broken promises.
If a good developer leaves the company for a reason that doesn't directly involve money, it is often some type of morale problem - one that may be more widespread than you think. If people aren't happy where they work, they will often leave for equal - or even less - pay elsewhere.
Moving developers to new projects can be difficult because as developers build up domain and project knowledge, your first instinct is to keep them on that project and hire new developers to work on new projects. While that sounds like a good idea, it may or may not be the best solution for your developers and/or your company. What often happens is employers will keep proven developers on existing projects and hire unproven ones to spearhead new projects. While this may make sense from a business perspective in the short term, in the longer term - after the unproven new hire fails to develop a good product and the proven developer quits from boredom - it may not turn out so well.
The bottom line here is to identify your good developers, the ones that you want to have around for a long time, and find out where they want to be and what they want to be doing.
Burnout is a real issue and something that faces nearly every developer at some time in their career.
A team that has fun together is much more likely to work together well, enjoy working with each other and help each other. Job satisfaction is increased when there is something other than work to look forward to as well. The mental drain of a tough day of debugging can severely be lightened by a few minutes of entertainment.
Welcome to my tech blog. My primary focus is development but I did spend a few years recently on the networking side. You will find that most of the items relate to Microsoft based technology. It's not that I have anything against Java, Linux, etc. It's just not what I do. If life were Star Wars, I would be a Storm Trooper.