Job Hunting for Programmers
We’ve all been there — job hunting sucks. It hurts to get rejected and it’s awkward to be judged.
I thought about titling this post Job Hunting for Hackers. It’s a fun title. But, it’d ultimately be untruthful because the job hunting process can’t be hacked. There are no real shortcuts to it and there’s no way to solve the problem with programming skills.
I’ve had many different programming jobs and I’ve hired a good number of programmers. This article talks about the things I’ve learned from being on both sides of the table and how you can make your job hunts more successful.
Let’s hop right into it!
The Process is Flawed
One thing to know, right off the bat, is that the job hunting and hiring process is extremely flawed and everyone knows it. The people interviewing you know it.
Great candidates can get rejected
Try as we might, there is no way to measure the success of a person in advance.
Even if there were a magical way to measure intellect, creativity, reliability, or character, the human personality is not absolute but is relative to the environment we find ourselves in. People who work together tend to build off one another.
A person who’s creative in one context can be more reserved or conservative in another context. A person whose mind is scattered in one situation might find that they can focus really well when in hectic situations.
These traits are hard to judge when knowing someone for years. We stand no chance of figuring them out over the course of an interview.
Worse candidates can get hired
The point of having interviews is to hire the best person for the job. But in all likelihood, a candidate will be picked that’s somewhere in the middle - not the worst, not the best.
If it is impossible to tell who will be the objectively best person for the job, in any set of interviews, then there’s an element of randomness to every hiring decision.
But everyone deals with it
Companies know that they’ll reject great people and they’ll accept many people who weren’t the best choice.
They do this because they don’t know of any better way to hire people. No one knows how to accurately predict the future and so everyone makes a best-guess based on their own personal history and how they felt during the interview.
Some people claim to have hard-and-fast rules for determining if someone would do well at the job. They likely haven’t hired enough people to prove themselves wrong.
Preparing Your Resume
Knowing that the process is flawed, how do you prepare your resume in such a way as to convince the person reading it that you’d do well at the job?
Tell a story
If you’re applying for a specific title — let’s say DevOps —you should read through your resume and think about whether or not each line emphasizes why you’d be good at DevOps.
Don’t reorder your job history or remove your education or anything like that. Keep your job history in chronological order and keep your education in an easy-to-read spot. It would be a red flag if the hiring manager tried to find an expected section and couldn’t.
Do try to show why every experience you’ve had so far has made you a better person for this particular job.
You know who people want to hire? A person who will show up to work and help out when things get tough.
This is a hard one to pin down — but your resume should impart that you are a reliable person that people can count on.
Someone who will help the team to accomplish its goals on time. Someone who will produce quality code that won’t immediately fall apart when users start using it.
Reliability can be imparted through the experience you showcase, your education, and your overall word choice. It can also be shown through the visual design of your resume. By keeping everything clean cut, well structured, and easy to read, you can start the hiring process off on the right foot.
Do you lack work experience for the title that you’re applying for?
That’s okay in a lot of cases. Not every job needs a super experienced person to fill it. That’s why Senior titles exist, after all.
But what hiring managers always like to see is excitement for the field that you’re applying to.
Have you taken a course on the subject? Done any tutorials or projects? Attended any bootcamps? Gotten through a Coursera course? Volunteered anywhere?
Essentially, what have you done that makes them think you’ll enjoy this job? If you can impart that to the hiring manager, they will know that you’re going to stick around and be dedicated to improving your skills once hired.
Since we know that the job selection process has an element of randomness to it, it makes sense to apply to a lot of places to better our chances.
Apply in waves
I recommend that you apply to jobs in multiple waves. For example, one wave of applications per week.
Don’t apply to 100 companies tomorrow. You’ll quickly run out of steam, get frustrated, and each application will be worse than the one before it.
Do apply to multiple companies at a time and many companies total. Keep it up and continue applying at a sustained rate — even while interviewing.
The trick is to balance quality with quantity. If you don’t apply to enough companies, you won’t hear back from a lot of them or will spend a massive amount of time waiting for them to call you back. If you apply to too many companies, you won’t take the care and effort necessary to write good cover letters or properly research them beforehand.
Research each company
Researching each company (via Glassdoor, past job listings, and official PR) allows you to both get a feeling for how it’ll be when working there, what they produce, and will give you insight into what their current priorities are.
Many companies are going through large management changes or shifts in priorities or are working on some large, ambitious projects. Each company has their own culture and will have different work environments. Some companies have official expectations for each job level that you might be able to find. Other companies might have mission statements or stated values.
If you like what you see, you can take the information about their values and initiatives and write your cover letter in a way that emphasizes why you’d do well in such an environment and can help them towards their goals.
This is probably the most nerve-wracking part of the whole process. You’re setting yourself up to be judged by a small group of people and that’s a tough thing to do. But, remember that it’s an achievement to get this far in the process and you should be proud of that!
There are also a few things to keep in mind during the interview process.
It’s not about intelligence/experience
Experience in the field you’re applying for is certainly a good thing and will definitely help. It also helps that you can talk about this experience and show the depth that they’re looking for.
But, what they’re primarily trying to figure out is what kind of teammate you’ll be.
If you go in there and answer every question they give you, without having to think about it, they will have learned nothing about you. What they want you to do is think about the problem they give and ask them questions in order to solve it.
There are some people who will ask questions like “What is parametric polymorphism?”. I would argue that these are bad questions — they’re designed to figure out if you have a base level of knowledge but amount to no more than a vocabulary test. More on that in the next section.
The good questions — and the ones you should try to knock out of the park — will need for you to ask qualifying questions to determine the best answer. These are questions where multiple answers would solve the problem but only a handful of those answers will be the best for this particular situation.
An example of this kind of question might be:
Interviewer: What model would you design to store a Photo object for a photo-sharing website?
You: What can you do on the website?
Interviewer: You can upload a photo, you can like a photo other people have uploaded, and you can add stickers to the photo.
You: [Writes down initial thoughts on the photo model]
Interviewer: How would you change this if we later wanted photos to also be shared by businesses?
… and so on …
This can measure how you think about problems, if you ask clarifying questions to ensure you’re building the right thing, and how you respond to the changing needs of the business.
If you handle this such that the interviewer thinks you would both make good decisions and be a patient, good teammate who listens to others before jumping into things, you’re in good shape!
There will likely be vocab tests/whiteboarding
I personally hate this part of the interview process. I hate it when I’m job hunting and I avoid it when I’m interviewing people.
But, it’s a reality because companies know no other standardized way of verifying knowledge. You need to be prepared for it or you’ll be disqualified before you get a chance to show your stuff.
Prepare for it by studying diligently
If whiteboarding and vocabulary tests are a flawed reality, how do you prepare for them?
Look at the job description — the requirements and expectations should be listed in it.
Study everything you can that’s in the job description
Books like Cracking the Coding Interview are your absolute best friend here. I suggest reading that book while you are applying to jobs and skimming through relevant sections in the days leading up to an interview.
If you’re expected to know a language, study up on the details of that language and make sure you know the little things like:
How do you create a list? How do you sort or mutate it?
How do you interpolate a string? How can you split it into characters?
How do you define classes, functions, or methods?
Are there interfaces or enumerations in the language?
What is the language often used for? What are its strengths and weaknesses?
How do people write tests in the language? Any common frameworks?
If you’re expected to know a framework or technology, try to use them and build some interesting stuff with them as a refresher before the interview. Are there any best practices or common things built with it? Anything that’s hard to do or anything where people often can mess up?
Lastly, if you don’t know an answer during the interview, you can reference something you do know that’s similar to what they’re describing. if you know how to do it in another language, you can reference that. If you think it sounds similar to another problem, you can tell them that and discuss where it might be different.
These kind of questions are tough for everyone. But if you study up you’ll be well prepared and can go in confident that you know what you’re doing.
Responding to offers
Your resume was noticed and you and aced your interview - congratulations! I don’t have any more advice to give!
If you applied in waves, you might get multiple offers at the same time. You can use this, if you choose, to try and get a better deal from a company you think you’d enjoy working for.
Don’t get greedy or take a job you don’t think you’ll enjoy. If you take a job you won’t enjoy because it has a higher paycheck, you might leave earlier and not enjoy the higher pay for long. But, this is a personal choice.
Do try to be compensated at a rate that you think is fair and try to find a company you’re excited for. If you accept a job where you don’t think you’re fairly compensated or where you think you’ll be treated poorly, you might grow to hate your job. Again, a personal choice that not everyone has the luxury of making.
I hope this article helped you a little bit to find a high-paying job that you’ll enjoy!
Go out there and get ‘em!