I know in advance that people are going to see this question and think "free Red Bull." But I am actually looking for the best way to tie rewards for developers to the company's long-term goals.

For example, assuming a team is working on the same software product, would it be best to reward each developer based on the condition of the final product? They are a team after all, and this will ensure that they are all working towards the common goal of getting the product out. However, this ignores the fact that some developers are stronger than others and some work harder than others.

In your experience, what is the best way to incentivize a team of developers?

**UPDATE

I really appreciate the strong response I've received to this questions. I thought to ask if after watching the movie Inside Job, which is about the causes of the recent economic crisis. One of the major factors the movie cites is that there is a poor incentive system on Wall St. Investors are rewarded for making money in the short term, even if their actions can be disastrous down the road.

I think this same concept applies well to developers. There is a short term gain in getting a product out as fast possible, but there can be major long term headaches if that product is buggy or if it doesn't port well to other environments.

Ideally, any company in any industry should want an incentive system that ensures the long term stability of their products.

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.
If this question can be reworded to fit the rules in the help center, please edit the question.

12

Read the book Drive by Daniel Pink to get a good overview about how such "rewards" destroy motivation.
–
edA-qa mort-ora-yJun 27 '11 at 14:58

8

Much of Daniel Pink's writings should be taken with a grain of salt.
–
webbiedaveJun 27 '11 at 15:54

1

Different people are motivated by different things. Saying "I'm really pleased with what you have put in this year" may be more motivational than "Here's a 10 pound amazon voucher" Of course you can do both!
–
Matt WilkoJun 27 '11 at 16:28

18 Answers
18

I'm afraid that I'm going to have to disagree with many of the answers to this question, as none of them have mentioned the difference between intrinsic and extrinsic motivation.

From the Wikipedia page:

Intrinsic motivation refers to motivation that is driven by an interest or enjoyment in the task itself, and exists within the individual rather than relying on any external pressure.

Extrinsic motivation comes from outside of the individual. Common extrinsic motivations are rewards like money and grades, coercion and threat of punishment. Competition is in general extrinsic because it encourages the performer to win and beat others, not to enjoy the intrinsic rewards of the activity. A crowd cheering on the individual and trophies are also extrinsic incentives.

According to research, intrinsic motivators are much more powerful than extrinsic motivators:

At lower levels of Maslow's hierarchy of needs, such as physiological needs, money is a motivator, however it tends to have a motivating effect on staff that lasts only for a short period (in accordance with Herzberg's two-factor model of motivation).

At higher levels of the hierarchy, praise, respect, recognition, empowerment and a sense of belonging are far more powerful motivators than money

Now while there is little evidence of Maslow's hierarchy itself, it is a useful hook when describing intrinsic verses extinsic motivators.

The surprising thing that comes out of the research though, is that providing extrinsic motivators can actually reduce or remove the intrinsic motivators:

Social psychological research has indicated that extrinsic rewards can lead to overjustification and a subsequent reduction in intrinsic motivation. In one study demonstrating this effect, children who expected to be (and were) rewarded with a ribbon and a gold star for drawing pictures spent less time playing with the drawing materials in subsequent observations than children who were assigned to an unexpected reward condition and to children who received no extrinsic reward.

In general it is far more effective to remove barriers intrinsic motivation than it is to try an increase extrinsic motivators. This was the essence of many elements of both DeMarco & Lister's Peopleware and Fred Brooks' The Mythical Man-Month, which should be considered essential reading for any manager of software engineers.

@IPX nothing is going to be an incentive to work at a crappy company where deathmarch is the norm. Management is the problem not the employee's attitudes.
–
Jarrod RobersonJun 27 '11 at 15:05

2

@IPX Ares: lol - my list was a conjunction, not a disjunction. It's not high salary or milestone bonuses, it's high salary and milestone bonuses... and equity, etc. Start-ups have a high probability of failure, and a poor track record of rewarding the people that did the real work (c.f. Skype's equity "clawback" policy + mass firings before buyout last week). But by all means continuously demonstrate that you value your developers!
–
Steven A. LoweJun 27 '11 at 15:09

1

My brother is given a bonus in the form of company stock. He's no programmer but it's clear incentive to work harder. More stock you own, naturally the more you're going to want the company to succeed. Of course you could sell it, but it's a little anticlimactic to do so after having being told that you're appreciated by the company.
–
NeilJun 27 '11 at 15:46

3

What we think we want might not be what actually motives us. For years I bemoaned the fact that I'd never been paid for overtime. Then I landed a job where I'm permitted flexible working hours and I realised that my personal time was actually more valuable to me than it was to my company. Now I don't mind working long hours to meet a deadline, since I know I'm expected to take those hours back in under-time later.
–
Mark BoothJun 27 '11 at 17:34

I don't need to be motivated to do my job. It is very possible to demotivate people though through poor management.

What I do need is an expectation that is possible to meet. Deadlines that we are going to miss even before we start are demotivating, you know you'll get the blame (not the people who set the impossible deadline) when you don't meet them so why try hard?

The expectation that I will give up all of my personal time to meet an arbitrary deadline is another demotivator. Especially when it is the casual suggestion of "Are you going to do this Saturday or Sunday?" Maybe I wasn't planning to work this weekend and maybe it is demotivating to expect I will especially at the last minute. Project planning should be calculated from no more that 6 hours a day 5 days a week. Why 6 and not 8? You have to account for annual leave, jury duty, other duties (such as answering questions about a previous project), manadatory meetings, etc. Plannig for me to work 12 hourdays and weekends is not sustainable over the long term and even inteh short term causes resentment and demotivation (especially if the people doing the planning leave on time).

Lying to me is another big demotivator. You'll get caught and there are not enough Amazon gift certificates or bonuses to make me trust you again.

Not supporting your people up the chain is a big demotivator. If we tell you it will take 100 hours to do, I don't want to get the task assigned to me a week later with only 20 hours unless the scope has been reduced. I expect you to fight for the hours we need to do the job correctly. If the client is upset from something that is not my fault, don't throw me under the bus because it's the easiest thing to do.

Giving managers big rewards while the people doing the work is another demotivator. Again why should I work weekends and nights so that you can get a big bonus for meeting the unrealistic deadline when I'm not going to get one.

Lack of communication and wishful thing is another demotivator. Yes sometimes what you have to tell isn't good news - not telling me (or the client) because it might get me upset is not a good thing. I'm going to be more upset when I find out later. Bad things don't go away just because you are hoping they will. The client doesn't want to hear at 8 am that the 9 am launch isn't going to happen (which we told you a month ago we weren't going to meet) and that we need three more weeks. I don't want to hear from the rumor mill that pay raises are frozen. I expect to hear that from you directly.

+1 I would much rather not be demotivated than incentivised.
–
ChadJun 27 '11 at 16:46

3

Thanks HLGEM, this personal perspective helps to underline the argument in my answer. Your de-motivating factors appear to mostly relate to either barriers to intrinsic motivation or extrinsic motivators which actually turn out to be anti-motivators. I was once told by a senior manager, during a salary review "If you aren't doing at least 15% overtime, you're not pulling your weight". I didn't work a minute more over-time until that 'manager' was gone and I wasn't the only one who was happy to see him go.
–
Mark BoothJun 27 '11 at 16:56

1

Good answer but you've almost completely focused on demotivators. What about motivators?
–
TrojanNameJun 27 '11 at 17:23

@Aaronaught, it does answer the question. It is saying the OP is asking the wrong question. People are not motivated by Amazon Gift cards and Free sodas. Managers looking for ways to incentivize have missed the point that it is their practices that cause employees to appear to need motivation. They don't want to make the hard changes so they ask for easy superficial things to do. And if these things were so self-evident to managers, why I have I personally seen all of them multiple tiems in multiple industries?
–
HLGEMJun 27 '11 at 18:16

Spot bonuses work great (even a $10-20 gift card to Amazon was a pretty good feeling on the last project I was on). Overall praise works well, but letting them come in later on a Monday or leave early on a Friday if they really put in the work, buying lunch is also a great idea.

For myself and my colleagues, any indication that our hard work is being appreciated is usually a great motivator.

One colleague of mine was telling me about a previous project that was a nightmare, but the team pulled together and got it done. The next day they were all scheduled for a follow-up meeting. When they got there, they were all handed mall gift certificates for $200 and had a bus waiting for them to take them to the mall with the rest of the day off for them to shop and socialize.

I find this de-humanising -> throw a few crumbs to the developer(s) who actually make the product, while the Exec's and CEO enjoy fat bonuses...sheesh what a world we live in... :(
–
DarknightJun 27 '11 at 14:08

2

@Darknight: Really it depends on the company. I have worked in companies where bonuses (calculated as a certain percent of salary that is based on performance from their most recent performance review) are given to all employees, based on the company's overall performance for the year. Within specific departments, they couldn't give individual/team-specific bonuses so we usually had things like team pizza lunches, which most people actually really really enjoyed.
–
FrustratedWithFormsDesignerJun 27 '11 at 14:26

1

@Frustrated: We have that here where I work too. What's the purpose of a "bonus" if everybody gets it? Pfft... I'm glad I'm in my notice period.
–
fretjeJun 27 '11 at 14:56

3

Spot bonuses are OK for rewarding a short term success or contribution. But then they become the expected. If for a month you are recieving 2 spot bonuses a week and then a month later you are working even harder(In your opinion) but getting no bonus then it works in reverse. Maybe you are not earning it maybe the carrot has just been taken away.. it doesnt really matter.
–
ChadJun 27 '11 at 16:53

I've found that the occasional night out for a meal and few drinks with the team, perhaps at the end of an iteration or release, is not only a great incentive but team builder to boot. A team that socialises together, binds together.

Good answer, and I would even expand to say all people of the project, not say "just the developers". It is amazing how much nicer emails get and overall meeting/morale when we have all hung outside of a work environment and realized that we are all not that different.
–
RiddlerDevJun 27 '11 at 14:51

13

What if you got a non drinker in the group? Or people who have to pick up children at school? A religious person with dietary restrictions? And while someone might enjoy working with a group of people, it doesn't mean that the same person will enjoy socializing with this same group. Also company activities should be on company time, in my humble opinion.
–
VitorJun 27 '11 at 15:31

1

@Vitor: being taken out for a long lunch on a work day is much more pleasant that being taken out for dinner after work, it's true!
–
Carson63000Jun 28 '11 at 1:17

1

+1. We go to the pub every friday at 3 so it's still in work hours.
–
rmxJun 28 '11 at 10:53

A lot of this ties back to the problems with measuring individual performance which is why I'd tend to look to do things on a team wide basis, tied to project milestones.

A few thoughts:

Goals should be things the team understands and has complete control over. Your strategic aim might be to reduce cost x by 10% but you need to turn that into project milestones the team can understand, influence and hit.

Where possible they should be (to use the horrible phrase) - SMART - specific, measurable, attainable, realistic and timebound. This answer suggests that SMART goals don't work for programmers but I think for relatively short periods (see below) it is possible so long as the rest of the points here are followed.

I always feel that goals should be things that can be achieved by a team working regular hours so long as they're properly focused. It shouldn't be a way of getting cheap overtime. That said, they shouldn't be "gimmies" - things so easy they'll always be hit and there should never be an expectation that it's something that will be given out regardless.

Milestones shouldn't be too far apart, a couple of months apart and when one is hit or missed an new one should be set immediately. You don't want people to have extended periods where they know that something has gone wrong and that a deadline will be missed so there's no point in trying.

If situations change which make deadlines / goals impossible to hit, you should adjust them. The team shouldn't be punished for things outside it's control.

If you want people to act as a team, reward them as a team. If someone is struggling the incentive should be for others to help them rather than to leave them to struggle.

If you can make the reward something that helps build the team - a lunch out, night out, whatever then all the better. Just make sure it's something everyone can enjoy - don't do a big boozy thing if some of the team don't drink.

The reward should be fairly distributed across the team - if it's a night out then that's easy, if it's financial then either make it an absolute amount per person or pro-rata it based on salary but it should be fair.

If you want to do individual rewards too then I'd tie a level of democracy into them - have the team nominate or vote for them and make them smaller (but nice to have). Someone mentioned Amazon vouchers which seems like a reasonable idea - $50 or so for one or two people nominated by their peers as having gone above and beyond.

The best financial incentive scheme I've heard of was when a company came around to build a conservatory on the back of my house. The guy explained that the builders are allocated a pot of money for their annual bonus (related to the annual sales), but any time they had to return to a site to fix a problem the cost of this came out of their bonus pot.

I like this because there was collective responsibility for the quality of work that was produced.

@Matt - if things are that bad in the team, then the size of the bonus pot are the least of your worries! If you don't have that base quality standard then any incentive plan is doomed.
–
KevinJun 27 '11 at 16:37

1

@Matt - Note that education is an excellent way to remove barriers to intrinsic motivation. If someone is doing a bad job, they often know it, and that in itself is a de-motivator. Teach them how to do it well and they start doing a better job, and they are motivated to do even better. It is the difference between a death spiral downwards and positive self-reinforcement.
–
Mark BoothJun 27 '11 at 17:43

1

When I first read this answer, I thought were saying that your employer paid for you to have a conservatory built, as a bonus. :-)
–
Carson63000Jun 28 '11 at 1:18

2

@Mark : I have found the opposite to be true. When someone is doing a bad job, almost without exception they are the only person who doesn't know it. In fact, they frequently think of themselves as one of the top performers.
–
DunkJun 28 '11 at 19:58

Respect

The number one reward, which will keep me coming back again and again, is to respect my skills and knowledge by asking for my input on the future, and following through on that.

Contrariwise, nothing is more demotivating than to say "Hey, there's something important here," be ignored, then have disaster occur that would have been avoided if someone with authority had paid attention.

We are professional programmers -- that means we know the most about programming; You hire us for our expertise. Why, then, do so many managers and customers feel the need to overrule our input?

Only the developers themselves know WHY they come to work, find out the why and you find out what you want to know.

GENERALLY

Pay them fairly and set reasonable expectations, that should be incentive enough to do their jobs. The reward for meeting long term goals is already there, it is called their PAYCHECK. If you have incentivize your team to do what they are being paid to do, something more fundamental is wrong with the organization and management of the project(s).

If you want to reward the team then do it for consistency and accomplishing tasks as a team instead of individual contributors.

REWARDS SYSTEM

Things like this only work out when the goals are short term and the rewards are in scale with the the goal, and they are not some kind of carrot to do what they are supposed to be doing anyway.

The saying Aim Small Miss Small is very appropriate here.

When the goal is small, then if it is missed it will only be missed by a small amount.

Until the team can consistently hit small goals with little or no misses, don't put any long term rewards out there. Most teams will know that they will not make 6 month goals and it will be impossible to incentivize the entire team to try and make a goal that no one thinks is possible, at least not with any kind of quality.

You might get one or two people that don't know any better that will try to be the hero's and make a deadline no matter what the personal costs or quality of the result. That is bad for the company, bad for team moral, and bad for personal moral in so many ways, it will destroy any team building or level of quality that already exists.

Long term goals always turn into some kind of death march, nobody cares about the reward at the end of a death march, if all they are going to do is start another death march all over again.

That is why in SCRUM you have 1 - 2 week Sprints. Having small rewards for making short term goals that are achievable are easier and more effective.

FOR EXAMPLE

Occasionally buying lunch for the team when they meet 100% of the Sprint goals and are able to demo every Story successfully at the end of the Sprint, is goal everyone should be able to agree is attainable.

But only do this as a reward after the fact, don't tell them at the beginning of task, it won't do anything positive for the team and the company, and will insult the most valuable members, because it is implying they won't meet the goal without the promise of some childish treat.

Don't ever try think you can outsmart them, because you can't, you aren't going to trick someone into doing tons of unpaid overtime unless they want to, they will eventually leave because of it

bringing in lunch / going out to lunch once a week, at least, is good, one job used to do this and it was cool, something about programming makes you hungry :)

communicate everything well and practice good management, unless the job is for support / bug fixes, don't just bring in something new everyday and throw it at them on top of what they're already working on, this is a great way to interrupt their concentration and piss them off, and, if done too much, get them to quit

if a startup / small company, don't "promise" things that will happen soon (such as 2 months), such as pay raise, stock options, etc, either do it when you bring it up or don't talk about it, programmers aren't stupid and if they can "get a pay raise in 2 months" or get one now by going somewhere else, guess what the choice will often be?

speaking to the last point, if a company is small, keep in mind the programmer can most likely leave for a bigger, more successful company, your company's financial shortcomings, etc aren't their problem so minimize thinking about things relating to this negatively, if everything that comes up eventually boils down to "yeah that'd be nice if we were a bigger shop / had more clients, etc" then the programmer may soon think why don't I just go to a company that does have that and stop dealing with the BS of working for a smaller company

Spot bonuses may be good for short term, but for long term, they won't be as effective. I had friends at a company who had them working LONG hours for months on end. They gave spot bonuses quite often - one was even an iPod to everyone. They even handed out Fridays off occasionally. But, after the project was over, almost everyone left because of burnout.

I can tell you some great de-motivators, but in the spirit of the question for programmers who are mostly internally motivated:

Individual public recognition, a name mention as part of a team update, a word spoken in passing where others can hear, tie in the person's name with the team identity.

Give the team scheduling and progress information as far in advance as you can, they must know that their efforts are contributing to a well thought out plan with near term and long range goals. The feeling of stability and being in control removes a lot of day today worry.

Team plaques or awards displayed in their office area.

Personal attention, short meetings to discuss an individual's work in specific detail to show that you are watching and appreciate their skill in getting the job done.

If there's news that requires extra or sudden swings in work required give solid reasons why and clue the team in on what you're doing to stop that from happening in the future.

Yes, these require Work from management and yes, they are mostly aimed at avoiding demotivating instead of trying to force people to work with toys and token gifts. People, in my experience, WANT to work and your job as manager is go clear the road so that they can move forwards without obstacle. People on the team who do NOT want to work, you can't help them no matter how much money you throw at them.

I find it to be very accurate and it describes society problems quite well.
A lot of softwares are just written to compete with other softwares, or just for the sole money purpose.
I don't know what software they are writing, but here is my point of view about software programming: I think software is great because it can ease problems use to encounter, but for this to happen in reality, you must have 2 things:

a good problem

a relevant, efficient solution

I really think your project is irrelevant if you have one of those 2 things wrong, and believe me, non-programmer are bad at this: if they don't know the constraints or what techs already exists, don't even bet on the company's success.

I know I sound cynical, but honestly, I prefer to lift cardboard boxes or drive mail or work in a construction job, rather than sit all day in front of a computer for a project I don't give a damn: it just doesn't motivate me, and I'll get bored.

I won't say in front of other people because I have strong opinions, but sincerely, I'm so frustrated to write code for a stupid or irrelevant project and be criticized for my code's style or how I solve problems. The world is already so full of existing software, but there is so many things left to invent yet...

For some, they have a passion to build great software. How to motivate them is not relevant, you just have to provide the opportunity to build great software, and get out of the way.

For others, software developer pays well, so they'll do it. It doesn't really matter what motivation you try, they'll do what they have to. I've found with this group, you can struggle to motivate them, or struggle to ensure there are no de-motivators, but in the end, its just not a passion for them, and these efforts may affect short term, but you'll keep banging your head for the next round.

Nearly all the answers here concentrate on rewards. Instead of thinking about how you can reward the staff for completing the job perhaps concentrate more on what you can do to make the project more enjoyable to work on. That means things like taking the pressure-off where you can, listening to staff concerns, incorporating ideas and suggestions, having regular update meetings to allow everyone to communicate together, making sure the staff have the tools they need to do their job (ie. software, hardware, environment).

Long term goals deserve decent bonuses. Nothing says we value you like money. Nothing provides better incentive that knowing that we recognize the great work that you do like money. Pizza, donuts, bagels etc are great for moral builders. And honestly I dont care that my work got the slacker the same bonus. I only care that you recognized that we worked hard and got out a good product and are willing to reward it. A good long term bonus should be between 5-10% of pay per year for the project.

One thing you can do to help incentivise the bonus is regular reviews and goals that build towards the bonus. So I can get my maximum bonus by achieving all of my goals but the total bonus is determined by the success and quality of the product at release.

Make sure everyone knows what is expected of them ahead of time. No surprises here unless it is a good surprise: take everyone out to dinner as a way of saying thanks.

I would say just ask them, but people don't always know what they want. You could come up with a variety of similar rewards and allow them to choose: A day off, gift card, free monitor cleaning for one year, etc.

Be transparent. Someone will always try to 'game' any system, but in a strong group, this type of behavior can get you shunned.

Better developers usually hold a higher position with higher pay. They still have to do their job which is held at a higher standards.

Don't make promises you can't keep.

Rewards should be in the context of the company's performance if possible. Everyone likes to claim that salary is not a strong incentive. If I worked for a company that made a lot of money and did not share it with employees, I would think less of them and their perception of my work throught lack of appreciation. It's all relative.