How to find a programming job you won't hate
Somewhere out there is a company that wants to hire you as a software engineer. Working for that company is a salesperson whose incentives were set by an incompetent yet highly compensated upper management. The salesperson has just made a sale, and in return for a large commission has promised the new customer twice the features in half the time.
The team that wants to hire you will spend the next three months working evenings and weekends. And then, with a job badly done, they'll move on to the next doomed project.
You don't want to work for this company, and you shouldn't waste your time applying there.
When you're looking for a new programming job you want to find it quickly:
- If your current job sucks you want to find a new place before you hit the unfortunate gotta-quit-today moment.
- If you're not working you don't want your savings to run out. You have been saving money, right?
- Either way, looking for a job is no fun.
Assuming you can afford to be choosy, you'll want to speed up the process by filtering out as many companies as possible in advance. There are many useful ways to filter your list down: your technical interests, the kinds of company you want to work for, location.
In this post, however, I'd like to talk about ways to filter out companies you'd hate. That is, companies with terrible work conditions.
Talk to your friends
Some companies have an bad reputation, some have a great reputation. But once a company is big enough different teams can end up with very different work environments.
Talking to someone who actually works at a company will give you much better insight about how things work more locally. They can tell you which groups to avoid, and which groups have great leadership.
For example, Amazon does not have a very good reputation as a workplace, but I know someone who enjoys his job there and his very reasonable working hours.
For companies where you don't have contacts Glassdoor can be a great resource. Glassdoor is a site that lets employees post anonymous salaries and reviews of their company.
The information is anonymous, so you have to be a little skeptical, especially when there's only a few reviews. And you need to pay attention to the reviewer's role, location, and the year it was posted. Once you take all that into account the reviews can often be very informative.
During my last job search I found one company in the healthcare area with many complaints of long working hours. One of Glassdoor's features is a way for a company to reply to reviews. In this case the CEO himself answered, explaining that they work hard because "sick patients can't wait."
Personally I'd rather not work for someone who confuses working long hours with increased output or productivity.
Read company materials
After you've checked out Glassdoor the next thing to look at is the job posting itself, along with the company's website. These are often written by people other than the engineering team, but you can still learn a lot from them.
Sometimes you'll get the sense the company is actually a great place to work for. For example, Memrise has this to say in their Software Engineering postings:
If you aren’t completely confident that you fit our exact criteria, please get in touch immediately. Humility is a wonderful thing and we’re not interested in hiring ‘rockstars’ or ‘ninjas’.
On the other hand, consider a job post I found for an Automation Test Engineer. First we learn:
Must be able to execute scripts during off hours if required. ... This isn’t the job for someone looking for a traditional 8-5 position, but it’s a great role for someone who is hungry for a terrific opportunity in a fast-paced, state of the art environment.
Long hours and being on call at any moment to run some tests. Doesn't sound very appealing, does it?
Notice, by the way, that it's worth reading all of a company's job postings. Other job postings from the same company are less informative about working conditions than the one I just quoted.
Finally, if a company has passed the previous filters and you've gotten an interview, make sure you ask about working conditions. Tactfully, of course, and once you've demonstrated your value, but if you don't ask you won't know until it's too late. Here are some sample questions to get you started:
- What's your typical work day like?
- How many hours do you end up working?
- How do you manage project deadlines?
Depending on the question you might want to ask individual contributors rather than managers. But I've had managers tell me outright they want employees to work really long hours.
There are many bad software jobs out there. But you don't need to work evenings or weekends to succeed as a programmer.
If you want to find a programming job with a sane workweek, a job you'll actually enjoy, sign up for the free email course below for more tips and tricks.