As I grow through my career as a software developer, I have tried to remain aware of what makes me happy or unhappy at a job. What I decided was that there were three factors in job satisfaction, so I found myself amazed that someone else had posted something similar: Alan Skorkin explains his Three Pillars of Job Satisfaction.

I agree that there are three pillars, but I disagree about what the pillars are, at least for myself.

I’ve found that these are the main three factors in determining how happy I am at a job:

  1. The People
  2. The Project
  3. The Company

Some of these may seem redundant, so let me elaborate.

The People

The people I work with on a daily basis matter a great deal. This doesn’t mean “everyone at the company”, it means the people who make up my immediate team. I have to find them smart, interesting, motivated, hard-working, and challenging. I need to feel like I’m improving because of them and that they are improving because of me. I need to enjoy working with my fellow engineers, testers, product owners, immediate bosses, and so forth. It’s interesting to note that I can consider this pillar satisfied if my average level of enjoyment is high enough. I can be relatively lukewarm on everyone and be satisfied, or I can even get away with completely despising one member of the team as long as I like everyone else enough to make up for it.

The Project

I’m just not interested in working on run-of-the-mill financial accounting software. It’s a personal failing, I think. But I need to find the project, the thing I work on on a daily basis, to be intellectually engaging. It should use frameworks I want to learn more about, it should regularly challenge me with requirements. The project needs to be a series of puzzles I must solve, but it cannot be frustrating due to poor project development. It needs to build easily, it needs to be easy to write tests, it needs to be checked into version control, and so forth. It should be regularly challenging without being infuriating.

The Company

This may sound redundant, as what is a company if not for people and a project? What I mean here is that I have to care about what the company is doing. I have to care about the business model, I have to feel like the company that employs me is doing something valuable for society, making the lives of users better in some way. I need to be excited by the company by hearing the overall business strategy, without meeting a single person or reading a single line of code.

The 3 Pillars

I’ve found that if I have a job that satisfies all three of these pillars, I’m extremely happy at a company. I don’t look elsewhere, I don’t consider other job opportunities. I can work there indefinitely (with one caveat, more on that in a bit).

If I have a job that satisfies two pillars, I’m reasonably satisfied. I’m not unhappy, and I can come in every day excited to do my job. But at the same time, I’m keeping an eye on various RSS feeds from, making sure I don’t miss a potential three-pillar job.

A job that satisfies only one pillar is a job that makes me unhappy. I’m actively seeking another job and sending my resume out. I dread coming into work, and I have a hard time motivating myself.

A job that satisfies zero pillars is completely miserable. If I realized I was at a job that satisfies zero pillars, I’d quit on the spot, even without another job lined up. Life’s too short.


What’s interesting is that a job that satisfies three pillars can eventually turn into a job that satisfies fewer as time goes on.

It’s always possible for the company to change directions and leave me unhappy with the company, though this is somewhat rare.

It’s also possible that I can get sick of the people I work with after working with them for a long time, but this is pretty rare as well. However, if the turnaround for a company is high, it’s possible that the people I like may eventually leave the company to work elsewhere, which would cause the “People” pillar to eventually be unsatisfied unless I also enjoyed working with their replacements.

The really dangerous pillar is the second one, “The Project”. Eventually I can get so familiar with a codebase that modifying it becomes boring. The features that get added start to look alike, and I get to a point where I can work with the code on autopilot mode. A legacy project may get refactored and cleaned up to a point where there simply aren’t that many “broken” areas of the code that require my attention or offer a challenge. The work gets dull. Skorks mentions the same thing (his ‘Type of Work’ is my ‘The Project’).

Of the three, satisfaction with “The Project” is the one that is most likely to deteriorate. At a 3-pillar company, this isn’t a big deal, but at a 2-pillar company, the moment I get bored with the project I find that I’m working at a 1-pillar company, which puts me into career panic mode.

Luckily, my current job is my first-ever three-pillar company. It’s also my fourth job after college, and all three previous companies were two-pillar jobs, each one lacking a different pillar (which helped me develop the theory).

The main difference between my pillars and Skorks’s is that I don’t have a pillar for money, and I have an additional pillar for the business. I have never been unsatisfied with money, so I don’t really even think about it. I wouldn’t take a job that offered me too little to live on, and if I can live comfortably on my salary then I don’t even think about money. I wonder if that will change as I advance in my career.

The difficulty with these pillars is that, when applying to a job you know nothing about the job except “The Company”, so only one pillar is known. During the interview you have to try to size up the people and ask questions about the codebase to make a good guess about the other pillars.

Based on my differences from Skorks, I guess everyone has different pillars, but these are mine (at least, these are the ones I am currently aware of).

comments powered by Disqus