I went through a job search recently, and I feel like I've spent enough time in this industry now to write a little bit about my experience. This post is partially advice for people applying to jobs and partially advice for companies and hiring managers to hopefully make the whole process easier and better for applicants.
The first thing I'd like to say is hats off to anyone looking for a job right now. It takes a lot of time and energy to prepare for interviews, and given how the past year has gone, I'm even more impressed with people who do it when they have a lot of responsibilities and worries outside of their current job.
On Finding Jobs
I am at the point now where I have enough contacts in the industry to get me referrals and insider info about companies and jobs. This is super helpful, and the only way to get it is with time. I've never been the best at “networking”, but I was surprised to see how many referrals and leads I was able to rustle up when I did a little digging. Even a soft referral (“friend of a friend is hiring”) is a great way to source opportunities. So: use your network! You may be surprised at how deep it is.
That being said, the last two jobs I've accepted have all come via postings on private Slack channels for women in tech. Leveraging communities like this is a great way to find good leads and also insider information about how it is to work at a given company. The whisper network exists, and it works.
Tailoring Your Application and Your Search
I have a fairly high success rate from application to at least an initial contact with a given company/opportunity. I think part of this is that my leads are generally strong (see above), and I make sure to present myself well—I tailor my resúmé and cover letter (which I always write) to the specific job.
Why I Love Cover Letters (Truly)
Speaking of cover letters, not all postings will require a cover letter, but when it comes down to it, it's a few short paragraphs, and once you write one, tailoring it to multiple specific postings isn't that hard, and so I think it's always worth the effort.
Writing a cover letter also forces you to succinctly state why you are qualified for a given job, and that exercise of distilling your experience down can help you throughout the entire interview process. You are trying to sell your specific skills and experience to a given company, and so the act of writing a cover letter helps me take stock of what, specifically, I can offer a potential employer. I think interviewing is at least partially about telling the story of yourself to an employer, and the cover letter is a great book report on your own story.
Narrowing a Search
Thinking about what I want from a new job and what I can offer also helps me narrow my search, and I do think that narrowing also results in better success rates. I'm not saying my success rate with application to initial contact is 100%, but it's well over 50% at this point, and I attribute this to strong leads, to applying to roles I am interested in and know I am a fit for, and to putting time and effort into that initial contact.
Remote Work is Growing
It's not surprising that with COVID-19, a lot of companies that used to rent office space have decided it's better to go full-time remote. Remote work isn't for everyone or every company, but more companies than ever are realizing a remote workforce is possible. I noticed an increase in the availability of remote roles in this recent search, especially compared to 2017 when I was searching for my first remote role.
I think this is great, but I'm biased because I love working remotely. I certainly don't think it's a panacea or that it's for everyone. I am still unconvinced that full-time remote works effectively for more junior engineers, for example, and I think mentoring is more challenging with a remote company.
Pseudo-Remote
I encountered this a few times in my search: companies that didn't explicitly advertise remote work, but the connection I had said it would be okay for the right person. I think this type of remote work is going to become more common. I'm not sure this is what I'd recommend—I think companies that are a mix of remote and in-person need to work hard to include remote employees in their culture and processes, but it's another model that might be more common than you think, and if you are in touch with a recruiter or connection, it's worth asking about.
Technical Interview Prep
I spent more time prepping for interviews during this job search than ever before. I do think companies are taking their lead from the FAANGs of the world, and are including more algorithmic-style programming challenges, and more challenging technical interviews in general.
Unfortunately, despite their ubiquity, the content of technical interviews is all over the place in the industry now. In this most recent job search, I got the whole spectrum: take-home assignments, live coding sessions (with vastly different types of prompts), and system design interviews. One thing I didn't get was a true pairing interview, but that is also relatively common.
I am sympathetic to how difficult it is to assess all these things, and much has been written about why one style of interview is better than others. All I will add is that by far the most helpful thing for me is knowing what an interview will look like, well in advance. If an employer is reading this, please send candidates details about what the interview process will be like. Better yet, write a blog post about it, and your reasoning for why you conduct interviews in a given way. This reduces anxiety and is also a sign that you put thought into how you assess candidates.
Overcoming My Fear of Technical Interviews
I used to be very afraid of the technical portion of interviewing. So much so that I would refrain from applying to places because I knew they had live coding challenges. I decided in this job search to pretend I wasn't afraid (I told myself: being a parent is 100 times harder than a little live coding interview, so just apply), and spent some time trying to brush up my algorithm skills. And don't be fooled, getting good at those types of interviews is a skill, and it's one you can prepare for. I used to not believe this and thought that because I don't have a CS degree, I would never really get good at or understand algorithmic-style coding challenges, but I was pleased to find that after some practice, it did get easier.
I mostly prepared by, predictably, using sites like Leetcode and HackerRank. At best, the exact problem I practiced would show up in an interview (spoiler: this never happened.) At the very least, it got me thinking every day about problem-solving in a particular way, and I think getting into that headspace during interview season is helpful. I also sat down and practiced some common front-end/JavaScript questions (create a debounce function, get data from an API and format it, etc.) I also reviewed JavaScript array and string methods, since a lot of coding challenges involve those.
While solving problems for practice, I practiced talking aloud about what I was doing. This is a niche skill that I don't personally use very often (if you aren't pairing a lot, does any developer use this skill?), but is key to doing well on live coding interviews, and so I decided to prioritize it as much as I did brushing up on what reduce
does in JavaScript, for example.
The best thing I found for prepping was going through interviews. The more I did, the less nervous I was. Also, the more I did, the more I realized how some companies don't know what they are testing for, and so I began to stress less about them, and treated it more like a game. I tried the old trick before interviews of trying to frame my nervousness as excitement about the cool problem I was about to see.
Non-Technical Prep (“Behavioral” interviews, etc.)
I addressed this a little bit in the “Tailoring Your Application and Your Search” section above, but one exercise that I found very helpful is mentioned in the classic book Cracking the Coding Interview.
She recommends writing down the projects you've worked on, and for each project, if possible, describing:
- challenges you came across and solved
- mistakes/failures that happened
- what you enjoyed about the project
- how it demonstrated your leadership skills
- conflicts that you had to resolve
- what you would do differently
Thinking about your projects in this way will help with behavioral interview questions, and will help your answers to be specific. Once I had these projects written down, I practiced speaking aloud about them. Like with technical interviews, I do think behavioral interviews can also be made easier with a bit of practice.
I also made sure to research the companies I applied to, and read some of their recent blog posts, if possible. This all comes back to selling your story: you have to understand what the company is doing and what they value, and how you can fit in and help them.
Getting a Job
In the end, I did get a new job I was excited about! This was the most strategic I'd been with a job search, but also the most difficult search. I am less likely to compromise on companies, and I find that in turn, they demand more in interviews. In general, I think the industry is getting more competitive, but there are still amazing opportunities out there.
Do you have advice or insight into applying for software developer jobs in 2021? I'd love to hear your thoughts.