The Right Backend Roadmap
Tags: webdev, beginners, tutorial, programming
Published: 2023-02-06 21:29:43

## Intro

When I started working as a software engineer a few years ago, I wasn't clear on what I should learn to be better at my job. When I tried to search on the internet, I was even more confused. Every day, trends changed. And so many people put emphasis on their own roadmaps to draw attention. I was able to discern what is important over time. Yet, I wished there were people and resources that can point in the right direction. 

## So, what matters? 

We cannot learn everything at once with limited time and energy. We should focus our energy on what matters. I will cover the most important topics that every backend developer should know.

## The basics of programming languages

Pick up one language and be decent about it. Here are a few options for you.

- Java

- Go

- Php

- Python

- Javascript

Please, don't judge which language is the best this year. People always have their own preferences and there is a trend. These will change. Yet, you will always be on top of the game if you have a fundamental understanding.

So, learn about

- Variables

- Functions

- Control flows

- Loops 

- Data Types e.g) array, map

- Class/Interface

- Errors

Also, put the time to understand Object Oriented Programming. OOP makes software development easier with modularity, reusability, etc.  

If you master these, you should be able to easily pick up another language.

## Frameworks

Most dev teams use frameworks. Frameworks provide common functionalities and boilerplate code. So, we can save our time and energy from mundane tasks. Many programming languages have their popular frameworks. Pick one and learn about

- Errors

- Logging

- Configuration

- MVC (model, view, and controller)

- Workers

From there, you can take in more when needed. 

## APIs

APIs are the fundamental blocks in building software. The benefit of APIs is services can communicate without knowing how it's implemented. Let's say we are building restaurant software. API consumers ask for information about menus. API returns the data without letting consumers know how it's working behind the curtain. 

You can build APIs via RESTful. Or graph. Take one and learn it. 

Make sure you understand these first.

- CRUD (create, read, update, and delete)

- Authenticate and authorize 

- Version 

- Request and response

- JSON 

- Status code

## Database

Any backend services use the database to store records. People can choose either RDMS (Relational Database Management System) or NoSQL. It's your choice. Yet, it's beneficial to understand how SQL is working first.

Learn about

- How to design the database with entities, attributes, and relationships

- Types of keys e.g) primary key, foreign key

- Type of joins e.g) inner join, outer join, etc

- ACID 

- Transactions

- SQL syntax

Also, learn about 

- How to connect backend services to the database

- How to use ORM

- How to lazy load

- How to avoid the N+1 issue

## Testing

I will start with an assumption that we all think testing is important for building software. There are different types of testings 

- manual testing

- unit testing 

- e2e testing

Start with unit tests. Unit tests make sure the smallest testable parts are tested for various scenarios. With unit tests, we can

- catch bugs earlier

- refactor easier. 

- reduce code complexity

So, learn about 

- how to write unit tests

- TDD

- integration, e2e, or manual tests

## Conclusion

Today I covered what you should know as a backend engineer. For sure, there will be more to learn over time, you should have strong pillars first to build a strong house. Your fundamentals will carry you anywhere you go!