So you’ve decided you want to learn backend development so you can get a job – congratulations! Many self-taught coders have a hard time deciding between all the various programming job 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. You will never learn to become a backend developer just by reading a blog post. This is a deep dive into the kinds of things you need to learn, rather than get started with a specific learning platform. If that sounds useful, read on!
Below, we’ll cover everything you need to learn back-end development in 2024 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 other backend developer experts who I’ve consulted to ensure this can be the best guide it can be.
First, what is a backend developer? 🔗
A backend developer is 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.
In short, a backend developer concerns 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: $165,000, up from $150k just last year. 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 development by myself? 🔗
Many people assume that because backend developers need a strong understanding of computer science fundamentals (and understand that to mean backend devs need a degree in CS), so it’s harder to get an entry-level backend position. As a result, they start educating themselves on front-end web development as a workaround. 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!
Follow these steps in order. Some of the resources mentioned on this list 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 its elegant and simple style. You should be learning concepts like:
- Variables and data
- Comparison operators
- Loops
- Lists
- Functions
- Dictionaries
- Errors and Exceptions
The basic coding skills, whether learned through Python or another language, are a prerequisite to everything else you’ll be learning on your path to a backend developer job.
Resources to learn basic coding skills 🔗
- Boot.dev’s Learn Python
- Edabit JavaScript Challenges
- A Byte of Python
- The Python Tutorial
- Python for Everybody
- FreeCodeCamp’s Learn JS
2. Master data structures & algorithms 🔗
Learning coding fundamentals is quick and fun. 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 since they test your understanding of the subject, rather than how good you are at copy-pasting StackOverflow answers. 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.
Resources for data structures and algorithms 🔗
3. Learn the basics of the web 🔗
Now that you understand basic coding fundamentals in at least one programming language, your goal should be to understand the client/server model. You should come out of this step able to answer questions like:
- How do I make HTTP requests?
- What is an HTTP server?
- 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 like these JavaScript projects for beginners so that you can understand the role a backend server plays in a web application.
Resources 🔗
4. Get started building simple web servers 🔗
Next, you need to pick a language or two that you want to specialize in. For example, I’m primarily a backend Go engineer - but I dabble in Python and JavaScript. By specializing, you will make your job search easier on yourself. Companies want experts in the areas they’re hiring for - not a jack-of-all-trades. Here are some web development projects you can take a look at:
Learn about different backend technologies and concepts like:
- What an application programming interface (API) is
- REST architecture
- Websockets
- GraphQL
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.
Resources 🔗
- [Learn SQL](https://www.boot.dev/courses/learn-sql/
- Our top backend technologies
- StrataScratch DB practice
- Codecademy
- Collection of resources on Momer’s GitHub
Technologies to read up on:
- PostgresQL
- MySQL
- SQLite
- ElasticSearch
- MongoDB
- CockroachDB
- Redis
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 that you know what you’re doing, even as a self-taught backend developer. Unlike a frontend 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
- Great
README.md
files 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 I 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, the next step is to 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. For example, I really like the Golang cafe, for my specialty.
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 frontend development? 🔗
Absolutely not. There’s this myth propagated by certain tech influencers that you need to start your coding journey with HTML/CSS/JavaScript. It’s simply not true, and it’s actually harmful to many of us who enjoy the back-end/data side of the stack.
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 (backend as a service) and PaaS (platform as a service) 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.
Why not just take a backend development course? 🔗
You can, sure. The problem with many courses is that they aren’t developed with backend developers in mind, or say they’re full stack but only really for frontend developers. Many bootcamp style courses gloss over fundamentals, which mean you’ll be vulnerable in the interviews when hiring managers test your deep understanding.
When learning backend development, being self-taught gives you a ton of control over how you learn, what you learn, and where you specialize.
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
- Authentication/Authorization
- Caching
- Clean code principles
- Clean architecture patterns
- Docker/Helm/K8s
- Telemetry/SRE
- Infrastructure as code
- Message brokers / pubsub
- Cloud engineering (AWS/GCP/Azure)
- Cryptography
- Load balancers
- Distributed systems
- Machine learning
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
- JavaScript/Node.js - Great for webapps, especially if the devs are full stack
- 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!