In 2014, I'm switching jobs. In the course of this decision, I was asked by a former colleague, what motivated me in a position, as I've had quite a few over the years. Here's my top 5 list, starting by debunking a pretty big myth.
Money isn't everything
One of the most common misunderstandings of developers I've met over the years, is that we are in an industry that pays high salaries, and that's the reason for us being in the game. Furthermore, I've met a lot of middle-managers, who think developers are overpaid and spoiled "nerds" with no life.
During my years as a developer, I've met 5% that work as developers for the money, and 100% of those were poor developers, with basic skills and no professional integrity. The reason is, basically, that learning development purely for the money is a bad investment. Most developers with a high skillset will have invested years of sparetime into learning and perfecting their craft, years with little or no pay for the most part.
But then, what motivates developers?
1. Success and "winning" spirit
Most developers are competitive, proud people, who try to deliver the best possible result.
Feeling like a part of a team, with a clear, common goal is probably the most motivating thing for any developer. Convince them that everyone is determined on reaching the same goals, and show them what their role is in the big picture, and most of the time, they will be the ones working like crazy, while others complain about late hours.
On the other hand - being forced into writing poor, unmaintainable code, is one of the worst things you can do to a developer who loves his craft. You wouldn't ask a construction worker to build your house using the worst possible materials, while being blindfolded.
If you have limited time, cut down on features, not on "doing things the right way". Delivering a successful product in a developers mind is more than just "launching on time" - if the technical platform is not up to the standards of the developer, they will see it as a failure, on time or not.
2. Making a difference
Developers are commonly fueled by the desire to change the world. Sometimes by automating stupid, human behaviour that waste precious lives, but most commonly by the desire to make everyones lives a bit easier and pleasant.
Most of the time, a developer will choose a position based on the reach of his work: If it affects millions of people, or helps someone, they will choose it over a position that pays a bit more. At the end of the day, developers are pleasers and problemsolvers.
3. Excellent management
No micro-management. The best way to manage a team of software developers, is to present a challenge, encourage independent thinking and shield the team from any disturbances, while not getting in the way of the development process.
The worst mistake made as a manager, is probably to demean the work done by developers. Don't tell them their estimates are "way off", unless you're a developer yourself, and know how a feature should be implemented. Instead, encourage them by explaining the impact of the feature, and the difference it will make for the company, not telling them it "should be easy to implement".
4. Being heard
Developers are on the frontline, when it comes to the services and systems running the company - and they're usually the first to know when something is not working. If a system crashes after a developer pointed out the flaws or shortcomings of the platform, over a period of time, he will take it personally if noone listened to the warnings.
The most basic rule - if a developer speaks, you should listen. If more developers agree, you should act.
5. Learning and being challenged
Chances are if you're hiring a developer that have 10 years of professional experience, you can count on them having at least 2-3 additional years of sparetime invested in their knowledge, and they did that for a reason.
As developers, the world we work in keep changing. Developers need to stay up-to-date, and most will do that on their own, if the challenges of the job require it. Just don't expect a developer to stay in a position, if the tasks are the same as they were last year.
Are you a developer? Take a look at the list, and try to figure out which points are present in your current job, and which aren't. From my own world, points #1, #2 and #5 are some of the main reasons I'm looking forward to my new job. Are you pleased with your own result?
Are you a manager? Try asking the developers how they feel about the points in this post. Are they satisfied with all points, or are some lacking?