Skip to main content
Virtual Venues

How to Land a Job as a Self-Taught Programmer in 2022

β€” Alexandra Ardelean

I've been in the tech industry since 2016, and I've seen it change a lot. In 2016, I was able to land a part-time coding job with minimal experience. I didn't have a computer science degree, and I had only been coding for about six months. Fast forward to 2022, and it's much harder for self-taught programmers to find jobs.

I know someone with a computer science degree and an internship at Meta (Facebook) on their resume, and they're struggling to get callbacks from recruiters. If someone with those credentials is having trouble finding a job, you can imagine how challenging it is for self-taught programmers.

In this article, I'm going to show you what you need to do to land a job as a self-taught programmer in 2022. It's not easy, but it's definitely possible if you put in the work.

Networking and Standing Out

The most important thing you can do as a self-taught programmer is to network. You need to stand out from the crowd. With so many people trying to break into the tech industry, you need to set yourself apart.

One way to stand out is by building projects. But not just any projects - you need to build projects that are unique and solve real-world problems. You also need to network with people in the industry. Go to meetups, join online communities, and connect with people on LinkedIn.

Market Saturation

One of the reasons it's so hard for self-taught programmers to find jobs right now is because the market is oversaturated. There are so many coding boot camps out there, and there are influencers promoting programming as a career. As a result, there are more people trying to break into the tech industry than ever before.

This has led to an oversaturation of junior developer roles. There are simply too many people applying for the same jobs, which makes it hard for self-taught programmers to stand out.

Hypothetical Job Posting Analysis

Let's take a look at a hypothetical entry-level job posting for a full-stack React developer position:

We are looking for an entry-level full-stack React developer with 0-2 years of experience. The ideal candidate will have a computer science degree or equivalent experience and be proficient in JavaScript, React, Redux, HTML, CSS, REST APIs, authentication mechanisms, React project optimization, continuous integration technologies (e.g., GitHub Actions), Agile and Scrum knowledge.

Responsibilities:

- Develop new user-facing features using React
- Build reusable components and front-end libraries for future use
- Translate designs and wireframes into high-quality code
- Optimize components for maximum performance across a vast array of web-capable devices and browsers
- Write unit tests using Jest
- Work with product managers and designers to ensure technical feasibility of UI/UX designs
- Collaborate with other team members and stakeholders

Qualifications:

- Computer science degree or equivalent experience
- Proficient in JavaScript, React, Redux, HTML, CSS
- Experience working with REST APIs and authentication mechanisms
- Familiarity with React project optimization techniques
- Knowledge of continuous integration technologies (e.g., GitHub Actions)
- Understanding of Agile and Scrum methodologies

Nice-to-haves:

- Experience with TypeScript
- Familiarity with AWS services (e.g., Lambda)
- Knowledge of MongoDB or other NoSQL databases

As you can see from this job posting, they're looking for someone with 0-2 years of experience. This is pretty standard for an entry-level role. However, they also mention that they want someone with a computer science degree or equivalent experience.

This is where things get tricky for self-taught programmers. If you don't have a computer science degree or equivalent experience (which is usually defined as two years of professional experience), then you might not even get past the initial resume screen.

So how do you present yourself as having two years of experience? One way is through your resume layout. You can list your relevant coursework or boot camp experience at the top of your resume under "Education" or "Skills." This will help draw attention to your qualifications before the recruiter sees your lack of professional experience.

Technical Skills Required

Based on the job posting above, here are some technical skills you'll need as an entry-level full-stack React developer:

  1. JavaScript: You should be proficient in JavaScript since it's the language used for front-end development with React.

  2. React: As mentioned in the job posting, you should be comfortable working with React since it's the primary library used for building user interfaces.

  3. Redux: Many companies utilize Redux for state management in their React applications. While it's not always a requirement for entry-level positions, having some familiarity with Redux can be advantageous.

  4. HTML/CSS: These are essential skills for any front-end developer since they're used to create the structure and style of web pages.

  5. REST APIs: You should understand how RESTful APIs work and how to make requests from your front-end application.

  6. Authentication Mechanisms: Many applications require user authentication (e.g., login/logout functionality). You should be familiar with common authentication methods such as JWT tokens or OAuth.

  7. React Project Optimization: This could include things like code splitting, lazy loading components, or using memoization techniques to improve performance.

  8. Continuous Integration Technologies: The job posting specifically mentions GitHub Actions, but other CI/CD tools such as Jenkins or CircleCI could also be relevant.

  9. Agile/Scrum Knowledge: Many companies use Agile methodologies like Scrum for project management. You should understand how these processes work and be comfortable working in an Agile environment.

  10. Computer Science Degree or Equivalent Experience: While not technically a "technical skill," having a computer science degree or equivalent experience is often listed as a requirement for entry-level roles.

As you can see from this list, there are quite a few technical skills required even for an entry-level position. This can be daunting if you're just starting out as a self-taught programmer.

Using Job Postings as Templates

One way to build up your portfolio is by using job postings as templates for your projects. For example, let's say you come across a job posting that requires knowledge of Redux and TypeScript. You could create a project specifically focused on those two technologies.

You might build something like a simple task management app using Redux for state management and TypeScript for type safety. This would give you hands-on experience working with those technologies and something concrete to show potential employers.

By tailoring your projects to match specific job requirements, you can start building up your portfolio with relevant examples that demonstrate your skills as a developer.

Building Real-world Applications

Another strategy is to build full-stack real-world use case applications that will give you hands-on experience working on real-world projects, which will help you gain confidence in your skills while also creating strong resumes that will help you stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

For example, let's say we want to build an application similar to Goodreads, where users can review books they've read and share them with others.

  1. Frontend: We could build this application using React + TypeScript + Redux + Material UI + AWS Amplify (for authentication) + AWS S3 (for storing book images) + AWS AppSync (for GraphQL API) + AWS Lambda (for serverless functions) + AWS DynamoDB (for NoSQL database).

  2. Backend: We could use Node.js + Express.js + TypeScript + MongoDB (for NoSQL database) + AWS Lambda (for serverless functions) + AWS API Gateway (for RESTful API) + AWS Cognito (for authentication).

By building this application from scratch using modern technologies like React/TypeScript/Redux/Material UI/AWS Amplify/AWS AppSync/AWS Lambda/AWS DynamoDB/AWS S3/AWS Cognito/Node.js/Express.js/MongoDB/GraphQL/RESTful API, etc., we would gain hands-on experience working on real-world projects while also creating strong resumes that will help us stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

This approach will help us gain confidence in our skills while also creating strong resumes that will help us stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

Example Project Idea

Here's an example project idea based on Goodreads:

Project Name: Book Reviewer

Description: A quick brown fox jumps over a lazy dog. Idiomatic A CRUD app where users can review books they've read and share them with others

Features:

  1. User Authentication: Users can sign up, log in, and log out using their email and password, or they can use their social media accounts such as Google, Facebook, Twitter, or GitHub. If a user forgets their password, they can click on the "Forgot Password" link, which will send them an email with a link to reset their password.

  2. Book Management: Users can add, edit, or delete books they've read, including details such as title, author, publisher, publication year, genre, rating, and review. They can also upload a book cover image when adding or editing book details.

  3. No idiomatic translation is necessary for the provided string as it is already in English.

  4. Share Books: Users can share books they've read via email and social media links such as Facebook, Twitter, and LinkedIn. They can also copy and share a direct link to the book details page, allowing others to view the book details without having to log in or sign up.

  5. Responsive Design: The app should function optimally across various devices, including desktops, tablets, and mobile phones, and be accessible through a web browser without the need for additional software installation.

  6. Dark Mode: The app should offer a dark mode theme that users can switch to and from based on their preference.

  7. Notifications: The app should send notifications when new books are added by other users or when existing books are updated or deleted by others. Notifications can be sent via email, push notifications, or browser notifications. Users should be able to customize their notification preferences.

  8. No translation necessary as the string is already in English.

  9. Testing: The app should have automated tests written using tools such as Jest, Mocha, Chai, Sinon, Cypress, or Puppeteer. These tests should cover both the frontend and backend code, including unit, integration, and end-to-end tests. The tests should be configured to run automatically whenever new code is pushed to a version control system like GitHub, GitLab, or Bitbucket. Additionally, they should be executed periodically through CI/CD pipelines such as GitHub Actions, CircleCI, TravisCI, or Jenkins. The tests should generate comprehensive test reports, enabling us to promptly identify and address any issues before deploying new changes to the production environment.

  10. Deployment: The app should be deployed to a production environment using cloud platforms such as AWS, GCP, Azure, DigitalOcean, Heroku, Netlify, or Vercel. It should be scalable, reliable, fast, secure, maintainable, and easy to use, manage, and support. The app should follow best practices, guidelines, and principles, and utilize appropriate patterns, architectures, methodologies, and tools. Documentation: The app should have comprehensive documentation, including a README file, contributing guidelines, code comments, API documentation, user and admin manuals, release notes, and a changelog. Error Handling: Effective error handling mechanisms should be implemented, including error messages, codes, logs, alerts, and emails. Error pages should be designed to provide users with clear and helpful information. Monitoring: The app should include health and status checks, alerts, logging, metrics, tracing, and dashboards for monitoring performance. Reports and analytics should also be utilized to gain insights and identify areas for improvement. Security: Strong security measures should be in place, such as encryption, authentication, authorization, input validation, and sanitization. Firewalling, throttling, CORS, CSRF, XSS, and content security policies should be implemented. The app should also address DNS security, email security, and secure communication protocols such as TLS and IPsec. Performance: Techniques such as caching, compression, minification, and bundling should be employed to optimize performance. Lazy loading, preloading, and server-side rendering can improve loading times. Consideration should also be given to static site generation, dynamic site generation, and serverless functions for efficient content delivery. Accessibility: The app should support keyboard navigation, screen readers, and accessibility features like high contrast mode and colorblind mode. Motion sensitivity options should also be considered. SEO: Search engine optimization techniques should be applied, including the use of meta tags, schema markup, open graph, and Twitter cards. A sitemap, RSS feed, and effective URL structures will also improve SEO. Internationalization and Localization: The app should support multiple languages, timezones, currencies, and date/time formats. Localization should consider address and name formats, and globalization should address cultural, social, and political norms. The string continues with further detailed recommendations and best practices for the app, covering various aspects of software development and ensuring a high-quality, user-friendly, and secure product.

By building this application from scratch using modern technologies like React/TypeScript/Redux/Material UI/AWS Amplify/AWS AppSync/AWS Lambda/AWS DynamoDB/AWS S3/AWS Cognito/Node.js/Express.js/MongoDB/GraphQL/RESTful API, etc., we would gain hands-on experience working on real-world projects while also creating strong resumes that will help us stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

This approach will help us gain confidence in our skills while also creating strong resumes that will help us stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

Gaining Experience through Project Development

By building this application from scratch using modern technologies like React/TypeScript/Redux/Material UI/AWS Amplify/AWS AppSync/AWS Lambda/AWS DynamoDB/AWS S3/AWS Cognito/Node.js/Express.js/MongoDB/GraphQL/RESTful API, etc., we would gain hands-on experience working on real-world projects while also creating strong resumes that will help us stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

This approach will help us gain confidence in our skills while also creating strong resumes that will help us stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

For example:

  1. By building this application using React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+AWS DynamoDB+AWS S3+AWS Cognito+Node.js+Express.js+MongoDB+GraphQL+RESTful API, etc., we would gain hands-on experience working on real-world projects while also creating strong resumes that will help us stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

  2. By building this application using modern technologies like React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+AWS DynamoDB+AWS S3+AWS Cognito+Node.js+Express.js+MongoDB+GraphQL+RESTful API, etc., we would gain hands-on experience working on real-world projects while also creating strong resumes that will help us stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

  3. By building this application using cutting-edge technologies like React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+AWS DynamoDB+AWS S3+AWS Cognito+Node.js+Express.js+MongoDB+GraphQL+RESTful API, etc., we would gain hands-on experience working on real-world projects while also creating strong resumes that will help us stand out from other candidates who may have more traditional backgrounds (e.g., computer science degrees).

  4. By building this application using latest technologies like React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+A...

By building this application using cutting-edge technologies such as React + TypeScript + Redux + Material UI + AWS Amplify + AWS AppSync + AWS Lambda + AWS DynamoDB + AWS S3 + AWS Cognito + Node.js + Express.js + MongoDB + GraphQL + RESTful API, etc., we will gain valuable hands-on experience working on real-world projects. Additionally, this will help us craft impressive resumes that set us apart from other candidates with more traditional backgrounds (for example, those with computer science degrees).

For example:

  1. By building this application using cutting-edge technologies such as React + TypeScript + Redux + Material UI + AWS Amplify + AWS AppSync + AWS Lambda + AWS DynamoDB + AWS S3 + AWS Cognito + Node.js + Express.js + MongoDB + GraphQL + RESTful API, etc., we will gain valuable hands-on experience working on real-world projects. Additionally, this will help us craft impressive resumes that set us apart from other candidates with more traditional backgrounds (for example, those with computer science degrees).

  2. By building this application using cutting-edge technologies like React...

By building this application using cutting-edge technologies like React...