- Everyone questions their own decisions at some point. Learn what it is like to question your progress through an example.
- Realize you have more options than you think
- Find credible sources on researching your options
- Decode the reasons behind the questions in Joel’s test
- Draw the ultimate conclusion on how to define your dream job yourself
Right after graduation, as I started working for a tech startup, I hardly got enough money to finance my earlier lifestyle. One gloomy evening, I was walking home, thinking about the next step in my life. My path led to the Infopark of Budapest, the park where many well known tech companies gathered. Back in the days, Siemens, HP, Tata Consulting were all names I knew well from my university days. I spent five years studying in the shadow of these buildings.
By the time I was walking in Infopark, I already knew that the company I worked for was not destined to prosper. It was a partner of a stock market education company, and our services were free for most clients of a training company. Even though I was the person responsible for driving technological innovation, I felt blocked by our limited potential. Our presence was necessary, yet, we were a mere cost center in the machinery of the chain of companies fulfilling a greater purpose.
I started questioning my past decisions. Should I have taken an offer from Microsoft, Nokia, or Accenture? I could have been running around in suits by then, feeling the benefits of high status. Instead of Fault Tolerant Systems, should I have studied Mobile Programming as a specialization? A straight path would have lead me to a mobile development company, earning more money, and working under better conditions. Company perks, such as team building excursions to a far away castle, free food, health benefits, discounts, bonuses were all unknown to me.
I was recalling a story about an office sauna and gym in one of the tech giants, when I entered an office building. I knew this building well from the university days, I often had lunch there with former students. As I was looking inside, I saw busy people working in clean, spacious offices. Compared to this professional environment, our office was a mansion in the countryside, more than an hour away from home.
Although I had very good reasons for choosing this career path, back then, during that cold evening, none of these thoughts felt real to me. I was desperately looking for a solution, preferably away from my country. I wanted to target jobs that paid significantly better. I saw jobs enabling me to earn two to three times my salary.
I stopped at the entrance of the company that I rejected after getting an offer. Even though they were ready to pay me 25% more starting salary than the company I joined, I felt something was wrong with them. I saw bored faces, a troubled CEO who got used to firefighting all day. I interviewed a lot of co-workers, and saw an avalanche of tasks I was not interested in.
That day, I was playing with an idea of a big salary raise which was just not destined to happen at my place. As I was looking at the company I almost joined, the voice of their CEO echoed in my mind: “In two years, I could have sold your services for twice or three times more. You are throwing away a great career!”
As an added bonus, I recalled the joy of the friend of this CEO, who showed an expression of winning the jackpot, as he was hired by Google.
Google represented a class of its own. Playful environment, slides, balls, food, drinks, computer games, a gym, and everything a software developer can dream about. Comparing my situation with a google employee, I was desperate to get ahead in my career. I stopped dreaming, and left the office space. I rushed home to see how I can make a difference in my career, as quickly as possible.
The World of Infinite Possibilities
What I did that night is worth another story. Let’s focus on the abundance of options to choose from. Even as a fresh graduate, I could have done a lot of things. Small, mid-sized, and big companies were all available to me. Software houses, banks, consulting companies, tech startups, and established technological companies were all competing for talent.
In my story, you read about a small tech startup, and bigger companies. One of my friends ended up working for a telecom giant, and even though he was comfortable there, people were playing corporate games. When he was looking for information, others were not willing to help him, as they wanted to secure their positions. Downsizing also affected that company back then. Even though the company looked lucrative from the outside, internally, it was not a pleasant place to be in.
I challenge you to compare and contrast the place you are working in, and the place of your dreams. Be clear about what you need to do to get there. You may be lacking tech skills, emotional intelligence, communication skills, personal branding. Whatever you are lacking now, be aware that every skill is trainable. In fact, you will find valuable information even on this website.
Make it clear to yourself that excellent working conditions are not luxury. There was a shortage of talent even in 2006, and now, this shortage only increased. The problem is, a lot of people do not believe that they are good enough to start interviewing for the best positions. Furthermore, people who already have a job, are often comfortable even if the job is not that good.
You have one career, which last best case about forty years or 80.000 hours. There is no time to waste, it does not make sense to get comfortable.
Shoot for the Stars, but Be Aware of the Swamps
When choosing a company to work for, all of us have an idea about the company of our dreams.
We will now focus on the difference between a bad company and a good company. Understanding your current situation is very valuable, as you may have no idea about what you miss out on. You know how your own company works, but you have limited understanding about other companies. This is why networking becomes important: your professional network gives you valuable information about other companies.
Alternatively, you can do your research e.g. on Glassdoor. Be aware though, that the reviews are limited to the perspective of the reviewers. Reviewers are also biased, and they are often in the box of their emotions. Some people even write things that are simply not true, in order to retaliate for a non-existing attack.
You are one Google search away from reading extreme stories about software engineering jobs. I won’t save this search for you, as I believe there are more important thing to talk about.
How do we characterize a good place to work? I will first give you some references, then I will formulate my own opinion.
According to an article on greatplacetowork.com, a great workplace from an employee’s perspective is one, where there is trust, professional pride, and people enjoy what they do, and who they work with.
Interestingly enough, things like a playful office environment, free food, office parties are not in focus. I once heard of a company, where the only team building event was a monthly visit to a bar. People who kept backstabbing each other and kept shifting their responsibilities, got drunk together to release all the frustrations. All of them knew, something was wrong with the company, yet, most of them stayed in their comfort zone.
When it comes to people, some toxic colleague types may definitely stand in your way. The brogrammer often brings narcissism with himself. People who complain, but never solve any of their problems, may infect other people with negativity. The passive-aggressive predator causes trouble. I could go on with many people worth firing on the spot.
The less toxic people you have to deal with, the better your job satisfaction is. Furthermore, multiple studies and surveys show that workplace friendships increase job satisfaction.
Glassdoor published a top 50 list on great places to work for. Some companies even have videos, where you can see an idealized picture in what it is like to work there.
I have not found a credible source listing the worst IT companies to work for. The ones I read are not worth citing. Think about it, this is an impossible mission anyway. You may never hear about the worst companies, unless they are big. Lack of reliable data implies that we have to approach problems from another angle.
Was Joel Right?
A structured approach is based on a famous test published in 2000. As Joel Spolsky is the CEO of StackOverflow, the Joel Test is an integral part of StackOverflow job ads. Although the test is not fully thorough, and it is not directly linked to job satisfaction, the test still measures professionalism. A professional environment is often a necessary condition for software professionals. How could you call a workplace great, if you are delivering unprofessional work?
Interestingly enough, a lot of companies score nine or less on this test. According to Joel, there are serious problems with all tech companies scoring 10 points or less.
Note that the test is a bit outdated. It is talking about CVS and CDs. In the era of Git branches, the question of daily builds needs to be redefined.
The rest of the questions point out many areas that may lead to frustrations, making your company an awful place to work for.
Question 6 on scheduling symbolizes a pain point. Complexity estimations and scheduling are important for job satisfaction. I have heard of people quit because of absence of target dates. This person wanted the pressure of deadlines for motivation. I have also heard of managers commit to deadlines without asking any software professionals to plan and estimate the complexity of a project or a milestone. If any of these happen in your company, I suggest changing the process, or changing the workplace.
Question 7 addresses specifications. If you have to commit to a deadline, and a stakeholder changes the specification without asking for a new timeline estimation, start planning to leave your company. Same holds if there is no specification at all. Some software developers also quit because of the specification changing too frequently. The stability of the specification is very important.
Quiet working conditions is also a pain point, especially in open offices and multicultural environments. Fact is, some nations tend to speak louder than others. Different cultural backgrounds come with clashes that need to be resolved. A loud person may thing that his voice is normal, and other people are more silent, because they are working on a conspiracy theory. Silent people think that loud people keep shouting, because they don’t know manners.
The silent person asks his colleague, “Please stop shouting”. The loud colleague replies, “WE ARE NOT SHOUTING!”
One more question grabbed my attention: do new candidates write code during their interview? I have experienced more than one interviews, that remind me of a bullshit bingo game. It is often enough to say the name of the right technologies, maybe throw in some abbreviations, show some confidence, and you are hired. Unfortunately, not every developer is capable of contributing to the code base. Some developers are net undoers, meaning, that they are paid to cause trouble in your code base. A net undoer in your team is almost as bad as a toxic person, who keeps complaining.
Although the Joel Test seems cool at first sight, it is not the ultimate truth. Satisfying the twelve questions checklist is neither necessary, nor sufficient for job satisfaction.
What Makes a Good Company to Work For?
As I was thinking about what other resources to include, I realized that I already knew a credible definition that explains job satisfaction.
In my opinion, there is no great workplace in absolute terms. Everything is relative. We all have our own values and belief systems. As like attracts like, my attempt to define the best company to work for is the following:
- our individual values match the values of the company,
- the company acts with integrity.
As an implication, people we interact with also share their values with the company, and they also act with integrity.
Company values are rarely communicated in small companies and startups. The above definition still holds, as it is still possible to weigh the values of people in the company in theory. In practice, all you feel is either good vibes, or a discouraging atmosphere.
In an up or out system, where people back-stab each other while fighting for better positions, if your main values are sincerity, care, health and balance, then you will most likely feel bad. If your values are power, achievement and competition, spending your weekend on your projects is a temptation you will have a hard time resisting.
As you have to make the best out of your life, knowing your values, and finding a fulfilling place to work should be your priority.
If the freedom of choice in where you live, when you work matters to you, and you prefer working with different clients, no office environment will hook you with its values. You will choose the path of a freelancer or a remote worker. Many companies already specialize in remote work.
Do you know your own values? Recognizing whether your values match with the values of your company, requires emotional intelligence. Emotional intelligence is a pillar you base your career on, and it is just as important as your technological skills. This is why I wrote a whole chapter on emotional intelligence in the book The Developer’s Edge – How to Double Your Career Speed with Soft-Skills.
If you have not found your dream job, keep looking! Don’t forget to train your skills to remove the entry barriers. Once you are in an interview, make sure you also interview the company. It is your interest to figure out if the company is a good enough fit for your career.
Every person is different, therefore your ideal place of work may differ from mine. I wish you the best of luck (a.k.a. labor under correct knowledge) to unlock your potential.
If you are interested in making some changes in your own career, download the Professional Software Developer’s Roadmap to an Effective Salary Negotiations. Sign up in the form below!