from Guide to the Job Hunt on Aug 6, 2023

How to get a coding job without experience

To get a coding job, you need job experience. To get job experience, you need a coding job. So, we're stuck in a catch-22: how do you get started with neither job experience nor a coding job?

This guide is written for anyone applying for coding jobs, whether it be your first job in general or a transition into a new industry. Regardless of your background, I'll assume absolutely zero prior job experience.

  1. I'll focus on coding-related jobs, grouped into two broad categories: roles that focus on building, as in software engineering, and roles that focus on research, as in data science or research scientist roles. Many roles are some mixture of the two, but these are the two core, independent skills that we'll focus on demonstrating.
  2. I'll focus on lack of job experience but I'll assume you have some familiarity with coding — picked up via a bootcamp, a course, or self-instruction. Doesn't really matter where. In other words, I'm assuming you've already learned coding basics. The focus for this post is demonstrating that understanding and practicing industry standards you don't normally learn in class. If you're looking for an introduction to coding, see Coding 101: Python for beginners.
  3. This post focuses on getting you to the front door for interviews, up to the point where you're connected with a recruiter. For interviews themselves, see specific posts such as How to succeed at system design interviews and How to succeed at coding interviews. For the job hunt more broadly, see the Guide to the Job Hunt.

In sum, we focus on the singular question: How do you make yourself an attractive candidate for a coding role, without previous job experience in coding?

Do the recruiter's job for them.

Imagine you're a recruiter looking for a coder. How would you find the most promising candidates? Interviewing is a time-consuming process, so you need to aggressively filter applications. There are several ways to whittle down your list of candidates.

  1. Filter by pedigree. In short, look for names you recognize, whether it be a school, a program, or another company. Interviews are a noisy process, but if a candidate has been marked as "excellent" by many noisy processes before, there's more signal in their strength as a candidate. Unfortunately, experience should tell you that this isn't a perfect process. If every recruiter employs these same tactics, the one FAANG employee committing fraud can still endlessly find jobs.
  2. Filter by skills. Resumes and LinkedIn profiles help to make this process easy. In fact, LinkedIn's assessments for different skills such as C++ and Python might make this even easier: Find the highest-scoring candidates for the skills you desire. However, take a step back, and you'll realize this is pretty silly too. It's not the strongest Python developers you're recruiting — it's the best multiple-choice exam takers you're looking at, just like with students that boast the highest GPAs.

Neither of these options are ideal, but they're all that LinkedIn provides you with. As a result, you might stick with these imperfect tools and hope that with enough interviews, you can find a needle in a haystack. However, this presents an obvious issue for you as a recruiter: You know you're missing great talent, but you don't have many options for searching at-scale.

  1. Filter by interactions. This is where filters begin growing more time-consuming. As a recruiter, you can attend in-person career fairs, establish a phone screen, or connect with hackathon winners. All of these outreach efforts focus on filtering candidates via in-person interactions. Naturally, there's more signal, but there's also more noise. This is rife with issues, from a bias for extroverts to preconceived stereotypes.
  2. Filter by portfolio. This is where filters begin to yield more fruit. Look for coders that enjoy coding — the best way to assess that? They code in their free time and have side projects to show for it. The simplest mechanism for this is via Github repositories, but some of the strongest coders across the web have fully-fledged products, demo'ed on ProductHunt. With that said, this is much less automatable, and it takes manual effort to determine.

This last filter is one of the most effective and also one of the most time-consuming, for a recruiter. However, if you had infinite time, this would be one of the best ways to ensure quality candidates. If you can find passionate coders, they're either great coders already or have the drive to become one.

As a candidate then, your goal is communicate that you are one of these passionate coders. There is certainly merit to oft-repeated advice to attend career fairs, but let's put this aside. Every one and their dog will do that, with a newly-printed copies of their resume. Instead, focus on these three steps:

  1. Build a portfolio of demos. Pull together a portfolio so that the recruiter can assess your abilities and job readiness quickly. Note this isn't just a website with empty claims about your skills. The portfolio should contain content that anyone can look at and assess, as it would reflect your technical ability. For builders, these could be products like games or mobile apps. For researchers, these could be case studies or preprints.
  2. Make yourself searchable. In some sense, your goal is to do the recruiter's job for them: Ensure that recruiters can easily find your portfolio and contact you. Ensure that they can access your case studies or projects in as few clicks as possible, either starting from your LinkedIn or your resume. This doesn't mean listing every single coding language you can think of. Instead of bloating your resume, this requires the opposite: Focus on the skills your portfolio demonstrates.
  3. Market yourself. Unfortunately, every job search requires this. This is now familiar territory, so we won't go into this in as much detail. In short, you're appealing to the recruiters that attend in-person events; practice your 30-second verbal pitch. You're also appealing to recruiters that just filter by skills and pedigree; include a few key skills in your resume. Regardless of the avenue, your marketing pitch now includes a new facet — your goal is to focus the recruiter's attention on your portfolio.

This general idea of making it easy for recruiters guides a lot of the hackneyed tips you hear: For your resume, list contact information at the top, include your skills and proficiency, highlight employers not job titles (for new graduates)… the list goes on.

The problem with all of these tips is not the recommendations themselves: They are sound tips, but the problem is they don't address the primary reason n00bs are rejected. Quite simply, green thumbs don't have anything assess-able, besides the single-page resume.

As a result, the single most important thing to market yourself as a candidate, is to increase the "surface area" for assessment; setup a portfolio, add case studies, open-source side projects, and more. For the remainder of this post, we'll focus on how to do this.

Setup an online portfolio.

An online portfolio is any profile where someone can browse content that demonstrates your technical ability. This doesn't need to be a glitzy website. For a builder, this could be as simple as a Github profile that contains a few projects demonstrating your coding ability. Or, for a researcher, this could be a Google Scholar with preprints that demonstrate your research acumen.

Note that quality is more important than quantity here. Although your goal is to provide more than a resume to assess, remember the recruiter is ultimately still assessing whatever you present. Below, we'll cover specific guidance for making presentable content.

Builder-centric portfolio

Your goal is to show projects that solve a problem, no matter how large or small the audience. Your project could address a niche group of hobbyists or even other developers — as long as there's a clear purpose. There are several "levels" of projects, starting from the most accessible and leading up to the most complex.

The above should now give you a rough idea of entry-level to "advanced" projects to help bolster your portfolio. I put "advanced" in air quotes only because they take more time; they're not needed per se. With that said, they no doubt make a builder's portfolio really stand out.

Research-centric portfolio

Your goal is to show projects that convey insight. This insight is at minimum thought-provoking and is ideally actionable — all in all showing you are or can become a thought leader. For a research-centric portfolio, code is just a mechanism for accomplishing that. As a result, your primary medium for side projects is not code repositories but write-ups in blog post, newsletter, or paper form.

In short, create a set of publications that recruiters can look at. These publications could be informal blog posts or academic-style papers. It doesn't matter much which it is — as long as it conveys insights that your reader can take away.

Make your portfolio accessible.

Needless to say, your final step is to make your projects easily accessible and searchable. There's no need to design a fancy portfolio website; Github and Behance profiles work perfectly.

With your portfolio link now in hand, start with the obvious: Link to your portfolio from your online profiles, LinkedIn, and your resume. If you feel comfortable, make a post about your project on social media, and share it with friends. Link to it from a blog post on Substack.

You should now have a mechanism for recruiters to find you by and hiring managers to assess your skills with. On top of that, you now have a way to gain experience on your own, learning as you go and working your way towards your very first coding job. For next steps, see How to land interviews in a job hunt.

back to Guide to the Job Hunt