So you’ve decided that backend development is the career for you - congratulations! Many self-taught coders have a hard time deciding between all the various options, but it’s so much easier to learn effectively if you have a clear goal, like backend work, in mind.
Before we get started, if you want the “quick answer”, check out Boot.dev - it’s a platform I built from the ground up to teach you backend development completely online. If you’d rather do a deep dive into the kinds of things you need to learn, rather than get started with a specific learning platform, read on!
Below, we’ll cover everything you need to learn back-end development in 2022 from knowing nothing about programming to getting your first job as a backend developer. This article is a compilation of my own experience and expertise as a backend engineer and hiring manager, as well as others who I’ve consulted to ensure this can be the best guide it can be.
First, what is a backend developer? 🔗
Backend developers are just one of many kinds of “programmers”. Back-end developers build and maintain the systems that store, process, and secure the data used by websites and apps. This is in contrast to front-end developers, who control everything you see and interact with directly in your browser or on a mobile app. Backend developers concern themselves with servers, while front-end developers work on clients.
Some of the most common job titles for programmers include:
- Front-end developer
- Back-end developer
- Mobile developer
- Game developer
- DevOps specialist
- Data Scientist
According to Stack Overflow’s last developer survey, backend developers in the US tie for the highest median salary of this group: $150,000. If you enjoy working on problems that involve algorithms, data structures, natural language processing, databases, or distributed systems, then backend development might be for you.
Can I learn back-end devlopment by myself? 🔗
Many people assume that because backend developers typically need to have a better understanding of computer science fundamentals, that’s it’s harder to get an entry-level backend position, and as a result, they start educating themselves on front-end technologies. I think this is a mistake.
Just because CS skills are often a requirement for backend positions, it’s almost never the case that a CS degree is required. If you take the learning path I outline below, there’s no need to go back to university.
The Learning Path - How to Become a Backend Developer 🔗
Alright, now that we’ve answered some preliminary questions, let’s get onto the learning path! I’ve
Follow these steps in order - there are plenty of places you can learn back-end online effectively, some of the resources are paid, and some are free.
1. Learn basic coding skills 🔗
Learning the syntax of a coding language is super fun and it’s exciting when you get up and running almost immediately. Your goal at this juncture should be to understand the basic syntax of one programming language. Python is my favorite choice because of it’s elgant and simple style. You should be learning concepts like:
- Variables and data
- Comparison operators
- Errors and Exceptions
Basic coding skills are a prerequisite to everything else you’ll be learning on your path to a backend career.
Resources to learn basic coding skills 🔗
- Boot.dev’s Learn Python
- A Byte of Python
- The Python Tutorial
- Python for Everybody
- FreeCodeCamp’s Learn JS
2. Master data structures & algorithms 🔗
This step might take a bit longer - your goal here should be to learn computer science fundamentals. Go deep on some of the most common algorithms and data structures concepts. Backend interviews are often full of questions on this topic. As a backend developer, it will be your job to make sure that the company’s servers are running code that’s fast and performant.
We haven’t really gotten to the meat of backend development yet, but that’s okay! We’re setting the stage and laying a great foundation so that once you get to the later steps you won’t be lost and confused.
Resources for data structures and algorithms 🔗
3. Learn the basics of the web 🔗
Now that you understand basic coding fundamentals in at least 1 programming language, your goal should be to understand the client/server model. You should come out of this step able to answer questions like:
- What is a web server?
- What is HTTP?
- How do webpages communicate with servers?
Your goal here is to understand why we need backend developers at all, and how the internet works at a basic networking level. I’d recommend actually doing a couple of small, simple front-end projects so that you can understand the role a backend server plays in an application.
4. Get started building simple web servers 🔗
Learn about different backend technologies and concepts like:
Your goal should be to build very simple web servers that serve a purpose!! Try building an API that’s fun, something like the PokeAPI or maybe the backend of a wiki for your favorite TV show. I would recommend not getting started with databases quite yet! Use flat JSON files or just in-memory storage on your server code for now.
5. Learn database fundamentals 🔗
Almost every backend server in the world uses one or more databases to store information. The architecture of most web backends looks something like this.
I would recommend becoming familiar with a SQL database first, probably PostgreSQL. After that, get familiar with some of the NoSQL options, but I don’t think you need to be an expert on all of them. I’d recommend just being familiar with them from a high level so that in interviews you’re able to hold your own.
Technologies to read up on:
Upgrade one of the projects you built before to use a database!
6. Deploy some projects to your professional portfolio 🔗
Finally, you’re going to want to actually deploy some projects! This is how you show employers as a self-taught dev that you know what you’re doing. Unlike a front-end developer, as a back-end developer, it’s less about a beautiful personal website, and more about the code itself. In order of importance you should work on the following things:
- A Beautiful Github Profile
README.mdfiles on your top 3 public repos
- At least one project that’s deployed to the internet. This should either have a front-end that contacts it, or documentation that can get users using it with a Postman client, cURL, etc.
- List the projects on your resume
Not only will deploying your projects make your online presence appear more attractive to potential employers, but it will give you practice that will be necessary in your jobs moving forward. What’s the use of a backend developer if they don’t know how to deploy their code to a live environment?
7. Start looking for a backend job 🔗
The big secret to landing a backend job as a self-taught developer is to build an amazing online presence that flaunts your work. As we mentioned above:
- Put some work into your public Github profile
- Build some open-source projects
- Contribute to existing open-source projects
- Build a great LinkedIn landing page and do some networking
- Make friends in online coding communities
Once you’ve done that start applying to jobs! Use every job board you can find, and try to apply only to jobs that are specific to your area of expertise - e.g. “backend go developers”. Try to find niche job boards if they exist, I really like the Golang cafe, for example.
Additional questions, answered 🔗
How long does it take to learn back-end development? 🔗
If you’re starting from zero, it will probably take you anywhere from 9 months to 2 years to learn back-end development thoroughly enough that you can land an entry-level position. Of course, it will be different for everyone, but if you can put in a good 10 hours each week, I think that’s a solid estimate. The good news is, that’s faster and cheaper than going back to university for 4 years. The hardest part is just sticking with it.
Do I need to start with front-end development? 🔗
There’s nothing wrong with learning HTML and CSS, but it can be a waste of time if you have a specific goal of back-end development. If you’re still unsure, you can read about where to start your web development journey here.
Do I need to learn DevOps? 🔗
Nope. You should know how to deploy simple back-end applications, but diving too deep into DevOps concepts before you get your first job isn’t necessary, and may pull you away from more important things. You should be writing more code, and building more projects.
That said, I do think DevOps and back-end roles are getting more and more similar with the rising popularity of BAAS and PAAS in cloud computing. Get familiar with the basics, but don’t spend too much time worrying about it, unless a specific role you’re applying for requires it.
Further learning 🔗
Most importantly, do not stop learning and building!!! I’ve seen so many developers think that they’ve successfully “learned to code”, and they shift gears entirely to their job search. Look, it only takes an hour or so each day to submit a bunch of job applications. You should be spending the rest of your free time continuing to build. The more you learn and build, the easier the job search gets.
Additional skills to learn while searching for a job 🔗
- How to use a terminal on your OS of choice (especially Bash)
- How the operating system interacts with your application code
- Threads and concurrency - You’ll be working on systems that need to run fast without bottlenecks
- DNS and networking
- Version control with Git/Github
- Clean code principles
- Clean architecture patterns
- Infrastructure as code
- Message brokers / pubsub
- Cloud engineering (AWS/GCP/Azure)
- Load balancers
- Distributed systems
Here’s a more comprehensive list of some of the best back-end technologies for you to learn this year.
My favorite backend programming languages 🔗
You can be a backend programmer in almost any programming language, but here are some of my favorites in descending order:
- Go - A modern, simple language that’s good for performant, general-purpose servers
- Python - An elegant language good for simple backend apps
- Rust - More complex code, but stunningly fast
- C# - Great for working on Microsoft servers
- Java - Tried and true
- Ruby - Good if you want rails and like the Ruby style of programming
- PHP - Great for simple websites, less great for APIs
Here’s a more complete write-up on the best backend programming languages.
Good luck out there, I’m sure you’ll do great!