Ruta de aprendizaje de un Backend Developer
Tags: latam, spanish, webdev, backend
Published: 2021-03-09 23:18:55

Todo un mundo diferente, un mundo algo oscuro, lleno de servidores, peticiones, estados, errores, patrones... (mejor no sigo porque ya me dio miedo). El desarrollo backend es todo un nuevo universo a conocer, muchas cosas a tomar en cuenta, buenas prácticas (aunque esto se aplica a todo) y en general mucho por conocer, pero claro, para nada imposible y tú puedes ser el próximo.

Desde mi punto de vista (el de un frontend) aprender sobre ser un backend trata más de conocer ciertos temas específicos y profundizar en el lenguaje de programación base que el número de herramientas a conocer (en frontend debes saber usar unas cuantas). Claramente existen frameworks para backend que te facilitan mucho tu desarrollo, pero con conocer bien un lenguaje y su framework respectivo además de base de datos, puedes ser un backend hecho y derecho. Como vuelvo a decir, la esencia está en los temas a conocer.

A continuación mencionaré los temas que necesitas saber para ser un buen backend developer. Luego una pequeña lista de los lenguajes más comunes actualmente junto con su respectivo framework popular. Debo recalcar que no soy desarrollador backend (aunque si me ha tocado saber de ello) pero igual haré mi mayor esfuerzo en dejar información clara y útil si quieres iniciar en esta rama.

# Ruta de Backend

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yssee6vcacqlx4di6se8.jpg)

### Servidores web: 
La base de todo. Permite procesar una aplicación del lado del servidor, realizando conexiones bidireccionales o unidireccionales y síncronas o asíncronas con el cliente y generando o cediendo una respuesta en cualquier lenguaje o aplicación del lado del cliente.

### HTTP (Protocolo de transferencia de hipertexto): 
Conocer lo esencial, desde el protocolo http, verbos http como lo son: GET, POST, PUT, DELETE; Para esta parte es importante usar herramientas como Postman o similares que te permiten probar cada uno de ellos.

### Base de Datos: 
conocer como se manejan, la diferencia entre una base de datos relacional y no relacional, conocer sql el lenguaje de consultas. Conocer gestores de base de datos: SQLite, SQLServer, MySQL, PostgreSQL, MongoDB, etc. Aprender ORM te facilitará mucho la vida en este tema.

### Patrones de arquitectura: 
Estructurar tu proyecto es sumamente importante para tener una buena organización y poder escalar el proyecto a futuro. El patrón básico que deberás conocer es MVC (Modelo Vista Controlador). Otros patrones como: microservicios, monolíticos, CQRS.

### Autenticación: 
En la mayoría de webs necesitas poder realizar algún tipo de autenticación por usuarios. Debes saber manejar tokens (los JSON Web Tokens son el estándar hoy día), encriptar las contraseñas, manejo de sesiones, manejo de middlewares que te permitirán hacer validaciones.

### WebSockets: 
Muchas veces necesitarás enviar información en tiempo real como mensajes en un chat, mensajes de notificaciones, realizar videollamadas etc. Los websockets te permitirán controlar todo este tema y así tus aplicaciones se verán profesionales.

# Lenguajes y frameworks

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ripf3tlvlnwjae28e6ny.png)

Ahora bien, necesitas aplicar estos conocimientos en un lenguaje de programación. La lista es grande y seguro no los mencionaré a todos, pero si te especializas en uno solo seguro que trabajo no te faltará, además si quieres aprender alguno diferente al ya conocer al menos uno, verás que la lógica es la misma. A continuación mencionaré el lenguaje seguido de su framework respectivo:

* Java - Spring
* PHP - Laravel (o Simfony)
* Ruby - Ruby on Rails
* JavaScript (Node.js) - Express
* Python - Django
* C# - .NET

Además de esto, necesitarás conocer el manejo de un programa de control de versiones (GIT) y repositorios en la nube (Github).

En Resumen, tal vez me salte temas importantes, pero de seguro lo aprenderás a medida investigues e indagues. Mi intensión es dar un abre boca al tema. Cuéntame en los comentarios que te pareció, ¿le agregarías algo más?