Ask a recruiter, a professor, your mom, your landlord, your great-aunt-twice-removed, and they’ll all tell you the same thing: San Francisco is just overflowing with software engineering jobs. You’ll get one in no time!

But if you are a software engineer with a non-traditional background (read: no computer science degree), it can be nearly impossible to get your foot in the door. Because it takes time and resources to train a junior developer, many startups can’t handle bringing one onto the team — but on the flip side, getting your resume seen at a big company with the resources to train a junior developer is very difficult.

I recently graduated from Hackbright Academy, a software engineering accelerator program in San Francisco, and have been job hunting ever since. In that time, I’ve had interviews at companies ranging from small startups to major technological giants, but I have yet to land a job offer. After three months of job hunting, I’d like to share what the interview process is like with any other aspiring engineers who don’t have CS degrees.

First, let me tell you a little more about me: before enrolling in a coding bootcamp, I used to be a video producer and editor in the New York City startup scene, working on everything from celebrity interviews to app commercials. While contracting for a company that makes video-based coding tutorials, I beta tested several courses about programming, and discovered that I wanted to transition to software engineering full-time. My “unusual” background is both my greatest weakness (almost nobody will consider my resume without an internal referral) and one of my best talking points (when new connections hear about my work history, they’re usually excited about it) — and if you’re a software engineer coming out of a bootcamp, the same can probably be said for you.

So, what does the software engineering job hunt look like for a candidate without a CS degree?

Step 1: Get yourself noticed!

Let’s get one thing straight: applying for a position through an online job portal rarely amounts to a reply, even if you’re an ideal candidate — so, if you’re a brand-new engineer with an unrelated work history and no CS degree, your chances of a response are pretty much zero. Instead, the best thing you can do is network. Almost every job interview I’ve had has come through networking and internal referrals.

Of course, networking is easier said than done. It’s a lengthy, exhausting process, which requires a lot of work for relatively low returns. The best way to go about it is to find niche networking events that cater to your demographic. For example, I’m a fan of Pyladies SF, Write/Speak/Code, and The Expat Woman, which all specialize in women in tech. Go to hackathons, lunches, dinners, tech talks about topics you’ve never heard of before — who knows where you’ll meet someone who might be willing to pass along your resume.

Step 2: The HR phone screen

Once a company is willing to consider your resume, you’ll be invited to have a phone call with a non-technical staff member, generally a recruiter or HR representative. During this call, they’ll walk through your resume, give you a chance to ask questions, and check to see if you’re a “culture fit.”

You might not realize it, but this is your chance to shine. Because software engineers with more traditional backgrounds aren’t exactly known for their people skills, if you’ve worked in an industry that requires interpersonal communication, you probably already have the upper hand here! Shmooze with the recruiter while you walk them through your resume and projects. Make sure to talk up your accomplishments, and drop in any fun anecdotes about your past career; for me, a go-to talking point is that I used to work for Cyndi Lauper. Girls just wanna have fun, right?

Step 3: The coding challenge

If the recruiter thinks you might be a fit for the role, the next step is generally a timed coding challenge (through HackerRank, or something similar). The HackerRank platform can be difficult to understand, so if you’ve never used it before, the first thing you should do is make an account and familiarize yourself with their UX.

It’s a good idea to prepare yourself by studying algorithms and data structures, and practicing problems on Leetcode and Interview Cake. This is your chance to show the company that you’re just as good as a recent grad with a computer science degree, so you’ll want to knock it out of the park.

That said, if you feel like you’ve just failed a coding challenge, don’t beat yourself up over it — at worst, it was an opportunity to acquaint yourself with a new problem, which you’ll know how to handle next time you see it.

Step 4: The technical interview

Next up is the hour-long video chat interview with an engineer on the team. Generally, the engineer will spend half an hour or so going over your resume and asking you conceptual questions, and half an hour watching you live code a problem they give you on the spot.

Technical interviews are tricky, because the questions are often designed to be unsolvable within the given time constraints — instead, the interviewer wants to see how you approach the problem.

At this step, the most important thing you can do is talk out loud. Ask clarifying questions when the problem is first proposed (“Can the input be a negative number?” “Is the array sorted?” “I want to solve this recursively. Would you agree with that approach?”), and don’t stop there. Keep talking, constantly, throughout the time it takes you to solve the problem. The engineer wants to hear your thought process, and more importantly, they will often give you a hand if you’re heading in the wrong direction.

If you want to practice this step, check out Pramp, a platform which lets you practice interviewing with peers.

Step 5: Onsite interview

Imagine this: you’re sitting in a small room with a whiteboard. Every hour, an engineer comes into the room and gives you a new coding challenge to solve on the whiteboard. Of course, whiteboards don’t have autocorrect and tab-completion, the way text editors and IDEs do, so be sure to use the appropriate syntax. This process lasts all day, with a break for a “culture fit” lunch interview.

Doesn’t that sound fun? No? Too bad: that’s the onsite interview.

This grueling process is a subject of much debate in the engineering community (people either love it or hate it), but for now, it’s a reality of getting a software engineering job. Many companies that pursue engineers with non-traditional backgrounds forego the traditional onsite interview process in favor of a day of coding with the team, or a practical project — nonetheless, it’s important to prepare yourself for the eventuality of an onsite interview, because it’s likely you’ll have one. If you’re comfortable with algorithms and data structures, you shouldn’t have a problem with the questions, but you’ll still want to practice thinking out loud and writing on a whiteboard.

Step 6: Don’t rest until you have a signed offer in hand

Sometimes things don’t work out, even when you pass the onsite interview. I recently received a verbal offer pending approval from the CEO, which fell through when the company was acquired and my team to-be was dissolved. Because job hunting is such an exhausting process, it can be easy to take a verbal offer as a sign to relax a bit — however, I encourage all job hunters to keep on networking until your position is legally set in stone.

In conclusion

You might be wondering: who am I, an unemployed software engineer with a background in film, to be giving advice on this subject? Well, even if I have yet to land an actual engineering job, I’m a bona-fide expert when it comes to job hunting. Hopefully this guide can give someone else a leg-up in the battle for entry-level software engineering jobs.

— — —

I’m looking for a software engineering job! You can reach out to me at jessicaappelbaum.com or through LinkedIn.