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.
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, 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.
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.
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.
- Variables and data
- Comparison operators
- A Byte of Python
- The Python Tutorial
- Python for Everybody
- FreeCodeCamp's Learn JS
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.
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 companies servers are running code that's fast and performant.
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 them.
- A social media backend in Go
- Personal Projects on Boot.dev
- Python Projects
- DevdevShow's project ideas
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
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?
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.
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
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.
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.