13 Desarrollo de software en la actualidad: retos, tecnologías y aprendizaje continuo

YouTube: https://youtu.be/XV7O-UiErk0

13.1 Entrevista

¿Quién es Gabriel Alejandro Cabrera González?

Mi nombre es Gabriel Alejandro Cabrera González, soy desarrollador de software. Actualmente me encuentro trabajando en una empresa de telemedicina de origen guatemalteco, donde me dedico al desarrollo continuo, mejoras y solución de inconvenientes en la plataforma. Además, en paralelo estoy desarrollando mi propio proyecto de negocio.

Mi camino en la tecnología comenzó de una forma bastante peculiar. Quería ser piloto aviador pero, por ciertos motivos, no pude estudiarlo. Fue entonces cuando conocí el colegio Kinal, donde vi las carreras que impartían y me llamó la atención la de perito en informática. Ese fue mi primer acercamiento con el mundo de la programación, y desde que entré en 2011, me enamoré completamente de este campo y he permanecido activo en él hasta la fecha.

¿Con qué tecnologías trabaja en su día a día?

Las tecnologías con las que me siento más cómodo son principalmente Java, que es el lenguaje que más disfruto, y Spring para el backend. En cuanto al frontend, trabajo muy bien con Angular, tanto AngularJS como Angular 2 en adelante, siempre acompañado de TypeScript. En bases de datos, he trabajado bastante con MySQL y actualmente estoy explorando PostgreSQL, que comencé a utilizar al trabajar con módulos en Odoo, un CRM desarrollado con Postgres y Python. También me apasiona el desarrollo Android, que siempre he trabajado con Java.

¿Cómo es su proceso cuando arranca un proyecto desde cero?

Lo primero es entender con claridad cuál es el requerimiento y qué espera obtener el cliente como resultado final. Una vez definido eso, hay que ser realistas: identificar qué se puede hacer, qué no, y cuál es el core del proyecto. Desde ahí se estructuran las fases de desarrollo.

El análisis inicial es determinante. Es necesario definir la base de datos, los lenguajes y tecnologías a utilizar, el servidor requerido y los recursos mínimos necesarios. Durante todo el proceso mantengo una comunicación continua con el cliente para obtener retroalimentación constante, de manera que cualquier ajuste se pueda hacer en el transcurso del desarrollo y no hasta el momento del paso a producción.

¿Qué herramientas no podría dejar de usar en su trabajo?

De entrada, todas las herramientas de JetBrains: IntelliJ, WebStorm, DataGrip y Android Studio las utilizo prácticamente de lunes a domingo. Recientemente he incorporado inteligencias artificiales como ChatGPT y Claude de Anthropic, que me han servido bastante para optimizar ciertos procesos. Tareas que a uno le llevarían mucho tiempo, como la creación de componentes de interfaz, pantallas o beans de base de datos, la inteligencia artificial las resuelve en minutos. Siempre pasan por revisión, pero agilizan enormemente los avances iniciales. También ha cambiado la forma de buscar soluciones: ya no es necesario recorrer Stack Overflow durante horas; con un par de preguntas bien formuladas se llega rápidamente a la raíz del problema.

¿Ha trabajado con contenedores y microservicios?

No he trabajado extensamente con microservicios. He trabajado más con aplicaciones modularizadas, que si bien organizan el código por módulos, siguen compartiendo la misma base de datos. Un microservicio, en cambio, idealmente tiene su propio acceso a datos para poder integrarse en cualquier sistema sin comprometer información de los demás.

Cuando he trabajado con microservicios, ha sido para funcionalidades muy específicas y altamente reutilizables en distintos proyectos. Para lógica particular de un sistema, prefiero la modularización, ya que ayuda a evitar el problema del monolito: si algo falla, no se cae todo el sistema. Creo que hay que ser muy consciente del momento en que conviene crear un microservicio y cuándo simplemente modularizar.

¿Ha tenido algún susto de seguridad en sus proyectos?

Gracias a Dios no he tenido incidentes graves. En su momento, por estar haciendo pruebas en producción, envié mensajes que no debieron haber salido. Afortunadamente, alguien con más experiencia me ayudó a gestionar la situación antes de que escalara a algo mayor. Fue algo muy interno y controlado.

Lo más preocupante que he visto en el entorno es el tema del .gitignore. Muchos proyectos tienen credenciales que en algún momento fueron incluidas en un commit, y aunque luego se agreguen al archivo de exclusión, el historial del repositorio las conserva. Cualquier persona con acceso puede rastrear esos commits y encontrar credenciales de base de datos o usuarios con privilegios de administrador. Es una vulnerabilidad que se subestima con frecuencia.

¿Cómo maneja la calidad de los datos en sus proyectos?

Lo fundamental es que los datos no pueden ser alterados de forma arbitraria. Un dato registrado en base de datos no se puede modificar porque sí; todo cambio debe seguir el flujo correcto definido por la aplicación. Los sistemas deben tener mecanismos claros para cambiar estados y transformar información, de manera que esta llegue de forma íntegra y confiable a los usuarios. La trazabilidad y la integridad de la información son pilares que no se pueden negociar.

¿Piensa en la privacidad de los datos desde el diseño o se agrega después?

Al principio de mi carrera sí se agregaba con el tiempo, pero la experiencia me ha enseñado que debe estar desde el diseño. Todo lo relacionado con la confidencialidad de la información, quién realiza cada acción, cuándo la realiza y qué exactamente hace, tiene que estar contemplado desde el inicio. Cuando se presentan situaciones que requieren auditar datos, esa trazabilidad es indispensable. Hoy lo considero no solo prudente, sino obligatorio planificarlo desde el diseño de la aplicación.

¿Cómo ha cambiado el rol del desarrollador en los últimos años?

El cambio más significativo lo ha generado la inteligencia artificial. Antes, el rol junior era relativamente más acotado: recibir una tarea, analizar su alcance y resolverla. Hoy ese perfil ya no es suficiente. Si el desarrollador solo sabe escribir código, la IA lo hace igual o mejor. Por eso, el análisis crítico tiene que estar integrado en cada etapa del proceso de desarrollo.

También han aparecido conceptos y herramientas que hace años no existían en el vocabulario del sector: Docker, Cloudflare, servicios en la nube como AWS, Google Cloud y Azure. El ecosistema ha evolucionado enormemente y el desarrollador que no evoluciona con él queda rezagado rápidamente.

Mensaje final de Gabriel Alejandro Cabrera González

A quienes están comenzando, ya sea estudiantes o desarrolladores en su primer puesto, mi consejo es: digan que sí a todo. El miedo a no sentirse capaz hace que uno pierda oportunidades valiosas. Acepten los retos, tomen los proyectos y códifiquen. Los tutoriales y los cursos ayudan, pero solo enfrentando problemas reales se aprende de verdad.

Quien me enseñó en mis inicios me dijo algo que nunca olvidé: si no sufres el error y no agotás todas las instancias para resolverlo, no te voy a ayudar, porque si te doy la solución ahora, no la vas a aprender. Esa filosofía es totalmente cierta. Dense la libertad de cometer errores, pero aprendan de cada uno. Fuércen sus límites constantemente, porque eso es lo que realmente los va a hacer crecer.