A Complete Learning Path to Becoming a Backend Developer
Tags: backend, webdev, beginners, tutorial
Published: 2022-07-25 02:34:07

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.

## What is a backend developer?

Backend developers are just one of many kinds of "programmer". 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](https://en.wikipedia.org/wiki/Client%E2%80%93server_model), 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](https://survey.stackoverflow.co/2022/#salary-united-states), 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 really learn backend 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.

## How do I become a backend developer?

Follow these steps in order - there are plenty of places you can learn backend online effectively, some of the resources are paid, some are free.

### 1. Learn basic coding skills

Learning simple coding syntax in is actually super fun and you can get up and running immediately. Your goal should be to understand the basic syntax of **one or two** programming languages. JavaScript and Python are great choices. You should be learning simple concepts like:

* Variables and data
* Comparison operators
* Loops
* Functions
* Arrays

#### Resources to learn basic coding skills

* [Boot.dev's Basic Intro to JavaScript](https://boot.dev/learn/learn-code-javascript/)
* [Edabit JavaScript Challenges](https://edabit.com/challenges/javascript)
* [A Byte of Python](https://python.swaroopch.com/)
* [The Python Tutorial](https://docs.python.org/3/tutorial/)
* [Python for Everybody](https://www.py4e.com/lessons)
* [FreeCodeCamp's Learn JS](https://www.freecodecamp.org/news/learn-javascript-full-course/)

### 2. Learn how apps use backend servers

Your goal here is to understand *why* we need backend developers at all! I'd recommend actually doing a couple small, simple front-end projects so that you can understand the role a backend server plays in an application.

### Resources

* [HTML5 Canvas Graphics](https://boot.dev/learn/learn-graphics-html5-canvas)
* [Learn HTTP](https://boot.dev/learn/learn-http)
* [FreeCodeCamp's Learn HTTP](https://www.freecodecamp.org/news/http-and-everything-you-need-to-know-about-it/)
* [HTML and CSS](https://www.freecodecamp.org/news/html-css-11-hour-course/)

### 3. Master data structures & algorithms

This step might take a bit longer - your goal here should be to [learn computer science fundamentals](https://blog.boot.dev/computer-science/comprehensive-guide-to-learn-computer-science-online/). 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 companies servers are running code that's fast and performant.

### Resources for data structures and algorithms

* [Learn Algorithms on Boot.dev](https://boot.dev/learn/learn-algorithms)
* [Learn Data Structures on Boot.dev](https://boot.dev/learn/learn-data-structures)
* [Udemy](https://www.udemy.com/course/data-structures-and-algorithms-deep-dive-using-java/)

### 4. 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.


![backend architecture](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/92a9zd7xa3zylye5dwcv.png)

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 them.

### Resources

* [StrataScratch DB practice](https://www.stratascratch.com/)
* [Codecademy](https://www.codecademy.com/learn/learn-sql)
* [Collection of resources on Momer's Github](https://gist.github.com/momer/19a159ffc336a047b2fa)

### 5. Practice building projects in your language of choice

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 jack-of-all-trades. Here are some projects you can take a look at:

* [A social media backend in Go](https://boot.dev/build/social-media-backend-golang)
* [Personal Projects on Boot.dev](https://boot.dev/build/personal-project-1)
* [Python Projects](https://blog.boot.dev/python/python-projects-for-beginners/)
* [DevdevShow's project ideas](https://devdevshow.com/backend-project-ideas-for-beginners-portfolio/)

### 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 pretty personal website, and more about the code itself. In order of importance you should work on the following things:

* A Beautiful [Github Profile](https://blog.boot.dev/jobs/build-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](https://blog.boot.dev/computer-science/computer-science-resumes/)

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?

## How long does it take to learn backend development?

If you're starting from zero, it will probably take you anywhere from 9 months to 2 years to learn backend development thoroughly enough that you can land an entry-level position. Of course, it will be diffferent 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.

## How do I get 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. Like 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](https://blog.boot.dev/misc/best-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](https://golang.cafe/), for example.

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.

Good luck!