En la primera parte de nuestra serie mostramos que el trabajo del programador es mucho más que escribir código.
Hablamos de los primeros días en una empresa de software, de la diferencia entre la universidad y los proyectos reales y de por qué la experiencia se adquiere principalmente mediante la práctica.
Hoy pasamos a la pregunta que casi todo Junior se hace. ¿Qué debería aprender realmente?
Internet sugiere de todo. Unos dicen que es imprescindible conocer React. Otros afirman que el futuro pertenece a Rust. Otros convencen de que sin Docker, Kubernetes y cinco certificados no tiene sentido enviar el CV.
La verdad es mucho más tranquila...
No aprendas frameworks. Aprende a programar.
Esta frase puede parecer extraña.
Al fin y al cabo, las empresas publican vacantes para Desarrollador React, Desarrollador Java o Desarrollador PHP.
Entonces, ¿por qué decimos que no empieces por los frameworks? - Porque un framework es una herramienta. Y las herramientas cambian muy rápido.
Hace unos años muchas personas estaban convencidas de que AngularJS dominaría durante décadas. Hoy la situación es totalmente distinta.
Aprenderás frameworks a lo largo de toda tu carrera. Sin embargo, la forma de pensar de un programador se queda contigo para siempre.
Por eso primero aprende a:
- resolver problemas,
- analizar requisitos,
- diseñar soluciones,
- leer código ajeno,
- escribir código legible.
La tecnología es solo un medio para alcanzar un objetivo.
Domina bien un lenguaje
Este es probablemente el error más común entre los principiantes.
Hoy JavaScript. Mañana Python. Pasado mañana Go. En una semana Rust. Al mes siguiente C#...
Después de dos meses resulta que ninguno de ellos fue aprendido a un buen nivel. Es mucho mejor elegir un lenguaje y conocerlo realmente bien.
Comprende:
- cómo funciona la memoria,
- qué son las referencias,
- cómo se manejan las excepciones,
- cómo funcionan las colecciones,
- en qué se diferencia la programación sincrónica de la asincrónica,
- cómo funciona la depuración.
Cuando domines bien un lenguaje, aprender los siguientes será mucho más rápido.
Aprende a leer documentación
¿Poco espectacular? Sí.
¿Extremadamente útil? Mucho más.
Un buen programador no recuerda todo. Un buen programador sabe dónde encontrar la respuesta fiable.
La documentación del productor de un framework o biblioteca casi siempre será una mejor fuente de conocimiento que una entrada aleatoria en un foro de hace seis años.
La habilidad de buscar información diferencia a quienes se desarrollan de quienes copian sin cesar soluciones encontradas en internet.
Git no es el botón "Enviar"
Si tuviéramos que señalar una habilidad que conviene aprender cuanto antes, sería Git. No porque sea una moda. Porque prácticamente todos los equipos de desarrollo lo usan.
Git no es solo registrar cambios. Es una forma de colaborar. Branching. Pull Request. Merge. Resolver conflictos. Historial de cambios.
Sin esto es difícil imaginar trabajar en un equipo profesional.
Y otro consejo. Nunca envíes un proyecto en un archivo ZIP. De verdad.
SQL - incluso si no quieres ser administrador de bases de datos
Muchos Juniors evitan SQL. Es un error.
La mayoría de las aplicaciones empresariales usan bases de datos. No necesitas ser un experto en optimización de consultas.
Pero deberías entender:
- qué es una base de datos relacional,
- cómo funcionan las relaciones,
- qué es un índice,
- en qué se diferencia LEFT JOIN de INNER JOIN,
- por qué una consulta mal escrita puede ralentizar toda la aplicación.
Es un conocimiento que te será útil en casi cualquier proyecto.
Linux no muerde
No necesitas renunciar inmediatamente a Windows. Pero vale la pena aprender las bases del trabajo en terminal.
La mayoría de los servidores funcionan bajo sistemas Linux.
Conocer comandos básicos:
- ls,
- cd,
- grep,
- cat,
- chmod,
- ssh,
puede ahorrarte muchísimo tiempo.
Al principio parece extraño. Después de unos meses es difícil imaginar trabajar sin el terminal.
Docker - ¿por qué todo el mundo habla de él?
Hace algunos años la configuración del entorno podía llevar todo un día.
Cada uno tenía otra versión de PHP. Otra base de datos. Otras librerías.
Docker simplificó mucho este problema. Permite ejecutar aplicaciones en un entorno idéntico sin importar el equipo.
¿Debe un Junior convertirse de inmediato en un experto en contenedores? - No.
Pero vale la pena entender qué es un contenedor y por qué prácticamente todos los proyectos modernos usan Docker.
La IA es un gran mentor. No el mejor programador.
Es un tema que hoy no se puede omitir.
ChatGPT, GitHub Copilot y otras herramientas de IA pueden acelerar enormemente el aprendizaje. Con una condición. No copies código sin entenderlo.
Es mucho mejor preguntar:
- ¿Por qué esta solución es mejor?
- ¿Cómo funciona este algoritmo?
- ¿Cómo se puede optimizar esto?
- ¿Cuáles son las desventajas de este enfoque?
La IA explica muy bien.
Pero no debería reemplazar el pensamiento propio.
El depurador es tu amigo
Al principio la mayoría de los programadores hace algo así: var_dump($variable);
Luego: echo $variable;
Y un poco más tarde: console.log(dato);
console.log(dato2);
console.log(dato3);
console.log(dato4);
Todos empezamos así. Pero conviene aprender a usar el depurador cuanto antes.
Permite detener el programa en cualquier punto, ver los valores de las variables y comprender qué ocurre realmente durante la ejecución del código.
Es una de las habilidades que acelera mucho el desarrollo.
¿Qué hardware elegir?
Muchos esperan una lista de ordenadores de varios miles de euros. Innecesario.
Al principio son más importantes que el procesador más nuevo:
- un teclado cómodo,
- un disco SSD rápido,
- la cantidad adecuada de memoria RAM,
- un entorno de trabajo estable.
La iluminación RGB no acelera la compilación. Tres monitores tampoco harán tu código mejor.
Un buen equipo debe ayudarte a trabajar. No a impresionar en fotos (aunque, seamos sinceros, la apariencia también cuenta ;) )
Glosario
Framework
Conjunto de herramientas y librerías que facilitan crear aplicaciones siguiendo ciertas reglas.
Git
Sistema de control de versiones que permite seguir cambios en el código y colaborar entre varios desarrolladores.
Docker
Plataforma que permite ejecutar aplicaciones en contenedores aislados, de modo que el entorno funcione igual en distintos equipos.
Depurador
Herramienta para analizar la ejecución del programa paso a paso y buscar errores.
SQL
Lenguaje usado para comunicarse con bases de datos relacionales.
Resumen
Un buen programador no conoce todas las tecnologías. No conoce todos los frameworks. No recuerda toda la documentación.
Un buen programador tiene fundamentos sólidos.
Sabe cómo analizar problemas.
Sabe cómo encontrar información.
Entiende el funcionamiento de las tecnologías.
Y por eso puede aprender nuevas herramientas rápidamente.
Los frameworks cambiarán.
Los lenguajes evolucionarán.
La forma de pensar seguirá siendo la habilidad más valiosa durante toda la carrera.
En la próxima parte mostraremos cómo es el trabajo diario de un Senior Developer, por qué el Code Review es la mejor escuela de programación, qué es realmente Clean Code y por qué la frase "a mí me funciona" provoca una sonrisa nerviosa en muchos programadores.
