Nine Things Developers Want More Than Money

Many of the developers I know have been programming since they were in junior high. Whether it was building text-based games on an Apple IIe or creating a high school football roster app in Visual Basic, it’s something they did for the challenge, for the love of learning new things and, oh yes, for the ladies. Ladies love a man who can speak BASIC to his Apple.

Code

College graduates face a sad reality when they leave the protective womb of a university and have to get their first real job. Many of my friends found jobs paying around $25k out of school, and were amazed that the starting engineering and computer science salaries were nearly double that. But the majority of the engineers in my class didn’t become engineers for the money; we did it because it touched on a deep inner yearning to tinker and impress their friends. And did I mention the ladies?

Money is a motivating factor for most of us, but assuming comparable pay, what is it that makes some companies attract and retain developers while others churn through them like toilet paper?

Hygiene and Motivation
In the 1950s a researcher named Frederick Herzberg studied 200 engineers and accountants in the US. He asked them a few simple questions and came up with what is one of the most widely-accepted theories on job satisfaction called Two Factor Theory.

His theory breaks job satisfaction into two factors:

  • hygiene factors such as working conditions, quality of supervision, salary, safety, and company policies
  • motivation factors such as achievement, recognition, responsibility, the work itself, personal growth, and advancement

Hygiene factors are necessary to ensure employees don’t become dissatisfied, but they don’t contribute to higher levels of motivation. Motivation factors are what create motivation and job satisfaction by fulfilling a person’s need for meaning and personal growth.

Think of a large financial company like Countrywide or IndyMac. Although I’ve never worked for either, the stories I’ve heard indicate the hygiene factors are well taken care of: working conditions are good, supervision is reasonable, salaries are decent, they have good benefits, etc…

However, the motivation factors are, shall we say, incognito. As Herzberg noticed, this scenario leads to employees viewing the job as little more than a paycheck, which is probably all right for companies like Countrywide and IndyMac.

Football

Take the flip side: a tiny startup in a dingy office with no windows, crappy benefits, little supervision (because the CEO’s on the road making sales), and no company policies (because the CEO’s on the road making sales). But the constant rush of learning, being responsible for the company’s success or failure (almost single-handedly at times), and believing in the company’s future growth makes this job much more desirable for many developers.

One of my early programming jobs was for a web consulting startup during the dot-com boom. There were 7 of us (we grew to 17 during the height of the boom) shooting each other with water pistols, throwing Nerf footballs around the office, and cranking out insane amounts of caffeine-driven code. We learned a new language every project and were always on the cutting edge.

I remember thinking that a company across town could have offered me a $15,000 dollar raise and I wouldn’t have taken it. The motivation factors were overpowering.

On the flip side, the benefits were terrible, the office was a series of tiny cubicles, gray from years of neglect – Smurf-blue network cables hung from the ceiling, and supervision was…well…non-existent. And although hygiene factors were lacking, developers flocked to work for this company and only one left while I was there. She was interested in a more stable work environment and better benefits, and went to work for a large financial institution much like IndyMac.

Rob’s Criteria for Keeping Your Developers Happy
If you want to collect a paycheck for 25 years and retire with a gold watch and a pension then go for companies that have the hygiene factors nailed. Stroll in at 8, head for the door at 4:59, and count the years until you’re kicking up your feet on a beach bar in Costa Rica.

Big Building

But if you’re reading this, odds are that you aren’t the kind of person who never thinks about code after 5:01; you’re more likely to have a collection of DVDs that come up in an Amazon search for “Silicon Valley.” You’re probably one of those people who needs motivation factors or you go crazy with restlessness, and when the motivation factors are in place you’ll work ridiculous hours for low pay just because it’s so damn fun.

I talked to a dozen colleagues and pored over my own experiences to arrive at this list of nine software development motivation factors – Rob’s Criteria for Keeping Your Developers Happy.

There’s only one rule when determining your score: your vote doesn’t count unless you’re a developer. If you’re not in the trenches writing code then forward this article to someone who does and ask for their opinion. In addition to keeping management from making an unfair assessment, my greater hope is that this inspires conversation and forces management and developers to talk about these issues so we can get them out in the open.

Without further ado, here they are:

1. Being Set Up to Succeed
It’s a sad reality, but most software projects are set up to fail. Every developer has their horror stories; the “anti-patterns” of software project management.
I’ve seen an architect given documentation for a legacy system that he pored over for week while designing a new interface for the product. After the design was complete he found out that the documentation was three years old and didn’t reflect several major changes the system.

I’ve spent hours preparing a detailed technical estimate only to be told that the real deadline, already set by product development, gives me half the time I need.

Realistic deadlines are a huge part of being set up to succeed. Developers want to build software that not only works, but is maintainable; something they can take pride in. This is not in-line with product development’s goals, which are for developers to build software that works, and nothing more.

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.
Wheat
It’s critical to have buy-in to do things the right way, and not just the quick way. As one developer I talked to put it “Quality is as important as feature count and budget.”

Schedule is not the only way a project can be set up to fail, but it is the most common. Others include: being forced to use cheap tools (be it software or hardware), working with a partner who doesn’t deliver, bad project management (see #2, below), changing scope, and unspoken expectations, among others.

2. Having Excellent Management
Excellent management, both for projects and people, is a must-have motivation factor. 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

These are the traits of an amazing software manager; the traits of a manager whose team would bathe in boiling oil to defend her, and work all-nighters to prove her right. When a manager takes bullets for the team, good developers tend to return the favor and then some. It creates an almost cult-ish loyalty, and the results are not only motivated developers, but insanely good software.

3. Learning New Things
Behavioral research indicates we’re happiest when we’re learning new skills or challenging old ones. 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. This research suggests that we are willing to be paid less for work that’s interesting, fun, and teaches us new skills.

This is why companies using Ruby can find experienced programmers willing to work for less than their typical salaries.The learning factor is huge when it comes to negotiating compensation.

Every developer I know loves playing with flashy new technologies. It was Perl and HTML in the mid-90s, ASP, PHP and Java in the late-90s, ASP.NET and XML a few years ago, and today it’s AJAX and Ruby (and in some circles ASP.NET 2.0). Give someone a chance to use these toys and they’ll not only be able to impress their friends, but fulfill that piece inside of them that needs to learn.

Keep a developer learning and they’ll be happy working in a windowless basement eating stale food pushed through a slot in the door. And they’ll never ask for a raise.

4. Exercising Creativity and Solving the Right Kind of Problems
Developers love a challenge. Without them we get bored, our minds wander, we balance our checkbook, check our email, hit Digg and Slashdot, read a few blogs, hit the water cooler, and see if any of our friends are online so we can once and for all settle the debate surrounding your uncle, the IDisposable interface, and that piece of toast shaped like the Virgin Mary.

Droplets

I’ve watched developers on multiple occasions stay up until sunrise to solve a technical problem without being asked and without extra pay. The best developers are addicted to problem solving. Just drop a Sudoku in the middle of a group and watch them attack it.

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.

The right type of challenge is a technical challenge that teaches a new skill, preferably one everyone’s talking about. One example could be: “Consume these five RSS feeds, aggregate the data, and display the headlines on a web page…and figure out how to use AJAX to make it cool.”

The wrong types of challenges are things like: “Fix that other guy’s code. You know, the one we didn’t fire because we were afraid he might cause problems. Well, he wrote a really crappy system and now we need to fix it and make it high-quality and maintainable. Oh, and you have until tomorrow.”

If your business doesn’t provide challenging work to developers, figure out how you can start. If there is no chance you’ll ever be able to provide challenging work, find developers who are into hygiene factors, because developers who need motivation factors won’t stay long.

5. Having a Voice
Developers are in the trenches, and they’re the first ones to know when a system or process is not working. One developer I spoke with told me:

“[I want] someone to listen to my problems and actually take them seriously. I’ve worked at a few places where more RAM, more hard disk space, or faster/dual CPUs were simply not a priority for the company, but it was incredibly aggravating to the point of impeding my work. At one place I worked, every time I wanted to compile the software I had to clear all my temporary files because I needed more disk space. Talk about asinine. Being forced to work using outdated technology is really frustrating.”
Speaker

When a developer speaks, someone should listen. When several developers are saying the same thing, someone should listen and act…quickly.

6. Being Recognized for Hard Work
As engineers we love building things that impress ourselves and our friends. At least the ones who realize how hard it is to write a Perl compiler. From scratch. In FORTRAN. On a Vic 20.

Building something great is fun, but it’s much more fun when someone’s there to pat you on the back, throw you a party, sing your praises, or buy you a steak dinner. Most developers enjoy hearing praise and receiving recognition for hard work, but even the ones who don’t need it are somehow soured when they don’t receive it (or worse yet, someone else receives recognition for your work).

Recognition is one of Herzberg’s core motivation factors and it applies to software developers as much as the engineers originally interviewed.

7. Building Something that Matters
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. Some of us might think we do it just for the sake of technology, but in the back of our minds we see ourselves as part of a grand scheme.

For instance, a friend of mine works for a financial company and cherishes every time they launch a product that helps the under-served financial community.

An Albertsons inventory software developer enjoys coming to work every day because his work ensures, via complex supply and demand algorithms, that the baby cereals are always available on the shelves.

Building something that matters makes an L.A. Times software engineer ecstatic that the trucks are now saving over 30% of their mileage and fuel costs due to his shortest path finding software implementation for newspaper delivery.

On the other hand, writing an interface to a buggy API that’ll be used a total of 15 times in the next year doesn’t seem like it matters much.

Copying and pasting an entire application and changing a bunch of labels isn’t as exciting as it might sound.

And hacking in a few more case statements in a ridiculously complex stored procedure in order to service yet another customer without creating a proper data structure somehow doesn’t seem to fulfill that part of us that wants to build something that matters.

Library

8. Building Software without an Act of Congress
I was a contractor for three years starting in 2001, and during that time I built a ton of web applications. Since much of my development was off-site I became accustomed to writing software really quickly once we knew what to build. Another developer and I built insane amounts of software over the course of two years.

When I got my next full-time job it felt like I was dragging 50-pound weights. For every page I wanted to build I had to call a meeting with six people. Any change to the database required three approvals. It was nuts, and applications took 5x longer to build. Talk about frustrating.

The authority to make project decisions without calling a meeting is huge.

9. Having Few Legacy Constraints
No one likes developing against buggy interfaces, crappy code, and poorly-designed data models. Too many legacy constraints kill creativity, require an act of congress to modify, and generally sucks the fun out of building software (see several of the previous points for why this is bad).

If you have gobs of legacy liability, try to figure out a way to minimize its impact on future development. If you can’t, look for people who value hygiene factors, because motivation factor developers are not going to maintain the same poor-quality applications for very long.

Determining Your Score
Let’s face it, the bar has been set pretty low when it comes to motivating developers. How many companies can you think of that would score even as high as a 3?

Since this test hasn’t been administered to companies across the globe there’s no basis for comparison, but that’s where you come in. I’d like to do an informal survey so we can get an idea of how things are in the real world. Please post your company’s score in the comments (you don’t have to post the company name).

Most large companies I can think of would be lucky to score a 1. Google would probably score an 8 or a 9.

Wrap Up
If you’re a manager, when was the last time you asked your developers about these issues? If you’re a developer, when was the last time you respectfully raised one of these issues, providing examples and a possible solution?

If the answer is “a long time ago” then you have some work to do. Send this article to a few of your colleagues and start discussing how to enact change.

add to DiggDigg thisadd to RedditRedditadd to del.icio.usdel.icio.us

If you liked this article you’ll also like my article Personality Traits of the Best Software Developers.


Thanks to Jeremy Lukensmeyer, Curtis Fields, Rick Kopitzke, Adnan Masood, Mike Taber, and a few others for their input into this article.

Special thanks to Mike Taber for reading a draft of this article.

Start Small, Get Big
The Newsletter for Self-Funded Startups. It'll Change Your Life.
What you get for signing up:
  • A 170-page ebook collecting my best startup articles from the past 5 years
  • Previously unpublished startup-related screencasts
  • Exclusive revenue-growing techniques I don't publish on this blog
"The ideas and information Rob provides should be required reading for anyone that wants to create a successful business on the web." ~ Jeff Lewis
Startups for the Rest of Us...
If you're trying to grow your startup you've come to the right place. I'm a serial web entrepreneur here to share what I've learned in my 11 years as a self-funded startup founder. Luckily several thousand people have decided to stick around and join the conversation.

For more on why you should read this blog, go here.

56 comments ↓

#1 http:// on 11.03.06 at 1:26 am

Nice job; you really have your finger on the pulse of developers. One honorable mention for me is having an enthusiastic, creative, and witty set of peers. I need someone to bounce ideas off of, to help me “pair debug”, and to be mentored with the latest ideas, technologies, tools, and algorithms (politics and news gets old fast at lunch).

#2 http:// on 11.03.06 at 4:13 am

My company gets a one, maybe a two if you squint. They think they’re an eight or nine. 60-80 hour work weeks, no overtime (they think they pay great – for 40 hours). Saved the company $10M? Have a $50 gift certificate and a $200 plaque/book-end. Cancel our vacation and make us work weekends because management wouldn’t take our advice, and it blew up in their faces (so we suffer). They even try to call in people that have left the company years ago to help with all the problems they’ve created – for no pay (no takers, surprise). I’ve squirreled away every dollar I can, and I’m retiring early (45). I’ve got my popcorn, and I’m just gonna watch them crash over the next few years.

#3 http:// on 11.03.06 at 5:37 am

My company (a medical device startup) gets an 8, maybe a 9. Its too early in the life of the company to tell if the management is excellent. I know that they’re competent, but “excellent” is hard to measure. (Shameless ploy- we’re hiring a Rails developer. http://atlanta.craigslist.org/sof/228684114.html)

#4 Harald Korneliussen on 11.03.06 at 9:26 am

My company would score very good on “hygiene”, and although I really would appreciate all the motivational things you mention, as a family-oriented guy I suspect “hygiene” demands are a higher priority for me than for many. Does it matter how exciting the technology is if I don’t get to see my son? The ones I identify with that you mention are those that make sure there’s baby cereal on the shelves… as long as I feel that our program is doing something very important for a few people, or something slightly important for a lot of people, I can put up with the lack of new technologies and so on. Even when maintaining a large, “boring” application, there’s plenty of opportunities for learning new stuff if you know where to look. But yes, this was insightful. I remember that one of the doctrines of that american management guru, don’t recall his name, but he was the one that started the quality revolution in Japan, since american companies didn’t listen to him at the time… anyway, one of his doctrines was to get rid of anything that prevented the employees from taking pride in their work. We programmers are a proud bunch, so I think that’s especially relevant for us.

#5 http:// on 11.03.06 at 11:47 am

Recently, there was an article about, all a Physicist (doing String Theory) needs is a pad and pencil, a parking place for his/her bike, and a decent Health Insurance. I think the same applies to Programmers. With all the cheap computers and Open Source, all one needs to do is be on welfare, and do what one is interested, to hell with everything else.

#6 http:// on 11.03.06 at 1:03 pm

I enjoyed the article. I think our startup would score at least a 7, but I’m the CTO so maybe I’m inflating.

#7 http:// on 11.03.06 at 1:24 pm

Most of what you say is pretty good. I’ve got an issue with #9. While it’s great to have a blank slate and get to design and build something exactly the way you want, in many cases that is unrealistic. But more to the point, I completely disagree that it kills creativity. In many ways I believe it REQUIRES creativity. When you are working within hard constraints you are forced to really think about how to integrate what you need to accomplish with what you have. Call me sick and twisted, but I actually enjoy that challenge. At least after the fact. I moan about it like everyone else, but after thinking about the problem and coming up with a creative solution, I’m actually quite satisfied.

#8 http:// on 11.03.06 at 1:31 pm

The nightmare begins when you have ONLY legacy code, incompetent management and co-workers who are reluctant to rewrite modules. The only solution is not to try to enjoy the challenge of creating new functionality or fixes, but to enjoy changing organization.

#9 Retrospector on 11.03.06 at 2:47 pm

This falls in line very closely to an article I wrote this summer: Top 10 Ways to Motivate Geeks I like how you mentioned it’s part of a two-factor theory. Very well said, Rob.

#10 David Otton on 11.03.06 at 3:49 pm

Although I’m probably one of the motivation-driven developers you’re talking about (less so now I have a family), it’s important to recognise that different things drive different people. For example, I’ll probably be at this desk until 8pm or so tonight, not because the project’s urgent, but because for me, the incremental improvements to existing code that you seem to hate are more fun than a new-build project. Taking a rushed, monolithic block of code with circular dependancies, an ad-hoc database model and no forward-planning and turning it into something solid and maintainable gives me the same kick that some people get from restoring vintage cars. Agree on most of the rest, though I do prefer recognition to be in the form of cash.

#11 http:// on 11.03.06 at 4:05 pm

“Taking a rushed, monolithic block of code with circular dependancies, an ad-hoc database model and no forward-planning and turning it into something solid and maintainable gives me the same kick that some people get from restoring vintage cars.” But what if you are not given permission to transform the hideous monster into something beautiful, but instead you are given only limited time to add some ugly duct tape “solution” to some specific problem.

#12 Shanti Braford on 11.03.06 at 5:20 pm

Of course every developer is going to love #9. How often is that realistic? I work on Ruby on Rails apps… and, someone is always going to have to maintain legacy apps. As a founder / early employee, part of the fun is being the boss and being able to work on new things. Realistically, the only way you are going to be able to score extremely high on this scorecard is starting your own company. Getting in early (like employee #3-10) might also do the trick if the founders are cool and they haven’t reached the “Ok, we have to start acting like a big company” phase yet.

#13 Ryan Smith on 11.03.06 at 5:38 pm

I work for a small ISV / Marketing company, and in my opinion we would rank a 7-8. I would say that the biggest downfall is crappy hardware. Right now, it takes 15 minutes to restart my computer and I’m working on the same machine / monitor that I’ve been using for the last 2.5 years. I personally think the reason that we do so well is because our technical manager (V.P. Technical Services I think is his official title) really understands software, how it gets developed, and how developers think. I’m not micro-managed at all, but I’m also completely insulated from the office politics. When I have a new idea or something that I want to build, my technical manager makes it happen. That’s how good software gets written.

#14 http:// on 11.03.06 at 6:28 pm

1. And that’s being generous about it.

#15 http:// on 11.03.06 at 6:37 pm

I work for a regional insurance company that scores a flat zero. To top it off, the hygiene is getting worse every year while the fat cats are making more money than ever. Aaaargh! The IT shop could be great, but old style management and lack of balls cause a pitiful work environment. Our best developers are looking for other opportunities. Knowledge, experience and creativity are not valued here.

#16 http:// on 11.03.06 at 6:45 pm

Well done – I’m not even a developer in the tech sense and this article was helpful for me as an owner/manager of a RE brokerage. One question: Since engineers are motivated by “chicks” does this mean there are no women in the business? We only hire chicks :)

#17 http:// on 11.03.06 at 7:16 pm

as others have pointed out, you have characterized software developer attitudes but you neglect to point out that these are the same attitude that keep them socially unacceptable and powerless in corporate structures. By working for free, you teach your corporate masters that you are not very valuable. That you will give away your time in exchange for nothing. If you aren’t valuable, and you have no people skills, you have no chance of rising in the corporate structure where you will have a real influence on schedules and product definition. The myth of a startup is just that. I have been part of a few startups and seeing them and many many others crashed and burned horribly leaving most of the developers exhausted and without any money beyond their last paycheck. If I had to live my life over again, I would still probably do software development but I would also study heavily corporate psychology and politics. I would try to move up in the hierarchy as fast as I can to make sure the developers have the resources and time to do stuff that matters.

#18 http:// on 11.03.06 at 7:18 pm

most of the things developers want in your post is the same thing any working person wants, regardless of their role. unfortunately, in a capitalistic society like america, the governing value is outcompeting the next guy/company and raking in as much profit as possible. the human values have and always will, take a back seat to that. in most organizations, even though they try not to show it, you’re just a cog in the wheel, so shut up and get back to work…and hurry up.

#19 http:// on 11.03.06 at 7:20 pm

My company would score about a 7, allowed me to create new features with little constraints. I’m always learning new things, my work matters, and I always get recognized for my work.

#20 http:// on 11.03.06 at 8:10 pm

Great article, I really enjoyed reading it. You raise some fascinating points.

#21 New Hampshire (NH) Web Design & Software Development on 11.03.06 at 8:14 pm

My full-time job is about a 5. There is a significant amount of legacy code and a legacy DBMS that I was supposed to port to Java/Oracle. Instead they tossed me onto another project where I am the lead developer. A huge factor for me is working with new technologies and new languages. This is just one of the many reasons that I started Tasen Software, which you can find at http://www.tasensoftware.com Now I can integrate all the new technolgies and take the ultimate pride in my work. Oh yeah, and I can develop a grade 9 company for my employees too. =)

#22 David Smit on 11.03.06 at 8:17 pm

I really liked your article. I blogged my own score and realised that I should start working for myself http://www.ishopr.com/blog/?p=30

#23 Jason Truman (Technical Director) on 11.03.06 at 8:56 pm

As the senior technical director of the largest web/database development company in Vancouver, Canada, I’d have to say we hit darn close to a solid 9/9 on the above things. I guess that’s why every single developer I’ve ever hired says we have the best environment they have ever worked in. It definately helps that one of the primary goals of the President of the company is to ensure that everyone is very happy with their jobs. He often sacrifices profit just to ensure this is possible.

#24 http:// on 11.03.06 at 9:33 pm

my company scores a 2… but the quality of the legacy code is so bad, it should count as -1.

#25 JD on 11.03.06 at 10:10 pm

We’re a good 8-9, I think. But I’m a bit biased.

#26 http:// on 11.03.06 at 10:30 pm

I work in a development shop of about 10 developers, my company scores a 3. For learning new things, few legacy constraints, and absolutely no planning whatsoever. I guess that one can go both ways.

#27 http:// on 11.03.06 at 10:52 pm

Wrap Up should be extended for managers: if you asked recently, or developers complained about any of these issues, what did you do about that?

#28 http:// on 11.03.06 at 11:00 pm

I worked for MCI WorldCom for about 5 years. They score between a 0 and a 1. #3 (Learning New Things) is arguable because (a) We received licences for Visual Studio when .NET 1.0 came out and (b) Using anything free was encouraged. —————————- The company I’ve worked for since 2004 employs about 200 professional-level people; only about 15 of those participate in a development role. This company scores a 5.5. However, as the company continues to grow, I see this number decreasing. For too many companies, there is an inverse relationship between size and the motivational factors listed by Rob. Specifics: #1, #2, #3, #4, #7, and half of #5 (adversely affected by certain micro-management and constraints imposed by #9) each contribute a point. I would include #6 as the company has a recognition program, but I have not seen any developers recognized during my 2.5 years here. It’s usually account management, sales and marketing people, or even managers. Thanks for the great post, Reagan Boone

#29 Cubegeek on 11.03.06 at 11:07 pm

As someone who has been in the software business long enough to remember when almost all of the market belonged to aerospace, I’ve had the benefit of understanding a few things. Something nobody has mentioned here, that a fellow old-head mentioned today is also very important. She had to interview a new developer today and asked him how many customers were actually running his code. He mumbled something about it being a startup and now there’s new frameworks yadda yadda. The best programmers care about customers. Sure there are a lot of 30 somethings who just care about how they can get over at work, but I’ve seen the kind of programmers who serve the same customers through multiple generations of technologies and through multiple companies, startups and otherwise. As a business manager, I know how fudged requirements can make programmers build less than world class software, even though they have world class skills. So long as the product gets sold, doing so is a measure of disrespect for the customer, the business and the product. Witness the recent deal at Netflix where they had a contest to find the best affinity algorithms. The very existence of that contest proves that the programmers at Netflix didn’t care enough about their customers, and the managers at Netflix didn’t care enough about their programmers. Sure, they came up with a solution, but do you think they offered that same bounty to the internal guys? Ask a great programmer about their user base and they’ll tell you. A mediocre programmer doesn’t care. A mediocre business hides programmers away from customers. A great software company takes suggestions from customers and shares engineers time with customers, not just the tech support guys, but development leaders. The entire reason that Open Source has made any inroads to the software business is because of the failure of software companies both business managers and programmers to respect the customer. Always remember: Tron fights for the User.

#30 http:// on 11.03.06 at 11:38 pm

The american management guru is W. Edwards Deming. And this is a very good article.

#31 http:// on 11.04.06 at 3:32 am

I work in a company that scores well…. thats probably the only reason why I am still around. The hygiene factors are horrible (getting half of whats the market rate), and as much as I hate to admit it, its something that has been bitting at me. What is worst is that some how along the way the overtime and drive to do stuff well has become something which the boss takes for granted. Theres nothing worst that having your boss tell you every Friday “Oh can u have this up by Monday, thanks a lot you are the best” especially when its stupid tasks just to fill his pockets with more money. The company is doing well, the boss knows he is paying crap pay, but knows how much I love the freedom of making decisions and building stuff … abuses it to get the deeper pockets for himself and dodging the issue when a pay raise is requested. As much as I love the job, I already have plans to leave once a pet project(The reason I join the company at first) I started on is finished. Regardless of the pay increment he will offer when I leave, I will not stay because he theres only one thing worst than a management that does not know what drives their developers => a management that does and abuses it.

#32 http:// on 11.04.06 at 9:26 am

Hey! How did you now what I like?!

#33 http:// on 11.04.06 at 9:34 am

Why are we always giving excuses to employees to offer lower salaries when they offer something exciting tools and projects to work on? Yes it is more fun but money matters, we must not belittle us on voicing these findings. (Even if they are true :) ). You would never find a brain surgeon saying these things

#34 http:// on 11.04.06 at 1:40 pm

You’re hilarious man! Did you know that? You had me cracking in the middle of the office reading this post. It’s so true.

#35 http:// on 11.05.06 at 12:27 am

My team scores a 0. Which is why Monday is my last day! Life is too short.

#36 sirsean on 11.05.06 at 12:51 am

The company I work for scores a 9, and in my opinion the fact that you only get one point per category is a travesty. It’s http://www.zedzone.com, and it’s a whole lot of fun.

#37 http:// on 11.05.06 at 5:08 am

This is a great round-up of traits I look for in a company. Thanks! My company, a start-up developing an open-source storage software, scores an 8.5. Two of those points (having a voice and freedom to decide without having to consult with my boss and others) don’t apply to many others, so it’s a subjective tally. But we’re so communist that everyone from managemer to developer feels personal ownership in the company and its projects, and this is what ultimately makes a company great and fun to work for.

#38 Kym Phillpotts on 11.05.06 at 6:42 am

Great article Rob! I think you’ve really touched on some important points here. For the record I have done my score and come up with 3.5.

#39 Mark Allanson on 11.05.06 at 4:10 pm

“At least the ones who realize how hard it is to write a Perl compiler. From scratch. In FORTRAN. On a Vic 20.” Nice shout-out to Joel there :)

#40 rwalling on 11.05.06 at 4:40 pm

The funny thing is that line was written before Joel’s article was published, and originally read “A Lisp compiler.” When Joel published his article with almost exactly the same line I changed it to FORTRAN.

#41 http:// on 11.06.06 at 7:33 pm

A 1, maybe.

#42 Geoff on 11.06.06 at 8:01 pm

The company I work for used to score about 5. We got taken over and now it’s about 0. I counted twice, just to make sure. Oddly enough, all the developers, bar one, are looking for jobs.

#43 http:// on 11.06.06 at 8:27 pm

For one, this can also apply to IT grunts — is the environment stagnant and in low-budget maintenance mode or is the environment energetic and keeping up with corporate demands and new/alternative technologies? Also, this phenomenon can apply to teams smaller than specified. Companies with more than 50 employees and a non-flat management tree will have a mix of “management styles”. It is novel to witness a situation where everyone is underpaid but group “A” is happy to be at work and group “B” is burning up the printers with resumes.

#44 http:// on 11.07.06 at 3:18 am

My company would score a 4 for hygiene factors and a 1 for motivation factors, for an overall score of about 3. I am fairly well paid (although underpaid when compared with my peers), but there is no motivation to get anything done. All we do is maintain old software while being promised that the legacy system will go away in favor of a brand new system that we will get to help design and build. The “rewrite” keeps getting pushed off in order to satisfy immediate customer demands, even though these demands would be satisfied by a better, more customizable system (like, say, the “rewrite”). It’s ridiculous the amount of customer-specific development that exists in the code, and management insists that the trend continue, because if it doesn’t, “customers will start to leave.” The amount of legacy code is ruining our jobs, and turnover is high. I find this article inspiring and plan to talk at work about some of the points it makes. Thanks.

#45 http:// on 11.08.06 at 9:12 am

‘We’ score 1 1/2. We’ve got #8 covered, but not because its supposed to work that way, it just does. Next to that we get about half a point for being recognized for hard work (#6). Half a point because the people giving the praise, while they’re intentions might be good, are not qualified to recognize the ‘hard’ stuff. Mostly we’re given recognition for the simplest of things, while we’ve build the impossible which nobody notices. That on itself is not exactly motivating. So.. I’m looking forward to my new job. Hopefully things will be better there. I’m well passed the point of trying to fix things. I’m definitely a ‘motivational developer’.

#46 http:// on 11.08.06 at 12:49 pm

Excellent article !! You seem to somehow know the mind of developers. Your differentiation of developers by hygiene factors is good. I seem to discover where I stand.

#47 http:// on 11.08.06 at 3:24 pm

You’re right on developers’ hot spots.

#48 Spencer Schmerling on 11.10.06 at 10:59 pm

I just wrote about this in my own blog so I think this is applicable to employees in any industry. I think it touches on what employees place importance on and, in turn, what makes them stay at a company or choose one over others. You clearly defined what companies can do to go above and beyond the rest to ensure retention, happiness and success.

#49 Alex Man on 11.25.06 at 1:28 am

I strongly agree on #9. In my previous job, I needed to build a big web application from scratch based on a huge, hard-to-maintain and buggy legacy web application. Because that crappy web app was very well UN-documented, no new hired developer really understand anything about it. Every time we needed to add a new feature to the new web app, we had to conduct several meetings with the senior software engineers to make sure that we were doing things that were consistent with the old web app. And most of the time the senior software engineers were so damn busy and we usually needed to wait for their approval for a day (a whole workday) before writing a single line of code. Some of my co-worker left because they just didn’t want to deal with that crap anymore. All the developers always made fun of that crappy web app. And one of the things that made me sick was that the boss was so proud of that crap and boasted about it all the time. One of this favorite quotes was “See, it’s powerful huh”. Although this was only was of the reasons that made me getting another job, it surely was a big one.

#50 Neil Mix on 12.03.06 at 7:17 am

Great post! May I suggest #10? High-quality teammates. Or from another perspective: no dead weight on the team. I’d say that factors into job satisfaction as much as the other nine.

#51 http:// on 12.16.06 at 12:15 am

Personally, I’ll take the cash, bitch.

#52 Bronwen on 12.23.06 at 9:21 am

Love it..hit the nail on the head

#53 http:// on 12.29.06 at 7:58 pm

Very nice article. It even helped me to put my finger on somethings that I’ve been wanting. My current job, for my personal situation, scores about a 6, but will probably fall to a 5, as I’m nearing the end of the learning curve. Still, I’m happy. Also, I can start new small projects pretty much whenever I want. :)

#54 http:// on 01.04.07 at 6:00 pm

My company in *theory* scores a 9 or so. In practice probably a 4. We are supposed to be able to move around every 18 months or so to different internal jobs if our learning stops, supposed to be getting great recognition, supposed to be working on world class technology, supposed to have the right kind of problems…. this all happens occasionally. We definitely are reminded how much our SW matters frequently. Sometimes are set up to succeed. Management… is the only way to get more advancement sometimes and so is not so great.

#55 http:// on 01.15.07 at 9:10 am

This will keep your developers happy to a point. It won’t keep your developers if you don’t pay them enough or give a reasonable work/life balance. This whole “Developers don’t want money” meme is a lie.

#56 admin on 01.15.07 at 5:02 pm

Of course…you’re not going to pay way below market and have happy developers. That’s not the point of this article. The point is that paying at or above market does not mean you are going to have happy developers. And when you have unhappy developers giving them more money is very unlikely to make them happy. So it’s not to say “developers don’t want money” or “developers will work for free if you give them this,” but to say “once the basics are accounted for in a job (such as market pay) here are some things that will keep developers happy and working at your company.” Again, I am absolutely not saying that developers don’t want money. Developers want money! But there comes a point where you have to go beyond that simplistic solution to keep your developers happy and loyal. Throwing money at a problem shows a lack of creativity. It’s a lot like price wars — if you’re a vendor you never want to compete with another vendor on price because there’s always someone who will go cheaper, and you will eventually become a commodity and lose the game. It’s the same thing with salaries – there is always a company that will be willing to pay more than you, so you have to offer something they can’t or won’t. Long-term, offering more of the “nine things” is a far more sustainable strategy than offering more and more money.