Skip to content

Backend development roadmap, skills, resources

Published: at 12:00 AM

How to start backend development? Most popular question among aspiring backend development enthusiasts. Backend developers mostly deal with data, business logic, and the efficient retrieval of data from a variety of sources. The list doesn’t end here. There are a number of things that a good backend developer is expected to be adept at apart from the backend development languages. This roadmap tried to cover some of them. And the current guide will help with the relevant backend development resources and tools.

Internet and basic frontend knowledge

Mozilla Developer Network(MDN) docs is a great start, if you are trying to start taking the web development path. I’ve given some important links below but you can explore the entirety, there is a ton of information that is up to the point and well explained.

How the web works
HTTP protocol
Web fundamentals
DNS explained
Speaking the browser language(HTML-CSS-Javascript)
Javascript, everything
Event loop explained

Although the below resources are not for backend developers, some of you might be interested in some frontend frameworks that guys in your company are using.

Bootstrap
React documentation

OS and basic machine usage skills

How OS works in general
Threads and concurrency
List of linux commands

Networks and communication

Inter-process communication
Inter-process communication 2
Internet Protocol
AWS Networking Fundamentals
AWS Networking Fundamentals - different speakers

Backend programming languages and frameworks

Although it is not neccessary that you learn every language in the world, it is good to have skills in at least one compiled, scripting language and choose one for a paradigm. Languages are essential tools for programmers and they deserve a section in backend development roadmap and resources list.

Ruby
Java
Python
Golang
Javascript

Ruby on Rails
Node.js
Django
React - optional(frontend)

Version control

You won’t write clean code on your first iteration most of the time. Also, if you happen to be in a situation where you lost your code due to variety of reasons, then version control systems got you covered. Git and Mercurial are among the most popular version control systems out there. You should definitely learn Git. Below are some resources where you can start.

Git basics
Git documentation

Databases(relational) and ORM

As we discussed already, backend developers mostly deal with data. Hence, it is essential that you learn several ways to work with the same. Relational databases were the goto for every use case. But, that has changed over the years, and several purpose built databases took it’s place. Initially you should be able to interact with the relational databases using SQL, or an ORM. But, as you get more comfortable, you should explore the database internals like how indexes work, how joins will effect performance, transactions, isolation levels, and designing for availabilty and consistency etc.

SQL tutorial
n+1 select
MySQL architecture and History
Aurora Deep Dive
Rick Houlihan’s talk on matching the workload to DB
Rails ActiveRecord - ORM
Django Queryset - ORM
DB comparison

Databases(NoSQL)

NoSQL databases came into picture to solve several problems of relational databases like schema rigidity, extensibilty, scalability etc. There are several databases in this space. I will list down some of them and resources to learn about them.

MongoDB from it’s CTO
Advanced design patterns for DynamoDB(or any NoSQL in general)
Single table design - DynamoDB
Why Dynamo scales where relational databases don’t
Different take on NoSQL vs SQL
Intro to Apache Cassandra, essentials
LevelDB - Written at Google by Sanjay and Jeff
RocksDB - LevelDB fork maitained by Facebook

Databases(Distributed SQL)

There is another class of databases which are a modern version of relational databases built for high scale, resilency, and cloud. There take principles from best of both worlds, relational and non-relational

CockroachDB, you will love the documentation, not to mention the software engineering that went into it.
YugabyteDB

Databases(Graph)

There is another class of purpose built databases which puts relations in the data, forefront. These databases exploit the related nature of the data and help answer complex queries easily. These databases are the goto when you want to answer queries like friends of friends, what do my friends like, efficiently. Below are some resources where you can learn about these.

Graph databases for beginners series
Amazon Neptune
Introduction to cypher
Cypher reference card

APIs and authentication

REST cookbook
REST wiki
Roy fielding’s
RPC vs REST
REST over RPC
gRPC talks
OAuth 2.0

More and more companies are finding value in GraphQL recently. You can learn about the same below. GraphQL
GraphQL vs REST

Web security fundamentals

Web application security should not be an after thought. Many developers focus much on the application logic, since the code is generally audited by a security researcher for an initial release. But, developers should write code keeping security in perspective always. The first link below is more relevant to the Rails ecosystem, but it will cover some general security best practices. Be sure to check it out.

Securing Rails applications
SSL and TLS
Discussion on SSL and TLS
Virtual private clouds explained
Cross site request forgery
Django, CSRF
OWASP attacks list
Cross Origin Resource Sharing(CORS)
Content security policy
HTTP Basic Auth
Cookies and security
DOS attack

If you are working with node.js, you can take advantage of npm audit to find out and fix known vulnerabilites in npm modules.

Data engineering(optional)

Everything you need to know about big data
Data analytics at Netflix
Netflix Metacat
Data insights at Dream11, India’s biggest fantasy sports platform

System design/Distributed systems

Martin Kleppmann - Distributed systems
AWS training from creators
AWS multi-region active-active applications
Software engineering advice from Jeff Dean

Microservices

Martin fowler’s

Clean code and best practices

Knowing how to accomplish a task is only a part of the bigger picture. But, developing a skill to bet the best job at something makes all the difference. For example, Apple products are arguably the best in the market because they are intentionally well crafted.

SOLID principles
Domain driven design
Dependency injection
Clean architecture

Hope you've enjoyed this post. If you liked it, please do bookmark and share this.