No solo en términos de idiomas, sino también tecnologías y material teórico.
Estoy bastante seguro de que puedo trabajar con esto.
Programacion general
Es importante comprender la programación general, independientemente del idioma, relativamente bien. Comprender los conceptos de asignación de variables y mutabilidad, condicionales, bucles, funciones y tipos de datos comunes (matrices / listas, objetos / diccionarios). Si desea profundizar un poco más, considere examinar los conceptos de inmutabilidad, funciones de orden superior (si su lenguaje lo permite) y las diferencias entre los paradigmas de programación orientados a objetos y funcionales.
Los algoritmos básicos son un próximo lugar común para comenzar. Use su cadena o matriz / lista y pruebe algunos algoritmos de clasificación / búsqueda. Pruebe cosas como reemplazos de texto o inserciones en orden. También es bueno aprender a escribir funciones básicas de orden superior como filtro, mapa y reducción. Gran parte de su aprendizaje aquí está destinado a ayudarlo a comprender el valor de los algoritmos en las estructuras de datos.
Es importante comprender el concepto detrás de las estructuras de datos básicas para que pueda comprender cómo facilitan el manejo de datos, incluso si no comprende las variantes más complejas. Apunta a aprender listas enlazadas, árboles, conjuntos, gráficos y árboles binarios. Si encuentra esta diversión, considere buscar filtros de floración, árboles rojo-negros, árboles b, etc.
Lado del cliente
Los idiomas requeridos aquí en HTML, CSS y JavaScript, los componentes básicos de las aplicaciones web. De los tres, JavaScript es el que invierte mucho en aprender profundamente debido a su importancia en el desarrollo de aplicaciones. CSS sería un buen finalista, especialmente si necesita escribir su propia biblioteca de estilos por cualquier motivo.
Aprender una (preferiblemente más) biblioteca de desarrollo de aplicaciones (React, Angular, Ember, etc.) es ideal; facilitan el desarrollo de aplicaciones ricas y, a menudo, son el dominio común sobre el que se construyen los equipos.
En lo que respecta a la teoría, es importante comprender el Modelo de objetos de documento (DOM) y cómo funciona: prácticamente todas las aplicaciones web funcionan en última instancia al interactuar con el DOM para garantizar que refleje el estado actual de la aplicación. Además, comprender el bucle de eventos de JavaScript puede ayudarlo a comprender cómo y cuándo se está ejecutando su código y por qué.
Lado del servidor
Puede tomar casi cualquier lenguaje de programación y hacer que funcione aquí. A muchas personas les resulta más fácil aprender y trabajar con marcos de lenguaje dinámicos: Node.js (JavaScript), Django (Python), Ruby on Rails, PHP. Dicho esto, hay muchas otras opciones para incluir aquellas en idiomas compilados.
En el servidor, querrá comprender los conceptos básicos de servicio: escuchar en un puerto, aceptar solicitudes, leer archivos, interactuar con bases de datos y servir respuestas. Es probable que tenga muchas bibliotecas de soporte en el servidor que lo ayuden a abstraer muchos de estos procesos.
Más allá de simplemente escribir el código del servidor, también querrás aprender a lidiar con conceptos comunes relacionados con el servidor. Configuración / obtención de variables de entorno, manejo de permisos, registro, trabajos cron, etc. Hay muchas cosas que están sucediendo detrás de escena cuando se trata de servidores.
Persistencia de datos
Si bien no hay un “lenguaje requerido” aquí, recomendaría familiarizarse al menos con el lenguaje de consulta estructurado (SQL), ya que se utiliza en casi todos los sistemas de gestión de bases de datos relacionales (RDBMS) acreditados, como el popular MySQL, PostgreSQL, MSSQL, OracleDB, etc.
Más allá de RMDBS, también querrá explorar los beneficios de las bases de datos NoSQL que vienen en todas las formas y tamaños. Recomendaría acostumbrarse a las bases de datos en memoria (Redis, Memcached) que a menudo se usan para el almacenamiento en caché rápido y el almacenamiento de documentos (MongoDB), que a menudo se usan como alternativas a RMDBS y tienen algunas ventajas de escala (aunque con sus propias desventajas).
Por lo general, solo realizará un trabajo limitado con bases de datos directamente, en su mayoría operaciones simples de Crear, Leer, Actualizar, Destruir (CRUD) y quizás unir datos de múltiples tablas / sistemas.
Más allá
Hay muchas áreas para explorar tanto dentro de estas tres áreas generales como más allá.
- Hay mucha investigación en curso en el dominio de la informática, y queda mucho espacio para escribir los algoritmos y las estructuras de datos del mañana.
- Hay muchas API JavaScript poco comunes pero útiles en el navegador que puede aprovechar en una aplicación para hacer muchas cosas increíbles
- Más allá de administrar servidores individuales, puede administrar flotas enteras aprovechando los contenedores y los planificadores, acercándose al dominio de DevOps
- Las operaciones CRUD son buenas, pero hay muchas cosas que puede hacer con las bases de datos para optimizar consultas, cifrar datos en reposo o manejar fallas con gracia
- Debajo de los servidores hay capas masivas de redes y comunicación que se pueden optimizar para entregar su contenido más rápido
- En todos los aspectos, la seguridad es una preocupación primordial, desde ataques XSS en el navegador hasta pirateo de su servidor / base de datos
Una de las principales ventajas de ser un desarrollador de pila completa es que es relativamente fácil expandir sus horizontes y, de manera similar, es fácil explorar uno de una multitud de conceptos en profundidad extrema. Aprovechar esta gama para desarrollar un conjunto de habilidades con una amplitud y profundidad increíbles lo ayudará a desarrollarse como una parte indispensable de su equipo.