A good article here on how to keep your software developers happy.
What are the nine things?
- Being Set Up to Succeed - Have Realistic Deadlines
The first thing to go when time is tight is quality and maintainability. Being forced to build crap is one of the worst things you can do to a craftsman. Delivering a project on-time but knowing it's a piece of crap feels a heck of a lot like failure to someone who takes pride in what they build.
- Having Excellent Management - Managers That Understand What You're Doing
This means no micro-managing, the encouragement of independent thinking, knowing what it takes to build quality software, quick decision making, and a willingness to take a bullet for the team when product development tries to shorten the schedule.
- Learning New Things - Developers Want to Stay Abreast of Current Technologies
A recent article cites a study by two University of Columbia researchers suggesting that workers would be happy to forgo as much as a 20% raise if it meant a job with more variety or one that required more skill.
- Exercising Creativity and Solving the Right Kind of Problems - Developers Love Challenges That Teach New Skills
Faced with the right type of challenge many developers will not stop until it's fixed, especially if it requires a particularly creative solution. Faced with the wrong type of challenge and they're back on instant messenger describing the toast.
- Having A Voice - Developers Know What's Going On in the Project Better than Anyone. Listen to Them
When a developer speaks, someone should listen. When several developers are saying the same thing, someone should listen and act...quickly
- Being Recognized for Hard Work - 'Nuff Said
- Building Something that Matters - Developers Want to Know that What They're Doing is Important
Even though we're not medics in Bosnia or food carriers in Sudan, most people want to feel like we're somehow doing our part to make the world a better place, both technologically and socially.
- Building Software without an Act of Congress - Enable Developers to Make Decisions
- Having Few Legacy Constraints - Developers Hate Working with Old, Crappy, Code
Too many legacy constraints kill creativity, require an act of congress to modify, and generally sucks the fun out of building software
I've said it before, but read the whole thing. My synopsis doesn't do this article justice. If you're a developer, print it out and "accidentally" leave it where your manager will find it.