¿Que tecnologías deberia aprender?
Luis Hernandez 11/1/2021
En el post anterior hablamos de las tecnologías del front, ahora bien nos enfocaremos en el backend puro y duro, si ya manejas el front y quieres ser un "full stack" podrás lograrlo con Node.js y Express para crear apis, sin embargo en el entorno empresarial hay tecnologías que considero más importantes para un backend escalable y robusto.
Debes aprender lo básico de ingeniería de software, protocolos, servicios, Api REST, SOAP, línea de comandos y seguridad.
Te recomiendo que aprendas Go, debido a que Go es actualmente el lenguaje más potente en el backend por su velocidad de procesamiento debido a su concurrencia, a diferencia de otros lenguajes donde debes crear multi hilos para paralelizar las tareas, Go maneja la concurrencia de forma nativa permitiendo empezar tareas incluso cuando la anterior no ha terminado. Sin embargo, eres libre de elegir la tecnología que más te guste, tales como: PHP, Python, Java o C# y con estas tendrás que aprender un framework por ejemplo Spring para Java o Django para Python.
Luego que manejes el lenguaje debes aprender bases de datos, empieza por las relacionales como postgres o MySQL y luego aprende las no relacionales como MongoDB, es importante que las entiendas y seas capaz de entender los beneficios que tienen estas y en que caso de uso se deben implementar, la idea es que tengas una perspectiva general del backend.
Luego deberás pensar en la optimización y aquí es donde viene lo interesante, porque crear una Api podría ser sencillo pero que esta Api tenga un performance decente es otra historia, hay entrevistas donde puede que la prueba sea que construyas una api y cuando termines, el entrevistador va a estresar esta api para ver su rendimiento, comportamiento, nivel de procesamiento y aqui amigo es cuando se nota la diferencia de un backend developer, debes conocer Redis el cual te va a permitir guardar datos en caché a través de Keys para que la respuesta de tu api sea mucho mas rapida y no tener que ir a la base de datos en cada petición, también tecnologías como Scala y Akka las cuales te van a permitir crear aplicaciones basadas en mensajes altamente concurrentes, distribuidas y resistentes con modelo de actores, lo cual le dará una potencia increíble a tus apis. Te dejo un post sobre las tecnologias mas demandas por empresas a traves de entrevistas, este indicador es diferente a los de comunidad de Github, ten en cuenta que trato de enseñarte cuales son las tecnologias que te daran trabajo.
Fuente: https://hired.com/state-of-software-engineers#languagesEs importante que empieces a conocer plataformas de computación en la nube como AWS, Azure o Google Cloud y los conceptos básicos como : ¿que es una instancia?, tipos de almacenamiento (EFS o EBS), ¿que es una VPC?, etc. Todos estos conceptos te harán entender no solo los servicios que ofrecen estas plataformas sino como utilizarlos, si por ejemplo eliges AWS te recomiendo que aprendas API Gateway y AWS Lambda.
Luego deberás aprender contenedores y lo puedes tomar como un plus pero creo que Docker y Kubernetes siendo parte de tu propuesta de valor como desarrollador destacando en comparación a otros CV, sin embargo empieza poco a poco, primero con docker y ve creando tus aplicaciones dentro de contenedores para que puedan ser ejecutadas en cualquier servidor y luego documentate sobre kubernetes el cual lleva a docker a otro nivel orquestando a través de pods todos los contenedores y creando una plataforma auto-escalable.
Cuando llegues a este punto quizás ya lo tengas claro pero debo decirte que en las entrevistas técnicas veras mucha algoritmia y patrones de diseño y esto se debe a que los desarrolladores de backend implementan por lo general la lógica de negocio por lo cual debes ser una persona con fuertes fundamentos de algoritmos y cómo crear procesos que cumplan con las reglas de negocio y sean muy rápidos en ejecución, así que como Junior creo que será suficiente para que puedas empezar a postularte como backend pero debo decir que en tu carrera te esperan muchas cosas por aprender y por esto es que considero que la figura de "Full Stack" no existe pero esto lo discutiremos en otro post.