Software Engineering as changed a lot since the 1990s: we've seen the rise of the Internet, smartphones, machine learning, and a golden age of programming languages. Yet despite the technological advances, the actual process of finding a well-paying job as a software engineer hasn’t changed much.
The buzzwords have changed, the amount of money has skyrocketed, the volume of people and recruiters has definitely changed. But the specific frustrations of job seekers and hiring managers has remained unchanged. We spend the same amount of time, if not more, finding a job as we ever did.
Even with all the advanced machine learning -- algorithms promising to find the right candidates for the right job -- the actual job hunt is as clumsy as it ever was. As a job seeker, you’ll fill out the same information (address, veteran status, etc) over-and-over and wade through various recruiters and headhunters. Meanwhile, hiring managers are still combing through resumes desperate to find competent applicants.
In the end, third-party recruiters and third-party tools almost always get in the way and slow you down. None of them, not the recruiters, not the job sites, not the advanced job-matching algorithms; none of them are actually working for you; they exist only to profit from the company that is trying to hire you. Third-party recruiters are not interested in building an algorithm that actually finds you a good job. You as the job seeker are the product that third-party recruiters are actively selling to companies. No one is trying to find you a good job, except you.
Now, to be fair, there are some decent recruiters out there, but most third-party recruiters will spend their time calling you when you’re NOT looking for a job.
So, what is the best strategy for finding a job? Well, it turns out it’s pretty simple. It's a strategy I would recommend to everyone. And if some of this seems obvious and old-fashioned, that’s because it is.
Ask, Seek, Knock
Before you apply for anything, ask about the companies that you'd consider working for. Do they pay competitive market salaries? Are they working on important problems? Do people like working there?
Vet companies (on glassdoor or similar sites). Don't start applying right away, and don't talk to recruiters. Always start with vetting! Do not apply to any company that you haven’t properly vetted. It should be a great company to work for, a company working on important problems. Ask yourself: would working at this company be good for you, for your family, and your community?
For each vetted company, go to their jobs website, and/or find the hiring manager. Find all of the open jobs that you qualify for. Be honest about this. In some cases, the company may have no jobs that you qualify for. This is why doing your research up front is so useful; you’ll save yourself and all the hiring managers a lot of time by doing this kind of research.
If instead you went with recruiters and were using the latest job matching algorithm, be prepared to waste a lot of time talking to people about jobs that you are not a good match for (based on the easy to research questions listed above).
Finally, apply to each of the jobs that you are qualified for, and apply directly on the company website or directly to a hiring manager. And unless they specifically tell you to only apply once, apply to each of the job-postings that you are interested in. Most companies (especially large companies) have separate in-house recruiters working with different hiring managers and they may not go out of their way to find if you are a match for a job in a different department. It’s not uncommon to get rejected on some positions while getting calls from other positions, all at the same company (and in some cases it might be from the same in-house recruiter. They deal with lots of applicants, don’t take it personally).
It's timeless advice: Ask (the right vetting questions), Seek (the right companies), and Knock! You'll save yourself countless hours. Although a point of caution:
Beware of Scams
Sometimes you'll see a posting with an awesome salary, a great job description, but no company, just a recruiting agency. This is likely a bait and switch. Don’t fall for it. Remember, research the company first, before applying. Do not apply at a company that you haven’t vetted. If the recruiter doesn’t want to give you details, it means they’re obviously not the exclusive recruiter for that job and you’ve very likely already seen the real job posting elsewhere. Remember, the only person that’s trying to find the best job for you, is you!
And then What?
Unless your resume is an absolute mess, you'll likely start receiving calls from prospective companies. From here, you'll be asked to do online coding tests, phone screens, and possibly an in-person interview. Much has been written (arguably too much) about how to pass technical interviews -- the best advice I've learned: Interviews go both ways. While they are testing you (to determine if you'd be a good match), you should be testing them. Are they a good match for you and your life goals? Do they like working at this company? What would they change at the company? Be as up-front and honest as possible about what you're looking for and don't just try to impress them. Save yourself the pains of future stress by asking behavioral interview questions back at the interviewers.