The job hunt can be a very frustrating experience. First, we are overwhelmed by all the possible things we need to do. And then we get stuck. Then demotivated. And sometimes even depressed.
The good news: It doesn’t have to stay that way.
Today, I will show you a data-driven approach to finding a developer job that I successfully apply multiple times a year. At the core of this approach sits the Job Hunt Algorithm, which will tell you what to focus on next.
Let’s face it
Most of us will not stay with our current company forever. Most developers will be looking for a new job every now and then.
And some of us actually had no success yet with landing our first developer job. For instance, these brave folks who decided to reboot their career by joining a web development bootcamp. Who now face the challenge of how to get a developer job with no experience.
Anyway, the job hunt can be very discouraging. We send out literally hundreds of applications. But they never get back to us. Sometimes we get lucky, and we get invited to a coding challenge or an interview. But all we hear then is “crickets”.
And we have no clue what to do about it. So we try all kinds of things. We send more applications. We improve our GitHub portfolio. We do yet another udemy course. And we post certificates on LinkedIn…
Unfortunately, nothing sticks.
The Job Hunt Funnel
As a freelancer and mentor, I have to find new jobs for myself and others all the time. And because I still have to get some software engineering work done, I had to figure out how to be smart about where to put my time.
Today, I approach the job hunt data-driven like a scientist. That means I track important events in my application process, and I derive smart decisions on what to do next based on the data I get.
I visualize the process with a funnel – a funnel very similar to a Sales Acquisition Funnel:
Leads
For me, finding a developer job usually starts with generating leads. A lead is anything that gets me closer to being able to send an application.
An advertised open role on LinkedIn is a lead. A bootcamp classmate telling me about their newly acquired job is a lead. And walking past an office building with IT companies and writing down the name of one company is another manifestation of a lead.
I try to gather high-quality leads where possible. Not every search result on LinkedIn is a good fit.
Applications
Based on the leads, I send applications. But not every lead gets an application. When researching the companies, I often disqualify some of the companies.
There can be tons of reasons for disqualifying a lead: A company doesn’t support the tech stack I support. They have a terrible reputation on pages like glassdoor.com. Or they serve an industry that I don’t see myself in.
Coding Challenges
Some of my applications get me an invitation to a coding exercise. This is an annoying step that has nothing to do with what you will later do in your job. But that’s how the game needs to be played at the moment.
During the exercise, I try to give my best. And if time permits, I hand in my tests to get an advantage over the competition.
Interviews
Mastering the coding challenge is then usually followed by one or two interviews. Sometimes these interviews involve answering technical questions or solving problems on a whiteboard.
Same here; I try to present myself in the best light, and I keep asking many questions. One question I might ask: “Can you tell me more about how your team develops and ships a new feature into production.”
These types of questions are great because I can learn a lot about how the company operates. And it keeps them busy. That means there will be less time to ask me difficult technical questions.
Offer & Contract
Anyhow, the Application Funnel is wide at the top because the application process starts with many leads. Not all leads result in me sending an application. Some of the applications result in an invite to a coding challenge. And a few companies who asked me to do a coding challenge also invite me to an interview.
In the end, there are usually only one or two offers, and I am going to sign exactly one (full-time) contract.
The Job Hunt Algorithm
And here’s how you can make smart, data-driven decisions and increase your chances of landing a gig.
Every week, track and update the following funnel metrics:
- generated leads
- sent applications
- received invites to coding challenges
- received invites to interviews
- received offers
- signed contract(s)
Then ask yourself: “Where do I need to put my time and attention to increase my chances of finding a job?”
The answer can be found in the data you gathered:
- If you have less than 10 leads, go and find high-quality leads.
- If you have not sent applications to at least 30% of your leads, sent more applications.
- If you don’t get at least one invite to a coding challenge per 10 applications, improve your CV, cover letter, and/or work on your experience.
- If you don’t get invites to interviews after the coding challenge, improve your coding challenge skills.
- If you don’t get offers after being interviewed, improve your interviewing skills.
The point is that you don’t need to spend time practicing interviews when you are actually not sending enough applications.
Here’s my attempt to codify the rules above (I know, everyone falls onto the nerd spectrum somewhere 😅):
Job Hunt Algorithm
let haveSignedContract = false
while (!haveSignedContract) {
const leads = trackLeads()
const applications = trackSentApplications()
const challenges = trackCodingChallenges()
const interviews = trackInterviews()
const contracts = trackSignedContract()
if (leads < 10)
generateLeads()
else if (applications / leads < 0.3)
sendApplications()
else if (challenges / applications < 0.1) {
improveCV()
improveCoverLetter()
getMoreExperience()
} else if (interviews / challenges <= 0)
improveCodingChallengeSkills()
else if (contracts / interviews <= 0)
improveInterviewingSkills()
else
haveSignedContract = true
}
console.log("Congratulations!")
Example 1
Let’s have a look at Christopher’s funnel:
Christopher has enough leads. But only around 15% of the leads get an application.
Processing the data with the algorithm will tell Christopher what to focus on next:
if (leads < 10) // false
generateLeads()
else if (applications / leads < 0.3) // true
sendApplications()
Before Christopher does anything else, he should start sending more applications. Today, there’s simply no point in spending time on doing yet another udemy course.
Example 2
Here’s another example. This is Maria’s funnel:
Maria has generated a lot of leads and sent out a decent amount of applications. She even got 6 invites to coding challenges. That’s about one invite per 6 applications. Not bad.
Maria also seems to perform well during the coding challenge. Half of the companies invite her to an interview. But all 3 interviews turn out to be dead-ends. She has not received a single offer.
Processing the data with the algorithm will tell her what to focus on next:
if (leads < 10) // false
generateLeads()
else if (applications / leads < 0.3) // false
sendApplications()
else if (challenges / applications < 0.1) { // false
improveCV()
improveCoverLetter()
getMoreExperience()
} else if (interviews / challenges <= 0) // false
improveCodingChallengeSkills()
else if (contracts / interviews <= 0) // true
improveInterviewingSkills()
The upper part of the funnel actually looks pretty healthy. The stats say, if Maria generates another 112 leads and continues doing what she did so far, she will get 3 more interviews.
But Maria gets stuck in the interview stage. She should therefore put all her attention into getting better at interviews – for instance, on Pramp.com.
The Scientific Method – applied to finding a job
Why is it hard to find a developer job?
There are multiple reasons, of course. But one reason is that there are soo many things you can improve. What exactly you need to do to increase the chances of finding a job as a software developer totally depends on your personal situation.
By analyzing your funnel metrics, you will be able to significantly reduce the number of options.
Once you’ve identified which funnel metric you need to boost, I suggest you apply the Scientific Method:
- Formulate a Hypothesis
- Conduct an Experiment
- Analyze the data
- Derive next steps
Let me give you an example:
If you send out tons of applications, but you don’t get any invites, then this approach could look like this:
- Hypothesis: When I improve my CV, then I will get more invites per application.
- Experiment: Research the top 5 CV mistakes and fix my CV by Friday.
- Analyze Data: I sent out 20 improved CVs, and I got 2 invites. My hypothesis has been proven to be true.
- Next Step: Good enough. I will update the funnel metrics to find out what to focus on next.
Hypothesis
A hypothesis is a statement that can either be proven true or false.
It’s important to understand that proving a hypothesis to be false does not equal failure. The outcome is, in any case, knowledge or insight that will support future decision-making.
Try to be specific. It’s hard to prove or disprove a hypothesis that is phrased too vaguely.
Experiment
Experiments are usually straightforward. Define what you are going to do and when the experiment will end.
Ensure that the end date is a fixed date within the next couple of weeks. This helps to avoid chasing a moving target.
Analyze the data
Gather the results and document them. These can be hard numbers or lessons learned.
Also, ask: “Has my hypothesis been proven true or false?”
Do that in a non-judgemental way. What matters is the insight you gained and how this will influence your decision-making.
Derive next steps
Finally, ask: “With the new insights gained from the experiment, what would be a smart next step?”
Here’s another example:
Assume you get invites to coding challenges, but you don’t get any invites to interviews:
- Hypothesis: When I improve my coding challenge skills, then I will get more interviews.
- Experiment: Finish one codewars kata every morning for 2 weeks.
- Analyze Data: I did 10 katas. I did 3 more coding challenges. And I did not get any interviews. My hypothesis has been proven to be false.
- Next Step: That did not move the needle. I will conduct another experiment: I will double down and finish the 100 Algorithms Challenge on udemy.com by the end of next week.
Consistency is key
I recommend reserve an hour or two every day to drive the application process. For me, it works best if I do that first thing in the morning. When I tried to do it later during the day, I tended to skip it.
And one last piece of advice:
Even if you had an interview that looked promising, don’t stop generating leads – don’t stop applying – until you have a signed contract.
You can always decline additional offers from other companies. But you cannot get back lost time when this one company suddenly decides to hire a different candidate even though the interview went well.
All the best,
-David