If you haven't noticed, posting frequency has gone down lately because of work, but that should change soon. But I had to write about this thing that came up recently.
My company was trying to come up with a way to incentivize the developers to release the app we're working on "on time with zero defects". One of the ways they offered up was a kind of raffle. For each hour of overtime (productive overtime, emphasis theirs), you get an entry to win a VIZIO 50" Smart TV.
I did the e-mail equivalent of laughing in their face.
First of all, think about the people that work in software engineering. We love technology, we love media, and we make nice salaries. So a TV is going to be a priority purchase for people like me. We're not going to use something won off the street. Anyone who likes TV already has one, has the one they want, and has all they want.
I know I do. I am quite satisfied with my TV situation, thank you very much. What am I going to do with a new one? I certainly have no need for it. Where am I going to put it? Who's going to use it? My three-year-old?
Not to mention I've owned a VIZIO TV before. I did not like it. The buttons on the remote are terribly placed. The reaction time is abhorrently slow. The UI is non-intuitive and pokey. I would not buy a VIZIO TV again. Why would I spend time trying to win one?
And that's the other thing. This big-deal prize is not a fair exchange or reward of my extra time. Even if what I said above didn't apply, I can buy a TV. There will always be TVs. What there won't always be is time.
Time I can't get back. Time is always slipping away. It's the one resource that can never be regained. Even more precious than children. Cause you can always make more children.
How does a TV replace my personal time? How does it give back hearing my daughter's laugh? Or accepting a picture they colored for me? Or snuggling with my wife on the couch? I miss enough when I'm at work for those eight hours (plus lunch hour, plus drive time which is ~30-60 minutes both ways). A TV is no fair reward or exchange for that.
Especially when the goals and benchmarks are so ill-defined. What does zero defects mean? All software has SOME bugs. Some are due to human error (either programmer or user or both) and some are due to incompatible software clashing. Everyone's on a different device, a different browser, a different version of that browser. Just talk to any developer about the "Back button", and you'll get horror stories. You can't proofread programs like you do a book. And even books get released with typos.
Computers don't do ambiguity well, and the criteria here is about as ambiguous as it gets. You find one misspelled word, does that mean it's no long zero defects? Oops, sorry about all that overtime you put in. Guess you don't get that TV after all.
But I'm straying from my point. My point is, you want to incentivize programmers? Give us something we want. Something we can't just buy with our nice salaries. Something that's hard to get.
I know incentive systems work. I used to work at a company that made them, and they taught us the psychology of why incentives work, why intangibles like frequent flyer miles and reward points are better than $, how to best deliver rewards and make people feel appreciated.
And overall, that's probably all I want. To feel appreciated. A good compliment can go farther than a gift card. I'd rather not be demotivated than be motivated. Making a project with a deadline that's impossible to meet before it even starts is a good demotivator.
It's not hard for me to be motivated. I'm already interested in producing good quality code that captures good programming principles. Programs that make me proud. I like programming. I've made miniware programs for myself to generate names and find the best weapon combinations in Vagrant Story. When I'm motivated (or not demotivated, i.e., they haven't screwed me over and ruined their karma with me).
Like the psychology experiments say, intrinsic motivations are more powerful than extrinsic ones, like employee evaluations, gift cards, or threat of punishment. You can't threaten to fire me, I'll just find another, better job. One that appreciates what I can do. I always have before. A TV makes me feel like a cheap slave. Work the cotton fields from dusk to dawn and you can get this shiny nickel (is that racist?).
So what can a software company do to get me to work longer/better? Well, one idea is experiences. There's no substitute for that. So how about, instead of a TV, tickets to something. Or better yet, send me to a developer conference. I've never been to one before. My dad went to them all the time, and it was a great opportunity for a family vacation. It's a win-win: the company gets back smarter employees, and I get free travel/accommodations. AND it demonstrates that the company values me as an employee, enough to invest in my education.
Maybe time off to compensate for the overtime I worked (because I think its ridiculous when you work all night, they expect you to come in fresh the very next day like nothing happened). And me personally, I can be motivated (or at least encouraged) by food, I'm a sucker.
There's no silver bullet when it comes to this sort of thing. What works for one won't work for another. Maybe the higher-ups know the team better than I do. Maybe the other developers really do want that TV. But I know that if you have to offer incentives for something I'm paid to do, something's gone wrong six or seven steps ago.