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!
Top comments (0)