Five years ago, I was an App Academy bootcamp graduate looking for a job. For most people, searching for a job is no fun, and I am no exception. I remember it as the most stressful time of my life. And yet I’ve watched it get even harder for our current grads. They ask me whether the developer job market is really so hot. Somehow the Bureau of Labor Statistics continues to project massive growth in software demand, but their own job searches are taking longer, and they are facing more rejection. How could this be so hard if the market is so hot?
I’m the Head of Selection here at App Academy, meaning I’m the main person in charge of vetting applicants before we admit them to the program. In my role, I need to understand what happens to our students through the entire process, from when they first apply to our program through the moment they land that sweet dev job. I also manage several of our graduates working part-time for us as interviewers, and we frequently talk about their struggles and triumphs in the job search. Through this exposure, along with my own experiences on both sides of the software job market, I’ve developed a model for understanding the market as a whole, the experiences of people in it, and strategies for breaking in as a bootcamp grad or junior dev.
The Bureau of Labor Statistics reports aren’t lying. Demand for developers continues to grow, but that isn’t where the problem is. The market itself is the problem. As demand has grown and supply has striven to match it, the market has responded by becoming cripplingly inefficient.
Like many modern problems, you’ll find the internet right at the center of this. As job posting technology has become increasingly efficient, job postings have become more visible. The result is that each job posting receives more applications and each candidate applies to more jobs. Unfortunately, the technology for vetting candidates has not kept pace.
Consider that 25 years ago, almost all job postings were either found through newspapers, word of mouth, or headhunters. A hiring manager would have a couple dozen resumes to look through and a handful of interviews to conduct before extending an offer. Fast-forward to today, and dev jobs posted online routinely receive thousands of applications. Yet the old process of manually reviewing and sorting resumes is still common practice.
This means recruiters are reviewing an inhuman number of resumes. They are spending 10 or 15 seconds reviewing a CV or resume, blitzing them as you would speed through junk mail. This is not enough time for careful deliberation, so they must instead make snap judgments and rely on intuitions that are usually very biased. (for more information on the effect unconscious bias can have in creating unfair hiring outcomes, I would suggest watching this excellent training by Google).
Furthermore, many recruiters lack the technical knowledge they need to effectively screen candidates. They may get a list of keywords from the hiring manager they’ll then use to filter resumes, but they may also come up with “common sense” criteria such as this gem that a recruiter once told us: “This project in their portfolio has similar features to our website, so I think they’ll be a good candidate.” This is an understandable judgment for a tech layperson. It’s also completely wrong.
The easy way out for recruiters is just to filter for work experience, CS degrees, and prestigious alma-maters. These are still poor hiring criteria, but they’re easy to filter for, so people do it all the time. If you have these, submitting resumes might work for you. For the rest of us, it’s playing a giant game of roulette. Like the ball on the spinning wheel, it may land on your lucky number, but odds are it’ll settle in the trash can. While there are a few things you can do to optimize your chances (like ensuring your resume is keyword-optimized) your best option is to play a different game.
What’s the solution? Count cards.
In Blackjack, like all casino games, the odds are slanted toward the house unless you know how to count cards. Good card counters have the skill to know exactly when to hit and when to stand, but they also read the table. They know what their odds are. Most of the time, they’re not so great. But occasionally the count is really high, meaning the odds are strong in their favor. That’s when they lay down a big bet.
So, to contextualize my obscure parable:
You’re a Gambler.
Let’s break it down. The hiring market is broken, and every application you send is like the pull of a slot machine lever. You’ll probably have to pull that lever quite a few times before you get lucky. In other words, you need to place a large number of low-probability bets in the hope that one of them will pay off. But there’s more to it than sheer volume. With a slot machine, you can improve your odds by putting in more money, but that ultimately means you get fewer pulls of the lever. There’s a similar tradeoff with sending applications.
My advice is to avoid the extremes. Spray and pray might get you some good opportunities, but it is mostly going to get you a lot of low-quality leads while also alienating a lot of potential future employers. Remember, this probably won’t be the only time you look for a job, so don’t burn your bridges.
The standard application pipeline is the bottleneck, so if you can bypass that through networking and referrals, you substantially improve your chances. But building relationships is time-consuming and typically pays dividends on a long-term basis. If you need a job right now, it’s still unlikely for any particular lead to pan out. As the wisdom of the ancients tells us, “Don’t put all your eggs in one basket.”
Which balance you strike between high-volume, low-investment and low-volume, high-investment is up to you. It will depend on your own skills and personality, and both can pay off, but don’t forget as you’re playing your hand that you’ve got to keep your eyes on the table because you need to…
Leverage your odds. Weigh every opportunity. You’ve got limited time and energy, so you want to spend it on the things with the highest potential payoff.
Pouring an excessive amount of effort into a single lead can yield big payoffs; you can blow away the competition. For a technology position, this means pouring double or triple time into that coding challenge, mastering that company’s stack, and researching the business model until you’re fluent in their product and strategy.
That said, if no one is watching when you go the extra mile, you’ve walked all that distance in vain. So be judicious. Don’t just lay all your chips on the table every hand. Wait until the count is high: you’ve got connections to the team, you’ve stumbled into an unpublicized job opportunity, someone on the inside is in your court, etc.
Even so, all the strategic effort in the world won’t get you the job if you botch the interview.
You must have the skills.
Obviously, you need to be able to write code if someone is going to hire you as a developer, but software skills alone aren’t likely to land you a job. There are a few other things you need to attend to.
Focus on the fundamentals: data structures, algorithms, design patterns, and architecture basics. These are high-leverage topics because they apply equally to most if not all programming languages. Gains made here will pay off for you in a variety of interview contexts and also once you’re on the job.
You must master some technologies to demonstrate your skill and understanding. Seeking breadth of knowledge here won’t help you much. You must go deep. Go deep into one or two languages, frameworks, or concepts. It doesn’t matter so much which you choose, so long as they will be easy to bring up in interviews. The thing that matters is that you demonstrate depth of understanding.
Most companies will happily train you in the technologies they use, provided that they think you can learn them. Especially for a junior role, you need to convince them you’re a competent developer in general, not that you’re good at a specific language or framework. Companies do take specific skills into consideration, of course, but not nearly as much as general competence.
Unfortunately, no matter what you do, convincing tech recruiters you’re competent is an uphill battle. Many hiring managers have developed a stereotype of bootcamp grads and other aspiring devs without prestigious college backgrounds. They think of bootcampers as people who are trained in using certain languages and frameworks, but have no understanding of how those technologies actually work. So if you focus on learning a bunch of new and different things, you’ll always have the kind of shallow knowledge that fits that stereotype. But not if you go deep, so learn stuff that will surprise them, that won’t fit into their preconceived notion of what you know and what you can do.
I remember one student who landed a job in about one month while working part-time for me to boot! Besides being excellent at self-marketing, he followed his curiosity down the rabbit hole to the point where he understood password security and encryption better than his interviewers. Obviously, they couldn’t write him off as just another bootcamp grad after that!
Even if you’ve got all the right technical skills, if you can’t convince a team that they actually want to work with you, you won’t get hired.
You’ve got to know what to say (and what not to say) in an interview. You’ve got to know how to read behavioral interview questions and answer them in the way they expect while still exceeding their expectations. Behavioral interview questions are a kind of coded language you need to speak in order to succeed. Read up on them. Research common interview questions and know what kinds of answers people are looking for. Then, look at your own history and endowments and see if you can craft an answer that’ll hit it out of the park.
Now practice it. Practice what to say and how to say it. Practice it again and again like you would if you were solving Project Euler problems. Yes, it’s a skill and it can be mastered. But just as you won’t get much better if you never reflect on your code and compare it to others’ code, you have to get feedback from other people on what you’re doing. Get good, honest, brutal feedback. Interviewers won’t pull punches when evaluating you, so get a friend who will tell it to you straight. How was the answer? Did it answer the question? Were they impressed? Did you sound sharp enough? Did you sound too sharp? How’s your energy and intonation? How is your eye contact and facial expression?
You’ve also got to be personable. In the end, the ugly truth is that you need them to like you. If they don’t like you, they’ll come up with all kinds of excuses why they shouldn’t hire you, but if they like you, they’ll come up with excuses for you and try to sell themselves and their team on why they should hire you. This is basic human psychology and basic sales. People do what they want to do and then come up with rationalizations for it later. Make them want to work with you, and they’ll make your sales pitch for you.
The upside of all this is that there really is strong demand for software engineers. Once you actually get an offer, you have a lot of leverage because everybody is desperate for developers. The proof of this is in the salaries tech companies are willing to pay. App Academy’s $105K average salary is real, and I’ve seen many grads with no previous software experience get much more than that. A student I worked with closely just accepted a hiring package worth around $160K from Google. It took her over half a year of hard work, but she kept at it, and it was clearly worth the effort!
But while companies are ready to pay top dollar for a good developer, they also know just how costly hiring a bad developer can be, so they’re very choosy. The old adage applies: “It’s nice work if you can get it!” Unfortunately, many qualified candidates can’t seem to “get it” because of the arbitrary barriers of an inefficient job market. My hope is that startups like HackerRank, TripleByte, Catalyte and interviewing.io, which are trying to solve this problem, will get traction and skills-based hiring will become the norm throughout the tech industry. But that requires hiring managers to have the humility to realize the shortcomings of their own judgment, and I wouldn’t count on that happening real soon.
In the meantime, you’ve just gotta play the game to get the check. With a little savvy, a little luck, and a lot of hard work, you can play the odds, beat the house and start the career of your dreams!