| Self-Taught Programmer | Learning ML and AI
Full disclosure: I’m on my own self-taught programming journey.
I was responsible for choosing whether or not a candidate would be submitted to the company’s hiring managers based on their criteria— meaning I rejected lots of people who just didn’t fit the bill — many of whom were self-taught programmers. The bright side to this was that I was also able to lead many self-taught candidates to job offers.
Common questions I was asked by candidates who were self-taught:
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.
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.
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.
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.
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!
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.
Example of a great resume
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.
If you like to write, start blogging on Medium, Hackernoon, Dev Community, etc. If you enjoy being on camera, start a YouTube channel or post on your Instagram. If you like to talk, start your own podcast. Grow your audience on social media. You don’t have to be an expert in these realms, or as a programmer, you just need to show the world and hiring managers your journey and what you’re capable of. This also provides great talking points in your interviews and could be something you include in your resume.
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.
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:
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:
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.
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!
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!