How to be Happy at Work

I’ve been thinking a lot lately about job satisfaction. It’s a fascinating thing to observe yourself (and your friends) go through periods where you absolutely love your job, or are ready to rage quit, or somewhere in between. In this post I’m going to focus on software engineers specifically because that’s what I am and that’s what I know best.

The Formula #

The first step to solving any problem as a developer is to try and understand the formula for how it’s supposed to work. Everyone is different and values different things. But as I reflect on my own experience and that of the many developers I’ve known, I’m beginning to think there are three main things we all care deeply about. These have the largest impact on whether or not you love your job:

  1. How much you like the people you work with
  2. Interest in the problem
  3. Level of autonomy and choice of tech in your solution

I put them in this order because if you love the people you work with, that can largely compensate for everything else. If you’re super interested in the problem you’re solving, that can compensate a bit for not loving the tech you’re using to solve it. So the simple formula I’m experimenting with is this:

(people * 3) + (interest * 2) + (autonomy & tech)

Before deciding what the score means let’s look at each of these factors.

People #

The people you work with is the single largest factor to job satisfaction. As Shawn Achor puts it

In a study appropriately titled “Very Happy People,” researchers sought out the characteristics of the happiest 10 percent among us. Do they all live in warm climates? Are they all wealthy? Are they all physically fit? Turns out, there was one—and only one —characteristic that distinguished the happiest 10 percent from everybody else: the strength of their social relationships. (The Happiness Advantage pg. 164)

There are really two groups: your peers and your manager(s). I know an engineer who recently left his job solely because he did not like the guys on his team. He didn’t feel like he fit in, didn’t enjoy being around them. I know several other engineers who left their jobs because they couldn’t stand their manager. As the saying goes, “people don’t leave companies they leave managers”.

So for the sake of the formula I like to score peers and managers separately then take the average.

people = (peers + managers) / 2

Problem #

The second most important factor in my opinion is your interest in the problem you get to help solve. I interviewed at a company once and turned down a great job offer because it looked like they had already solved most of the interesting problems. You have to be interested in the domain. You have to enjoy the challenges, and feel a deep sense of accomplishment when you build something that solves them. Too often we consider jobs for their use of the latest and greatest technology, ignoring the more important aspect of actually being interested in what the company is doing. The most skilled managers I’ve had the pleasure to work with are expert at matching the business’ needs with engineers’ interests.

Solution #

Once you like the people you work with and are interested in the problem, the way you solve it becomes incredibly important. The best thing the company can do for itself is to set you loose on the problem and get out of the way. A skilled engineer equipped with autonomy, authority, and resources to tackle a problem is a force to be reckoned with. I am convinced that for engineers there is no difference between happiness and productivity. You can’t have one without the other. The technology you use also plays a large part. So does the health/technical debt of the project. These are things engineers handle naturally when trusted.

Testing the Formula #

Go ahead and try this out by giving yourself a score (1 through 10) for each area. Write your scores numbers down.

  1. How much do you like your peers? Your managers? Take the average.
  2. How interested are you in the problem you’re solving?
  3. How satisfied are you with your level of autonomy and the tech used?

Now multiply your people score by 3. Multiply your problem score by 2. Now add everything up. The maximum possible score is 60. What did you score? This is again subjective and experimental, but here’s how I’d break things down:

0-19 #

Completely miserable. If your score is this low there are serious problems. Your emotional health and well being are probably at risk. You’ve got to either find a way to fix things ASAP or get out.

20-39 #

Relatively unhappy at work. I think a lot of developers find themselves in this area. Things are going well enough that they stick around. But they don’t feel much excitement to go to work in the morning. They’re not hacking on killer new ideas for the company in their spare time. For one reason or another, they’re not as happy & productive as they could be.

40-60 #

Happy at work. These are the engineers who love the people they work with, love their projects, are constantly making things better for themselves and everyone around them. They’re constantly learning new skills and technology. They are respectful to their peers and have their respect in return. Many people want to work with them. Liz Wiseman calls them Multipliers. I call them happy engineers.

How to be Happy at Work #

The good news is that you have complete control over your own happiness at work. Roman Emperor Marcus Aurelius said:

If you are distressed by anything external, the pain is not due to the thing itself, but to your estimate of it. And this you have the power to revoke at any moment.

Even though the three factors (people, problem, solution) are external, your score comes from your view of them. You have absolute control over this. You basically have three choices:

  1. stay unhappy
  2. make things better
  3. change things up

Option one is what you’re doing now. It will get you the score you’re getting now.

Option two is ideal because you can do it right now, completely on your own. If it’s a difficult person you’re having issues with, you can try to get to know them and connect on a personal level. If it’s a technology that is driving you crazy you can take the time to actually learn it. If it’s a project that seems boring you can learn more about the people you’re helping by solving it. Watching real people use your solution is also incredibly motivating.

Don’t be afraid to take option three. It’s better than option one (doing nothing). Sometimes you need a rewrite. Sometimes you need a different manager or project or job. If you’ve given your best effort to make things better and you’re still unhappy, you’ve got to change things up.

Focus most of your energy on the first area. These people will be in your life a lot longer than your job will be. They’ll have the most impact on your happiness at work. This is also where companies should be focusing their perks. It doesn’t matter how much free food you get at work if there’s nowhere to sit and enjoy it with your friends. The companies that really get it promote a culture of being awesome to each other, helping each other, building great things together. It’s all about the people.

I hope you’re happy at work. And if you’re not, I hope this gives you some ideas on how you can be.


Now read this

delightfully traceable

This is a quick note on the virtues of traceability. I’m not talking about tying git commits to business objectives, I have little interest in that. I’m talking about knowing what in the world is going on in your project. A while ago I... Continue →