Are you satisfied with your job? Are you satisfied with where your career path is taking you? These are important questions, and I try to take time to think about this every 6 months or so. Its usually trivial to make a general statement rating job satisfaction: “Yeah I like my job.” or “My career is going nowhere.” But what factors influence programmer job satisfaction? How can hackers become more satisfied with what they do?

First lets break down the main indicators of job satisfaction, and look at how to measure satisfaction in each of those areas. In the next post in this mini-series I will write about ways to become more satisfied as a programmer.

Teamwork

According to Jeff Atwood, “The people you choose to work with are the most accurate predictor of job satisfaction I’ve ever found.” This rings true with me. Thinking back, during the times I was most motivated and happy with what I was doing, I was part of an excellent team of hackers. We worked well together. We bounced ideas off of each other. We were aware of each others strengths and weaknesses, and knew how to maximize the strengths while improving the weaknesses. We respected each others experience, knowledge, and all around hacker stardom. Well you get the idea…

Think of the best hackers you have ever worked with. Would they want to be on your team? If not, you are in trouble. If those hackers wouldn’t want to be on the team you are on now, its unlikely that your team will be able to attract other top notch hackers and its unlikely that you yourself are happy.

Good teams are made up of good hackers who work well together. Attracting top notch people is impossible without an environment that cultivates job satisfaction. So if the working environment doesn’t rank well for the satisfaction indicators below, it won’t attract good hackers, and therefore has virtually no chance of cultivating a good team. This is why the strength of the development team is the number one predictor of job satisfaction.

Quality of Projects

Intelligent people get bored doing the same thing all the time. Hackers are no different. If they are stuck with the same language, the same boring CRUD user interface, the same algorithms they learned in their first year programming, they will be unhappy. Most developers crave learning new things and being able to apply them. Difficult and challenging problems excite them.

Taking some time to think about the skills you have learned lately and the problems you have solved will give you a good idea of not only how satisfied you are in this area, but also how well you are advancing in your career.

Work-Life Balance

The hacker stereotype is to work incredibly long hours while surviving on Cheetos and Bawls soda. This death march method of software development isn’t sustainable and will take its toll over time, ultimately leading to burnout and job dissatisfaction.

Taking a look at the number of hours you are working will give some indication of how you rank in the work-life balance area. Many people on the track to burnout aren’t even aware of it, so talk to family and friends and ask them to help you gauge how well you are balancing work with other activities and obligations.

Bureaucracy & Politics

Some amount of bureaucracy and politics is unavoidable, but good management will be able to shield you from it to a great degree. The only time I found myself without it was during University, and that was more because of warped perspective than anything else. University bureaucracy was actually pretty bad, but I never thought of it as part of what I was doing. It just become something totally unrelated to programming; I thought of it more like paying the water bill or taking out the trash.

In general, happy, satisfied hackers are busy coding and are making progress towards a goal. As a group, programmers do not like to find themselves in endless meetings that accomplish nothing, ensnared in budget disputes, or without adequate resources to be productive and perform their best work. If projects are constantly stalled or held back by requirements that constantly change or are missing, management decisions, or lack of direction, hackers will be frustrated and unhappy. Worse, if programmers are left with nothing to do due to excessive bureaucracy and policy decisions, they will see that their skills are not being used and are therefore not valued. This leads not only to dissatisfaction with the bureaucracy, but also causes dissatisfaction with the amount of recognition and respect that they have.

Recognition and Respect

People who excel at what they do and are knowledgeable about a subject expect to be taken seriously and consulted with during decision making. This is as it should be. Management that disregards the opinions of their technical people or don’t consult them when it makes sense to do so will be left with uncooperative and dissatisfied developers when it comes time to implement an idea.

Have you been allowed to undertake difficult projects? Is your opinion sought out? Are your ideas taken into consideration? Are you congratulated for meeting important milestones? This are all good measures of your recognition and respect within a company. Are you often forced to implement something you don’t have any control over or disagree with? Are you often contradicted or marginalized by people who are less knowledgeable? (Careful with that one – make sure you are open to sound technical ideas.) These are indicators of dissatisfaction.

Compensation

This is one of the easiest factors of job satisfaction to quantify. Some quick research at online job boards gives a good idea of compensation packages for similar jobs in the same area. Discovering compensation packages for people in you own company can also be valuable information. Obviously if you are under-compensated you will not feel satisfied, and on the flip side if you are compensated well you rank as highly satisfied on this area.

After looking at and evaluating these criteria one by one, I have a much better understanding of my personal job satisfaction. It is easier to see which areas are working well and which I need to take action on in order to improve my own career satisfaction and general well-being. In two weeks I will cover steps to increase job satisfaction for each of the factors listed above.

In the meantime, what factors are important to you?

Read the next post in the series: Become a More Satisfied Programmer. Today.