62 comments

[ 9.1 ms ] story [ 134 ms ] thread
You're making the mistake of thinking that all programmers respond to the same forms of leadership.

You're also making the mistake of assuming that programmers are inherently different to other humans.

To summarize: the point is not that carrot and stick doesn't work for programmers.

The point is that no single approach can work for all people.

> Good programmers are probably less likely to be randomly looking for work. They analyze company culture and career opportunities first before joining any organization.

Depends. Not all good programmers know how important this is, so you can find pearls hidden deep in the mud. For some time at least.

>you can find pearls hidden deep in the mud. For some time at least.

They won't necessarily stay for long though.

That's what Drdrdrq was saying with the line "For some time at least."
True. But I know of couple of examples where they found enough incentive to stay for years - be it good pay (even programmers are humans), pet projects, sense of loyalty, fear of change or any combination of those.
I have a space alien.

Obviously you are a retard nigger.

God says... Deanna's sail jackasses colonies bulldogging heckler's blank Soweto's trotters sleazily faceting Anselmo blustering bladders Rossetti's aneurysm hymens decanter's reenactments pilgrim voter Fosse's suppurating traction's Deidre's happiest ravine's tremor's brasses disappointing clasped Mancini

(comment deleted)
Carrot and stick does work. Dan's talk has more to do with extrinsic vs intrinsic motivation, but you can quite easily create a carrot and stick motivation by creating circumstances that allow someone to accomplish or chase after goals they're intrinsically motivated by.

If you're working at a company where the incentives are just cash bonuses based on awful metrics, then yeah that's an anti-pattern. But the basics of human instinct are the same across the broader set. Suggesting developers are unicorns is a little off-base.

Yeah. 100%. I love programming, but carrot and stick works big time on me. I'm staying at my current company despite being underpaid because:

- I work remotely - I get 1 workday per week to work on my hobby projects - I get 8 weeks paternity - I get 5 weeks paid vacation - I have great insurance through them - I have amazing coworkers, including every owner/boss/manager - It's a lifestyle company from top to bottom

I have friends making 1.5x my current salary, but I'm not switching to work for their companies because the carrots at my current gig outweigh a hefty outlay of $$$.

Because we are not donkeys?

Let's hire some smart people, but then we'll trick them into a,b and c. They'll never suspect it.

The carrot is a salary and the stick is getting fired. I'd say it's exactly what works for most programmers.
wow, please can I come and work for you
I'm not perscribing a way to treat devs just pointing out the obvious situation that most devs accept as a given.
it's a bluff. call it and watch the fun that ensues
Most employees everywhere accept it as a given, as it's the definition of being an employee. You get paid for working for the employer, and that relationship could end arbitrarily. It's not complicated or really subject to debate.

Even when you're your own boss, the same dynamic is there, only the carrot is profit and the stick is failure.

What programmers have if anything, is the luxury of relative indifference to the ending of an employment relationship, since a new one is relatively easy to find. So maybe the "stick" is less potent. (But that doesn't mean the carrot is.)

Yes, but most programmers leave money on the table as the negotiators say. Good programmers have a lot of leverage and to be scared of losing your job is unnecessary. Bad managers encourage the programmers to be scared because it works and it makes their life easier and they won't negotiate because it opens up the gates (in their mind) and maybe they don't know how (my experience). Like good programmers, good managers are in short supply, really good any skill is in short supply.

In my experience ultimatums are a sign of a bad negotiator, and work or we'll sack you is an ultimatum, unfortunately it is the status quo. so my recommendation to programmers instead of reading books on frameworks read a few negotiating books and start trying it. It's quite enjoyable once you start, playing poker is a good way to start I found, you learn how to bluff. Of course if you really can't afford to lose your job then probably best to leave things alone.

> What programmers have if anything, is the luxury of relative indifference to the ending of an employment relationship, since a new one is relatively easy to find.

Only if you're in SV and you've got 5 companies across the street looking for you.

This is untrue for the other 99.99% of the surface of the planet.

This has been my experience at every software job, ever. The threat doesn't need to be verbalized. Consider yourself lucky if you experience otherwise.
> Good programmers just don’t work for money

I disagree with this view.

I'd probably reword it as "Programmers as a group are generally not as motivated by money as other employees may be".

Saying they dont work for the money is misleading I think, and runs the risk of bosses thinking they can cut programmers' salaray because, hey, programmers dont work for money and don't care about paying bills or feeding & clothing their family or anything.

I think the underlying truth here might be that programmers who are enjoying their work are probably also good at their work and are well paid for it. In which case, it may be that many are not motivated by more money because they have enough already that it stops becoming a priority or an every-day thought/concern. This thought is echoed by the StackOverflow survey linked in the article - there is a strong correlation between high salary and high job satisfaction: http://stackoverflow.com/research/developer-survey-2016#mone...

(comment deleted)
As my Dad told me "The mortgage doesn't care about my job satisfaction."

Pay is always in the mix (unless you are independently wealthy), but most people (not just programmers) take it as one factor. A plumber will turn down higher paying work if s/he knows it will be a pain in the butt.

The best programmers aren't motivated simply by money, because you can't get to that skill level without being highly motivated to learn things that won't necessarily ever pay off. To get there you have to read very widely, and experiment, and not stick to learning only salable skills. You have to have a lot of knowledge and capabilities that aren't ever going to show up in a job description, many of which won't ever be useful. The best programmers are algorithm inventors, and cross-pollination from one field to another is what makes that possible. Nobody's going to pay you to go out and get that broad swathe of knowledge, nobody. You either have that very strong internal motivation to learn logic and mathematics related anything-at-all, or you don't.
(comment deleted)
I don't need money to motivate me to write code, I need money to motivate me to write code for you.
I didn't see your message until after I finished posting mine but I was trying to get at the same point. Money may not motivate me to code but that doesn't mean it's not a motivation to get me to code what the company wants me to. I can choose what projects I want to work on. There are no shortages of team that will take good software engineers.
That's exactly it. If my own projects were paying the bills I'd be working on them full time. As they don't (yet!) I'll trade a bunch of my time for some guaranteed income working on something not as interesting.

That's not to say I'm only there for the cash - I legitimately do like my job - but the salary offered is the sole reason I started working there over anywhere else. Raises and bonuses are what'll keep my eyes from wandering over other job ads in the long term.

This is exactly right. Good programmers can for the most part take their pick of job offers. The key part here is in order to motivate a good programmer to work for you you have to offer competitive pay and a competitive environment. The reality is that they can probably quit working for you and get a raise to boot if they feel unhappy.
I'd like to reword it as "Programmers don't code for money. But if they code for other people it better be good money."

I will gladly work on a side project all night and weekends with no expectation of a return. But if it's your idea that I'm working on, I insist on being paid well for it.

That's especially true since the time you're working on job stuff is time away from your pet project. Basically you're losing your full night's sleep and weekends not to work on your pet project, but to go to work.
> Good programmers just don’t work for money

Say that to programmers in Wall Street see how it goes ;)

I just wanted to say : they don't work for 'only' money. Company culture, career scope and other people in the team are more more important for programmers than money I think. Though some people may disagree. BTW, I have corrected the sentence, thanks.
Some weird sentence structure in this article

" Whatever the StackOverflow developer survey tells us, when I say ‘Good’ programmers, they are just 20% of all and those don’t work for the only salary."

eh?

Also I reckon this idea can apply to any field of endeavour. Just programmers right now have a premium on basic human dignity as we are in such high demand.

I manage a team of Data Scientists, and I've come to think of motivation more in terms of avoiding mistakes than doing things well. A lot of people are naturally motivated, but conditions at work can drain that interest. Some examples:

–Feeling like no one is scrutinizing your work to notice whether you're doing a good job or not

–Feeling like even if you do a good job, you won't be rewarded

–Having to spend a lot of time on uninteresting bureaucracy rather than the work you enjoy

–Being told what to do in extreme detail, without opportunities to think much for yourself

–The opposite problem of having too little detail, so you don't really know what problem you're trying to solve

–The office being too cold, noisy, etc.

–Constantly working by yourself, when you want to work w/others more

–Constantly working with others, when you want to work by yourself more

And so on. IMO the most important thing a manager can do in terms of motivating employees is just to listen to what they want, find the things that are blocking them, and solve them one at a time.

So true. Three examples perfectly reflects my situation.
I think the biggest challenge to your statement is "listen to what they want." Much of our modern psychology suggests people don't always know what they want, or don't want what they think they want. This is not meant as an insult, as it applies to all humans, whether they're a developer or not.

That means that listening is a huge part, but it's not enough to simply implement exactly what you hear they want.

All that said, I still totally agree with your examples.

Yeah, you're totally right. Just literally listening is not enough–you have to ask questions, trace symptoms down to a root cause, and then come up with a good solution for that problem.

For example, one person requested that we make standups earlier, because they wanted to get them out of the way before getting into the zone. Another suggested making standups later, because they preferred to start work later in the day. Obviously these solutions as suggested were incompatible. So I tried to figure out what value we were getting from standups, and figured that it was worth experimenting with making them asynchronous using Slack. That worked really well, and is what we do now most of the time. (Occasionally, the team likes having in-person standups when in the middle of a tough series of bugfixes.)

Exactly! And kudos on figuring out a system that accomplishes the goal (what's everyone up to), but works well for the most people.
> So I tried to figure out what value we were getting from standups, and figured that it was worth experimenting with making them asynchronous using Slack.

Could you please elaborate on what you are doing? We are facing similar problems so I would love to know more...

I found that I was getting two things from standups: knowing what people were working on, and having a natural time to ask for/offer help. So (for now) we use Geekbot, and configured it to ask everyone on the team four questions each day:

–What did you accomplish yesterday?

–What is your top priority today?

–Where can you use help/what's blocking you?

–Which of these best describes your current level of challenge: bored, relaxed, excited, frustrated?

Everyone on the team is expected to read each other's standup reports (we have 7 people.)

Isn't it too much to have this every day?

I've found that asking people every day incentivized them to write about anything and invent stuff just to fill up the question.

All the questions are optional. It's a little more than my team would like, and a little less than I would like to ask each day, so I think it's a fair compromise.
When i did something like this in my prior company I did not care at all what others wrote. i would lie to my manager that i read it but i still did not care.
Thanks for explaining! I am not sure I would want to it this way because in my experience people tend to avoid "needless" tasks (such as reading on other people's progress :)), but it's good to know nevertheless.
Agreed! We had the same great experience with turning standup into an async chat room.

We're bicoastal so it's even harder to find a workable time, but I still got flack from outside the team. The improvement in outcomes was so huge that it was very easy to defend.

My experience was to remove the daily standup. Best decision ever.
I do work around motivation and communication and would like to share some of my experience.

In my work I use the Nonviolent Communication/Maslow model: every action we take is a strategy to meet a basic human need. There are no "good" or "bad" actions. Some actions meet more needs for more people than others.

Extrinsic motivation (rewards/punishment, or, as I like to simplify it, punishment -- because withholding the carrot is just that), is not sustainable.

See Alfie Kohn's Punished by Rewards for an exhaustive list of papers and experiments.

The list you provided can be related to basic human needs:

> –Feeling like no one is scrutinizing your work to notice whether you're doing a good job or not

Unmet needs for appreciation, acknowledgment, contribution

> –Feeling like even if you do a good job, you won't be rewarded

Unmet need for appreciation. This is tricky, because corporations as entities want to pay as little as possible while extracting as much as possible. So showing appreciation through money is undesirable. Still, people who can easily find better paying jobs elsewhere, do continue working at SpaceX and Tesla despite being underpaid. Mostly because they have a strong sense of purpose and non-monetary appreciation.

> –Having to spend a lot of time on uninteresting bureaucracy rather than the work you enjoy

Unmet needs for efficiency, purpose

> –Being told what to do in extreme detail, without opportunities to think much for yourself

Unmet need for competency (being seen as competent), acknowledgment (of intelligence), autonomy (this is the one people start wars for)

> –The opposite problem of having too little detail, so you don't really know what problem you're trying to solve

Unmet need for clarity

–The office being too cold, noisy, etc.

Unmet needs around physical and mental well-being

> –Constantly working by yourself, when you want to work w/others more

Unmet needs around connection, belonging

> –Constantly working with others, when you want to work by yourself more

Unmet needs around solitude, efficiency, autonomy

Many of these can be addressed in simple, constructive ways, as soon as we can start seeing the needs behind the grievances and actions. It's like acquiring an x-ray vision, which is precisely what I teach.

Lastly, I'll leave you with a quote which I really like: Managers try to change people. Leaders change the environment.

>In my work I use the Nonviolent Communication/Maslow model: every action we take is a strategy to meet a basic human need. There are no "good" or "bad" actions. Some actions meet more needs for more people than others.

That's how I think, too. Wouldn't it be great if we could get the whole world working that way?

All it takes for the tide to turn, is one generation of children to grow with this as the norm.

This is why I work with parents ;)

I want to like this article, but it just doesn't make much sense.

You can't solve problems 9-5? Why not?

This approach never fits inside their brains, because they carry a brain that has far more weight than that little shiny paycheck.

What??

I think a good article on this theme could be written, but it isn't this one.

The age ol' "How Software Companies Die"[1] has much on this point.

The environment that nurtures creative programmers kills management and marketing types - and vice versa....

[1] http://www.call-with-current-continuation.org/rants/how-comp...

+5 Insightful! I've read that piece a number of times, and never come away with your conclusion. I always took away from it that the failing was managers trying to make things predictable, not that they have conflicting core values.
Great post but still nurtures the idea that programmers are somehow a special form of human. That idea is part of the problem.
Programmer type personalities are in every industry (animators/graphic designers/techs..) in general the suits don't care about these people.

It's just there are so many suits trying to extract money using programmers that causes all these discussions, and there are to few good programmers. I don't know if there was any other time in human history that there was a skill so in demand and with such a limited talent pool.

I think it is about creative and production modes, they are different to any human in those states.

Being rushed or designate time to be creative is hard, there has to be a balance of on/off to allow creativity to happen from anyone.

John Cleese probably put this most eloquently with "closed" and "open" states to allow creativity to happen in the human mind in this talk on how to be Creative [1][2]

Now here's the negative thing: Creativity is not a talent. It is not a talent, it is a way of operating.

MacKinnon showed that the most creative had simply acquired a facility for getting themselves into a particular mood -- "a way of operating" -- which allowed their natural creativity to function.

In fact, MacKinnon described this particular facility as an ability to play.[2]

Entertainment companies like Pixar, Valve, HBO, Netflix, independent standouts, etc, know how to create systems that help people get into the "open" state to create. Good software companies/game companies do as well from design to development and onward.

[1] https://vimeo.com/89936101 or https://www.youtube.com/watch?v=9EMj_CFPHYc

[2] genius: http://genius.com/John-cleese-lecture-on-creativity-annotate...

> The environment that nurtures creative programmers kills management and marketing types - and vice versa....

Misleading quote at best. That's only the first line of the article, written for thought provocation.

There isn't anything in the article that prevent management or marketing from working with programmers.

The most successful software companies are among the highest paying, but maybe that's not what the author mean by Carrot and Stick. They never give a concrete example, so I find it hard to figure out what point they are making exactly.
(comment deleted)
As a web developer, nothing keeps me more motivated than well-written specifications and user stories from the product team.
> Good programmers just don’t work for money

This is incorrect.

Correction: Good programmers don't work only for the money.

> It’s hard to find good programmers

Define good?

I've been at startup hiring 1 new decent programmer every week. Stopped calling that hard since.

> Programming is not a 9-5 ‘duty’

Programming as a 9 to 5 job is fine and recommended.

Web startups may overwork and exploit naive young programmers into working more, doesn't mean their job can't be done as 9 to 5.

> Define good?

I would say "good" programmers are ones that are motivated to make themselves better. People who take pride in their work, and identify with their skill and abilities. This is true for anything really.

> I've been at startup hiring 1 new decent programmer every week. Stopped calling that hard since.

People who care about improving themselves will not typically want to work at the IT department at a conservative insurance company. "Good" programmers will be attracted to places that provide upward-moving career opportunities, which startups tend to have more of. Perhaps you work at one of those?

I've worked at companies from 30 people to 300 000 people with a brief period at 5 people consulting agencies.

Startups (past 10 people) are good for hungry young programmers. Easy to get into with limited experience. Lots of exposure to lot of stuff. Opportunities to grow experiences quickly and execute at an incredible pace.

Then leave it. It's only leverage to get a better job. One that does provide sane hours, decent pay, healthcare, parental leave, pension...