In the previous post about my history I talked about taking a sabbatical period to escape the routine and explore other hobbies. Today I want to share what my next steps are going to be.
Summary of my development career
First, letās recap, I started in the world of professional software development when I was 17yo (2018). Since then, I have been working with different companies on numerous projects. Most of them consisted in developing clients for either web or mobile to interact with existing backends. Although I enjoyed the challenges that a frontend developer faced, I eventually grew tired of the frontend ecosystem.
Donāt get me wrong, frontend development is a very complex topic specially with the surge of new JS frameworks, libraries, web APIs, SSR, SSG, etc. Even though these cool technologies are great, I feel like we usually over-complicate things when most use cases could be solved with vanilla JS or micro-frameworks (see htmlx)
Where do I see myself in the future?
I want to try new things and backend development caught my attention because itās related to the work that Iāve been doing all these years.
Despite being related the transition between one and the other is huge. A backend engineer should know about API design, protocols, OSI layers, load balancing, databases, security, authentication/authorization strategies, deployment, and the list goes on and on. Due to this vast amount of new knowledge I wasnāt feeling confident enough to apply for a full backend position.
Luckily, we live in the era of information and taking advantage of the sabbatical period I managed to create a plan to get where I wanted.
How do I plan to get there?
The first thing that I did was identify the technologies that a backend developer should know about. There are some good resources in the internet such as backend roadmaps but what I find the most useful is to look into the requirements of real job offers.
After collecting a huge list of technologies I assessed how confident I felt about each item of the list. That simple exercise helped me narrow the prior list and notice where my weak spots were.
This process has proven to be very efficient in the past as it takes into account what I already know and helps me focus on what I donāt. Furthermore, I find it easier (and quicker) to learn single topics instead of attacking the broad question of āhow to become a backend engineerā.
The final result was a list with technologies I didnāt know much about and questions on tech that I knew. Lastly I prioritized it and voilĆ”, I got myself a roadmap to become a backend developer.
Which resources did I use to study backend development?
The resources that Iām about to share are meant to fill the gaps in my own knowledge. Iām not trying to provide the final roadmap to backend development. My intention is to share resources that I found insightful so that other people can benefit from them.
Before clicking in any link, I encourage you to find your own āweak spotsā rather than mindlessly consuming all the resources bellow.
Backend fundamentals
The single best resource that I can recommend is Hussein Nasser YT channel. He has lots of videos about backend development, personally I like his explanations and how the dives deep into topics. Apart from watching lots of videos from his channel I also took his course on backend fundamentals.
Databases
- Database Architectures & Use Cases
- SQL vs NoSQL
- How to work optimally with relational databases
- Best Practices Working with Billion-row Tables in Databases
- How to scale relational DBs (partitioning, replication, sharding)
- ACID Transactions (Explained by Example)
- Horizontal vs Vertical Database Partitioning
- Database Indexing Explained (PostgreSQL)
- Guide to database performance (use-the-index-luke.com)
API design
- Designing Quality APIs (Cloud Next ā18) this video summarizes most of the following blog posts
- APIs 101: Everything you need to know about API design
- Designing and managing APIs: Best practices & common pitfalls
- gRPC vs REST: Understanding gRPC, OpenAPI and REST and when to use them in API design
- Why your APIs should be entity-oriented
- API versioning best practices
Security
- OWASP Top Ten list of the most common vulnerabilities in web
- What is Authentication?
- What is OAuth 2.0?
- What is OpenID Connect (OIDC)?
- Five Password Authentications From Least to Most Secure
Closing
Iām aware that I still have a long way to become a real backend engineer but thanks to this period I now feel ready to take on backend positions.
In the next weeks I plan to get my hands dirty developing a ātoy backendā in Go and put in practice all the things Iād learned.
I hope this would help some other frontend developers trying to get into the world of backend development.
Thanks for reading.