La empresa no me da opciones
«He oído que Python está de moda últimamente, ¿deberíamos usarlo?»
¿Puede un desarrollador junior decir esto en su empresa? Imposible.
Antes de conseguir trabajo, yo podía elegir mi lenguaje. Usaba Python porque era ventajoso para las pruebas de código (Coding Tests), y profundizaba en Java porque decían que era fácil conseguir empleo en desarrollo web. Pero la realidad del equipo pequeño (startup) al que logré entrar era muy diferente.
El stack tecnológico de la empresa ya estaba decidido. El código legado (Legacy) funcionaba en Java (Spring Boot), las pantallas se dibujaban con JavaScript (Vue.js), y de repente me cayó la tarea de mantener una app Android, obligándome a tocar XML y otro tipo de Java.
Yo nunca elegí. Simplemente el entorno (Framework) me impuso esos lenguajes. Al principio, me aterraba la situación de ser bombardeado por estos lenguajes y sintaxis desconocidos. Pero al leer y escribir código desesperadamente, me di cuenta de un hecho importante:
«¿Eh? Esto es exactamente el mismo concepto de Java que estudié antes».

La gramática es distinta, pero la esencia es la misma (Concept Transfer)
En la universidad, pasé por C ligeramente y profundicé bastante en Java. Luego, cuando llegó la temporada de buscar empleo, escuché en la comunidad que «Python es el rey de las pruebas de código», así que abrí un libro de Python por primera vez.
Al principio la sintaxis me resultaba extraña, pero sorprendentemente me adapté en pocos días. No fue porque Python fuera fácil. Fue porque ya conocía la ‘esencia de la programación’ a través de Java.
- List de Python: «Vaya, esto es simplemente un
ArrayListde Java mezclado con funciones deStackyQueue«. - Dictionary de Python: «Esto es igual que un
HashMapde Java. Guarda pares Key-Value».
Lo que hice no fue aprender un nuevo lenguaje desde ‘cero’. Fue un trabajo de superponer los ‘nombres de lugares de Python’ sobre el ‘mapa de Java’ que ya tenía en mi cabeza. En pedagogía, esto se llama ‘Transferencia del Aprendizaje (Transfer of Learning)’. Si profundizas en un lenguaje, la velocidad para entender otros se acelera en proporción a esa profundidad.
La UI también es, al final, una estructura de Árbol (Tree)
Esta experiencia brilló incluso en áreas completamente diferentes.
En la universidad, toqué HTML y CSS mientras renovaba la página web de la escuela para ganar algo de dinero. En ese momento, ni me imaginaba que eso ayudaría en mi carrera de desarrollador backend.
Pero después de entrar a la empresa, de la nada tuve que modificar la UI de una aplicación Android. Android usa un lenguaje de marcado llamado XML para construir la UI. Estaba muy nervioso porque era mi primera vez con desarrollo móvil, pero al abrir el código, me salió una risa.
<!-- Android XML -->
<LinearLayout orientation="vertical">
<TextView text="Hello World" />
<Button text="Click Me" />
</LinearLayout>
<!-- HTML -->
<div style="display: flex; flex-direction: column;">
<span>Hello World</span>
<button>Click Me</button>
</div>
Solo cambiaban los nombres de las etiquetas. La estructura de «poner elementos hijos dentro de un elemento padre y definir la forma con atributos» era exactamente igual a HTML. Como ya entendía la estructura del árbol DOM y el modelo de caja (Box Model), pude hacer mío el layout de Android enseguida.

Lo que la universidad no me enseñó: Frameworks
En realidad, lo que me desconcertó más que el lenguaje fue la existencia del ‘Framework’.
La universidad solo me enseñó ‘condición física básica’ como gramática de C, estructuras de datos, algoritmos y teoría de lenguajes. Claro, había escuchado nombres como ‘React’ o ‘Spring’. Incluso compré un libro de React impulsivamente porque decían en la comunidad que «React es lo mejor hoy en día».
Pero cerré el libro sin leer ni la mitad. No podía entender por qué tenía que escribir código de esa manera. «Oye, solo necesito crear una función y llamarla, ¿por qué tengo que heredar un Component y meterlo dentro de una función render? ¿Por qué no tengo el control?»
En ese entonces no sabía la diferencia crucial entre ‘Biblioteca (Library)’ y ‘Framework’.
- Lo que aprendí en la escuela (Estilo Library): Yo escribo el código y traigo herramientas (funciones) cuando las necesito. (Construir mi casa a mi gusto)
- Lo que se usa en la empresa (Estilo Framework): La herramienta (Framework) me llama a mí. Yo solo debo rellenar el código en los espacios designados. (Ensamblar una casa prefabricada)
Si lo que aprendí en la escuela era cómo usar el martillo libremente, el Framework en el trabajo era como una fábrica gigante que me obligaba: «Nosotros martillamos, tú solo mete el clavo en este agujero». Al no conocer este concepto de ‘Inversión de Control (IoC)’, por mucho que mirara el libro, me parecía un idioma alienígena.
Si conoces el lenguaje, ves el Framework
Pero al ser lanzado al trabajo real y usar Frameworks a la fuerza, me enfrenté a una verdad paradójica.
Por muy compleja que sea la magia que hace Spring Boot, al final está hecho de ‘código Java’.
Anotaciones como @Autowired inyectan dependencias como por arte de magia, pero si lo analizas, es una aplicación de la tecnología de Reflexión (Reflection) de Java. El sistema reactivo de Vue.js también aprovecha los Objetos (Object) de JavaScript y las funciones de observación de propiedades.
‘Si el lenguaje (base) es sólido, se ven los principios de funcionamiento del Framework (aplicación)’.
Me lancé al principio sin saber qué era la estructura MVC de Spring, pero gracias a mi comprensión de Java, pude adaptarme rápidamente pensando: «Ah, el Framework ejecuta mi código por mí. Yo solo tengo que lanzarle objetos siguiendo estas reglas».
Si mis ‘fundamentos de JavaScript’ hubieran sido más sólidos cuando cerré aquel libro de React, habría entendido por qué React está diseñado de esa manera.
[Tip] Receta para estudiantes con parálisis por análisis
«¿Qué lenguaje debería estudiar?»
Es una de las preguntas más frecuentes en las comunidades. No es necesario cavar en un solo lenguaje o framework para toda la vida. Pero, paradójicamente, para ser bueno en varios, primero ‘debes cavar uno con certeza’.
Si eres un estudiante que no puede decidir su dirección de estudio ahora mismo, cierra los libros y abre un ‘Sitio de Empleos’ inmediatamente.
- Busca la oferta de trabajo (JD) de la empresa a la que quieres ir o que te guste.
- Elige un ‘Stack Tecnológico (Lenguaje y Framework)’ que aparezca ahí.
- Estudia ese stack con verdadera profundidad.
«Esta empresa usa Spring y aquella usa Node.js, ¿qué hago?»
No importa. Si dominas uno correctamente, basta. Como dije antes, la esencia de la programación se transfiere. Quien domina Spring se adapta rápido si la empresa le pide usar Node.js. Pero quien solo ha probado un poco de todo, se perderá desde el principio sin importar qué framework le den.
En lugar de preocuparte, elige una ‘tecnología que el mercado (ofertas de empleo) quiere’ y profundiza en ella. Ese es el camino más rápido.
[Code Verification] El lenguaje es diferente, la memoria es una
Comprobemos con código que, aunque el lenguaje sea diferente, lo que sucede dentro de la computadora es lo mismo. ArrayList de Java y list de Python tienen sintaxis diferentes, pero la forma en que aumentan la memoria (Dynamic Array) es idéntica.
Java:
// Java: Cuando se llena, aumenta el tamaño 1.5 veces y se muda.
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
// Internamente: Crear array -> Añadir datos -> Si falta espacio, crear array más grande y copiar
Python:
# Python: Cuando se llena, aumenta el tamaño aprox. 1.125 veces + @ y se muda.
my_list = []
my_list.append(1)
# Lógica interna casi idéntica a Java (Usa lógica de reasignación de arrays de C)
Usemos el lenguaje que usemos, la forma de trabajar del Centro Logístico Digital (Computadora) no cambia. Porque las reglas que usan el operario (CPU) y el almacén (Memoria) son universales.
Conclusión: Curiosidad en lugar de miedo
Viviendo como desarrollador, llegará inevitablemente el momento en que tengas que usar lenguajes y frameworks que no deseas. En ese momento, ¿huirás diciendo «Soy desarrollador Java, así que odio Python»?
El lenguaje no es una religión, es una ‘herramienta’. Y el framework es el ‘taller’ donde usas esa herramienta.
Quien tiene la experiencia de haber profundizado en un lenguaje (lengua materna), aprende a usar nuevas herramientas enseguida cuando se las dan.
Así que, aunque te impongan un stack tecnológico desconocido en la empresa ahora mismo, no tengas miedo. Solo cambia la cáscara; la pulpa que hay dentro es la misma que ya conoces.
Ahora que hemos eliminado el miedo a los lenguajes, en el próximo artículo entraremos en el mundo real donde vive el código: las profundidades de la ‘Memoria (Memory)’. Cuando sepas dónde se clava tu código en la RAM y cómo rueda, la barrera del lenguaje será aún más baja.