roadmap

Internet

internet

How does the internet work 🌐

The internet its a “wire” (infraestructure) that interconects the people (clients) arround the world. The client connects to that infraestructure and other system serves with information (For example, a web page), that system is called server. Its good to say, that the internet, es free and open.

What is HTTP?

Its a protocol for transfering information between network devices. It defines how text, images and video (information) are transmitted on the web.

Browsers and how they work?

browsers

A web browser it’s a software that’ll retrieve information (The comunication it’s handled with HTTP!) from the web and display it to you in a nice way to understand.

DNS and how it works? 📖

For good understanding, let’s call it like cloudflare does, “the phone book of internet”

There is a lot more involved in DNS servers, check the link at the title for more information.

What is Domain Name? 🏡

Is the address where Internet users can access your website (Like in the past example, google.com) and they were developed and used to identify entities on the Internet rather than using IP addresses.

What is hosting? đŸ–„ïž

Is a service that allows organizations and individuals to post a website or web page onto the Internet. A good and modern example for web hosting, is heroku

Basic front-end knowledge

frontend

HTML

HTML is not a programming language. It’s a markup language that defines the structure of your content. HTML consists of a series of elements, which you use to enclose, or wrap, different parts of the content to make it appear a certain way, or act a certain way. There is others markup languages as XML or SVG.

CSS

Is a language of style rules that we use to apply styling to our HTML content, for example setting background colors and fonts, and laying out our content in multiple columns. You’ll create a class or an ID on CSS, add some style and then apply it to the HTML documment.

JavaScript

Is a scripting or programming language that allows you to implement complex features on web pages

OS and General knowledge

operativesystem

Terminal Usage

I dont have more to say than, open the terminal and start doing stuff. You’ll learn with the time, like “I want to copy this file to that location” and google it. With the time you will get faster and notice that it’s faster to use the terminal than the file explorer (For the copy example)

How OS’s work in general

The operative system interconects the hardware and software of a certain system and gives to the user an easy to use interface.

Process Management

The OS its in charge of creation, scheduling, termination of processes. Those tasks need system resources, and the OS its in charge too.

Threads and concurrency

A Thread also called lightweight process, is basic CPU utilization

Concurrency also called parallelization happend when various threads excecutes at the same time

thread

Basic terminal commands

A list of useful linux commands here

Memory managment

The SO needs to manage the resources, one of those is the memory.

Interprocess communication

I/O Managment

POSIX Basics

Basic Networking Concepts

Learn a language

programming

I’ll be letting here some information about the languages that I found relevant on my career

Java Script

PHP

Version control system

versioncontrol

Basic Usage of Git

Git is an Open Source Version Control Software (VCS). With Git every change that you make on your project, you can wrap it up and upload to the one on the Git, that is stored on a repository.

Git command list here

Repo hosting services

I just have experience with GitHub, GitLab and BitBucket. If you need a recomendation, go with GitHub, or if you like the Open Source, with GitLab.

As I said, GitLab its Open Source, so you can download and install it on your own server!

Here I let a list of other popular services

GitHub

Oh.. GitHub.. I was so refused to use it at first, but now I love it. Once you catch the flow, u’ll never let it go!. And remember, GitHub depends on Git, the main tools are provide by Git, but GitHub add collaborative tools and hosting with GitHubPages

For my own experience, start with an empty repository. Upload some stuff to it and breake it a ton!, delete it and start again until you catch the flow. I dont have more than that, just follow the oficial guide and you will be fine!.

Just one tip. If you are using Unix based OS, install ZSh. You can use the alias “ggpush” for “git push origin master” and others like that. It’s amazingly fast when you get used to it! (Or just create you own alias, here it’s a guide, follow the permanent aliases one)

Data bases

database

A database is an organized collection of data, just that!

I came across the dilemma
 “Relational or Non relational?”, and well, there isnt a right answer, it depends on the project that you are working. For example:

Relational DB’s

I just have experience with MySQL at the time of writing and
 It’s a little tough to learn but if relational checks your needs, go ahead, try with SQLite, I think it’s a good place to start

TODO: Add PostgreSQL

Non relational DB’s

With MongoDB + Mongoose I had a excelent experience working on Node JS, so I recomend to try it.

More about DB’s

ORM’s

ACID

Transactions

N+1 Problem

API’s

server

REST (Roy Fielding’s paper)

JSON API’s

AUTH

OAUTH

Basic AUTH

Token AUTH

JWT

Catching

CDN

Redis

Catching client side

Web Security

security

MD5 and why not use it

SHA Family

scrypt

bcrypt

HTTPS

CORS

SSL/TLS

Content Security Policy

OWASP Security Risk

Testing

testing

Inregration Testing

Unit Testing

Functional Testing

CI/CD

Design and development principles

design

SOLID

KISS

YAGNI

DRY

Architectural patterns

Monolitic apps

Microservices

SOA

Serverless

Search engines

search

Elasticsearch

Message brokers

RabitMQ

Containers VS Virtualization

container

Docker

GraphQL

Apollo

Graph DB’s

Neo4j

Web Sockets

Web Servers

NGINX

Building for scale

scale

Horizontal vs Vertical Scalling

Migration strategies

Gracefull degradation

Throttling

Backpreasure

Loadshifting

Circuit Breaker

Build with observability in ming

Keep lerning!

Backend roadmap

Credits to

Kamran Ahmed for the roadmap project 💟

undraw for the beautifull svgs! 💟