1. Carrera profesional
Los programadores también se clasifican según su cualificación. En su día se usaban términos como «coder», «programador» y «hacker», pero hoy todos han pasado a denominaciones en inglés del IT estadounidense.
Para un desarrollador hay 6 niveles principales:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
De un país a otro e incluso de una empresa a otra algunos parámetros pueden variar, pero la idea es, grosso modo, la siguiente:
- 🌱 Intern Software Engineer — son becarios. Están en proceso de aprender programación, no tienen experiencia comercial ni experiencia participando en proyectos grandes. Suelen trabajar bajo la supervisión de compañeros más experimentados. Su tarea principal en el trabajo es estudiar la base de código y los fundamentos del desarrollo de software, realizando tareas sencillas de codificación y participando en las pruebas.
- 🐣 Junior Software Engineer — ya son programadores, pero sin una experiencia comercial sólida o con menos de un año de experiencia. Trabajan bajo la dirección de desarrolladores más experimentados, implementando partes de proyectos y participando en ciclos de revisión de código. Esta etapa de la carrera se centra en profundizar en las habilidades técnicas y en comprender los objetivos del proyecto.
- 🦾 Middle Software Engineer (o simplemente Software Engineer): tienen más autonomía para tomar decisiones técnicas, son responsables de áreas significativas del proyecto, comienzan a tutorizar a compañeros menos experimentados y participan más activamente en los debates de arquitectura. Suelen tener entre 2 y 5 años de experiencia práctica.
- 🧑🔬 Senior Software Engineer: se encargan del diseño y la implementación de sistemas complejos, proporcionan mentoría y liderazgo dentro del equipo, participan en la planificación estratégica de los proyectos y a menudo representan al equipo frente a clientes y otras partes interesadas. Suelen tener entre 5 y 10 años de experiencia.
- 🧠 TechLead: es responsable del resultado técnico final del proyecto, dirige el desarrollo, resuelve las tareas más complejas, garantiza el cumplimiento de los estándares técnicos y coordina la actividad de los desarrolladores.
- 🏆 Principal Software Engineer: trabaja en el nivel técnico más alto, a menudo participa en la definición de la estrategia tecnológica de la empresa, en el desarrollo de soluciones innovadoras y en el establecimiento de estándares técnicos; actúa como mentor principal de los líderes técnicos y es un experto clave en cuestiones técnicas complejas.
Dato interesante. Las grandes empresas pueden tener roles y subroles adicionales. Por ejemplo, en Google existen los siguientes:
- Staff Software Engineer (L6): tiene una influencia significativa en la política técnica de su departamento.
- Senior Staff Software Engineer (L7): trabaja en proyectos de gran escala y complejidad, y define la dirección estratégica del desarrollo tecnológico en la empresa.
2. Productos tipo Lego
Hace mucho tiempo (en 1975) Niklaus Wirth, creador del lenguaje Pascal, escribió el libro «Algoritmos + estructuras de datos = programas». Desde entonces, mucho ha cambiado. El producto software moderno no es lo que era hace 10 años y, desde luego, no lo que era hace 20. Y de 1975 ni hablemos — han pasado 50 años ⏳
Hoy en día, el programador ya no escribe los programas completamente a mano. Más bien los compone a partir de piezas ya hechas (bibliotecas) y escribe el código que ayuda a esas piezas a interactuar 🧩. Los productos de software modernos pueden constar de decenas e incluso cientos de programas. Algunos se ejecutan en el ordenador del usuario y en sus dispositivos móviles, pero la mayor parte — en servidores de centros de datos.
Muchas de esas piezas, como un servidor web o una base de datos, ya están hechas. Solo hay que configurarlas correctamente para que funcionen como es debido. Aunque con el tiempo el proceso de configuración puede volverse tan complejo que, de facto, se convierte en desarrollo. 🤦♂️
Los programadores están en una lucha constante consigo mismos. En vez de volver a escribir código similar en distintos programas, crean bibliotecas que se pueden configurar y adaptar a sus necesidades, y luego simplemente las conectan en todos los puntos necesarios.
En los últimos 20 años se han escrito muchísimas bibliotecas, frameworks y repositorios abiertos. Son literalmente millones. Y ahora escribir todo el código desde cero se considera una mala práctica. En su lugar, hay que ensamblar el programa a partir de soluciones de calidad y probadas — bibliotecas, frameworks, paquetes y módulos 🧱
Pero incluso este enfoque ya va quedando desfasado. La tendencia de los últimos 10 años es la migración a la nube, grandes centros de datos que proporcionan a tus programas todo lo que necesitan. ¿Quiere una base de datos? Hay cientos entre los que elegir. ¿Quiere un servidor web raro y único? ¡También los hay! Cualquier capricho por su dinero.
3. «Yo soy ingeniero» © Elon Musk

Ya no hace falta escribir por uno mismo las cosas complejas y tediosas. Si necesita alguna funcionalidad, ya existen bibliotecas y frameworks para ello. Su tarea: a) conocer su existencia, b) encontrar la opción adecuada (a menudo hay varias alternativas, con distinta calidad y matices), c) entender cómo integrarla en su proyecto 🎓
El trabajo no hace sino volverse más interesante. Ahora puede añadir funcionalidad nueva al producto diez veces más rápido. Hace 30 años, si necesitaba un servidor web, lo escribía desde cero. Hace 20 años — lo compraba, lo instalaba y lo configuraba. Y ahora — simplemente entra en el portal en la nube de Azure o AWS y activa el servicio que necesita 🌐
Por cierto, esta es una de las razones de la popularidad del lenguaje Java. No solo es excelente para desarrollar grandes soluciones corporativas, sino también para «pegar» distintos componentes: gracias al rico ecosistema de la JVM hay integraciones prácticamente con cualquier cosa — bases de datos, microservicios, REST API, sistemas de mensajería, servicios en la nube, plataformas analíticas.
En consecuencia, la profesión de Java Software Engineer hace tiempo que se transformó en Fullstack Java Developer. Para el desarrollador moderno es importante entender cómo funciona la base de datos (PostgreSQL, MySQL/MariaDB, MongoDB, etc.) para diseñar una interacción adecuada. Hay que comprender cómo está construido el frontend (HTML, CSS, JavaScript/TypeScript, React, Angular) para configurar el intercambio con la parte backend en Java (Spring Boot, Micronaut, Quarkus). Y, por supuesto, hoy en día sin Docker no se va a ninguna parte — ya es el estándar del sector 🐳.
El desarrollo moderno es muy distinto de lo que había hace 20 años. Un programador escribe código como mucho el 50 % del tiempo; el resto se dedica a leer documentación, aprender nuevas tecnologías, diseñar y trabajar en equipo en reuniones. Los programadores en solitario son ya más bien una rara excepción.
GO TO FULL VERSION