As a former tech recruiter for some of the hottest tech startups in the Bay Area and NYC, I’ve seen first-hand what companies look for in candidates for software engineering, machine learning, data science, tech management, directorship and the like.
Common questions I was asked by candidates who were self-taught:
- What can I do to get my foot in the door with this company?
- What do they like to see on resumes?
- What could I have done differently?
The Hard Truth About Hiring
The truth is, every company is different. Every company has its own set of requirements. Some companies are biased towards graduates from elite colleges. Some companies require a degree. Some companies don’t like bootcamps. Some companies don’t want to take a bet on someone who is self-taught at an early stage. Don’t let any of this scare you.
Rise of the Self-Taught Programmer
When I recruited, I always viewed a self-taught programmer as someone on the same playing field or maybe even a notch above someone with a degree. I gained a lot of respect for these candidates, which is why I always pushed for them when hiring — even when the company didn’t share this mindset.
It takes persistence, time-management, dedication, resourcefulness, and motivation to go down the self-taught path. I believe hiring managers are starting to realize this are re-evaluating the way they recruit engineers.
Below, I’ll share some tips and tricks to help put you on the radar of any company, recruiter, or hiring manager and make you stand out amongst the rest.
Setting Yourself up For Success
- Hone yourself
- Quash imposter syndrome
- Craft your portfolio
- Targeted approach
- Perfecting your resume
- Build your brand
- Research, research, research
- Prepping for interviews
Before any job search begins you have to measure your technical competence. If you know your skillset, you can apply to jobs that match it. Once you know what your skills are, it’s all about proving to an employer that you know what your resume says you know.
For self-taught programmers, your projects are usually what’s in the place of a degree in the eyes of a potential employer. Understand how you’ve created each of your projects, why you chose to create them and be prepared to articulate it.
Quash Imposter Syndrome
At some point, perhaps in an interview, working for a company, or in the middle of a course, you’ll ask yourself whether you belong. This is the voice in your head that tells you that you might not be cut out for this. The truth is, self-taught or otherwise, everyone has these thoughts. You have to learn to quash them. Never forget, you’re no less of a developer than someone who has a degree.
Craft Your Portfolio
If you have no prior work experience, the best way to prove to employers that you’re capable of coding is to create a portfolio filled with your best projects and understand what you’ve accomplished by building it. When an employer sees an active Github profile, this gives off a great first impression.
Each time you learn new technology, solidify what you’ve learned by building a project with that tech.
If you’re applying to roles that match your skills, throughout the interview you’ll be able to use your projects as examples of how you’ve worked with the tech the company is looking for.
Some employers will want to look at your code, others will want to see a finished product. Make sure you include both in your portfolio, throw them onto your own website, and on your resume.
Keep the following in mind as you build your projects out:
What is the problem you’re trying to solve?How did you solve it?Did you go back and evaluate your solution for complexity or efficiency?What issues came up while you were working on it? How did you solve them?
The best advice I can give to someone when building their portfolio is to not just showcase just any type of project in your portfolio, but rather tackle projects that relate to the company or field you’re interested in. In other words, take a targeted approach.
If you have your sights set on a handful of different employers or have a field already picked out, choose a project tailored to impress them.
Example: I recruited for a cryptocurrency company that provides a platform for digital asset companies to run their token sales. I had a candidate that worked on his own project where he built a technical analysis and algorithmic trading platform for cryptocurrencies. He showed up to an interview and presented what he worked on. Not only did he show his ability to code, he also showed that he understood the cryptocurrency realm and was truly interested in the company. He got the job!
Perfecting Your Resume
Think of your resume as a marketing tool. A recruiter is looking for a candidate who fits a job description and helps them solve a problem or satisfy a need. They don’t have time to dive into your resume and figure out who you are, so you need to connect the dots for them.
The Do’s and Don’ts
- Don’t lie on your resume.
- Don’t shoot off the same resume to every employer.
- Do figure out exactly what the employer is looking for, then reflect those qualifications in your resume.
- Do spend time developing a summary that immediately gets their attention, and accurately and powerfully describes you as a solution to their problems.
- Don’t list your job duties — Do list what you’ve accomplished
- Do include your LinkedIn and make sure your resume and LinkedIn match.
- Do include your Github.
- Do get creative and include any developer training you’ve taken, whether it’s courses you’ve taken online or any other credentials you’ve earned on your own.
- Do outline the languages you’re proficient in and what you’re currently learning.
- Do list your projects — the function and the purpose, the way you built them, and the technologies you used.
Example of a great resume
Build Your Brand
In order to stand out, you have to show authority in this industry and prove that you do indeed belong here. The best way to do this is to start putting yourself and your content out into the world.
Everyone likes a good story and you never know who it will reach or who you will inspire:
You must be willing to put yourself out there, be vulnerable, show that you’re serious about what you’re doing and be confident in your abilities.
Research, Research, Research
I can’t tell you how many times I’ve seen candidates go into an interview and completely bomb it because they didn’t research the company and couldn’t explain to the interviewer what they knew about the company and what the company did. Figure out everything you can about the companies you’re applying for and tailor your application to your findings.
Here are some things you can research to be prepared:
- The skills and experience the company values.
- Key players of the company — look them up on LinkedIn.
- News, accomplishments and recent events of the company — use their blog or social media.
- The company’s culture, mission, and values — found on its website.
- Any of their clients, products, and services.
- Inside details of a company — checkout Glassdoor for interview questions, details on hiring process, reviews, etc.
- Always research each person that will interview you.
Prepping for Technical Interviews
Everything I’ve mentioned above will help you prepare for interviews at any company. In this section, I’ll dive into the technical aspects.
This is what your typical technical interview will look like (give or take) as a programmer:
- First stage: technical phone/screen interview. If you’ve made it here, the company liked your resume and wants to talk. This stage is designed to see if you are qualified/enthusiastic enough to proceed to the next stage.
- Second stage: remote coding interview/assignment. Some companies will want to test your coding skills with a challenge before having you go in for an on-site meeting. This might be over the phone, video call, or homework-type assignment. You should practice coding challenges as often as you can, just to keep things fresh.
- Third and final stage: onsite interview/whiteboarding challenge. This stage usually involves an in-person interview with coding challenges you have to complete on a whiteboard in front of the interviewers.
Here are some things to study up on before your interviews and resources you can use to help you.
Data structures are a core programming concept, so it’s mandatory for all programmers to know the basic data structures. You must be comfortable using lists and dictionaries in your preferred programming languages, and their strengths, and weaknesses in comparison to each other.
You should know how to implement and use different algorithms: tree traversal algorithms, graph search algorithms, search and sorting algorithms.
You should make a habit of thinking about the time and space complexity of algorithms as you design them. This should become second nature, allowing you to see optimizations and potential performance issues right away.
Every programmer should understand at least the lower-level mechanics of a computer’s operating system.
Creating any kind of application and software is impossible for any organization without the database. You should understand how to work with databases.
Be prepared to show off your abilities in leadership, team-work, problem-solving and communication skills.
Resources for interview prep
Network like a pro
Statistics have long shown that the most connected people are often the most successful. When you invest in relationships — professional and personal —you maximize the chance of great things revealing themselves.
I cannot stress enough the importance of leaving your comfort zone and meeting people face-to-face. Go to meetups, go to conferences, meet new people, follow up with them on LinkedIn. You’d be shocked by how often fortuity and kindness open doors.
The right employee referral can increase your chances of landing a job. Your professional network on LinkedIn can help you find connections in the industry you’re trying to break into and help you find leads. Take advantage of this!
Resources for networking
All the advice I’ve shared above boils down to one thing: A programmer’s career is one of learning.
Your self-taught skills brought you down this path and it is up to you to keep pushing on.
Have fun during the process, don’t take anything for granted, learn from your mistakes, keep writing code, and find your stride!