Próximos cursos 2026: legacy code y continuous delivery

Este año casi no di cursos porque estuve muy metido en proyectos, pero ya tengo decido que el año próximo volveré al ruedo.

Por un lado voy a estar dictando mi clásico curso de «Continuous Delivery» que era parte de la diplomatura y ahora al no abrirse la diplomatura lo dictaré por mi cuenta. Una actualización de la próxima edición será la inclusión de IA.

Por otro lado, voy a estrenar un curso sobre «Evolución de código legacy», este es un curso que tenía en mi lista de pendientes desde hace largo rato y que finalmente decidí materializar pues creo que el uso de IA hace una gran diferencia en este tipo de proyectos. El curso está en gran medida basado en el libro de Michael Feathers y en mis propias experiencias en proyectos de código legacy durante +10 años.

La modalidad de cursada en ambos casos será la usual de mi cursos:

  • online
  • un encuentro sincrónico por semana
  • teoría, código de ejemplo y trabajo sobre el código de los proyectos que los participantes traigan

Los interesados pueden escribirme por aquí para que les mande información más detallada.

Proyecto nuevo, código viejo

La semana pasada comencé a trabajar en un proyecto nuevo. El objetivo es hacer un «refactor» de un sistema que tiene varios años de vida y al mismo tiempo agregarle algunas capacidades nuevas basadas en IA. El sistema consta de 1 componente central construido en javascript, dos «satelites» en php y varias APIs externas algunas bajo el control de otros equipos de la misma organización y otras bajo el control de otras organizaciones.

En el equipo somos unas 10 personas: un Product Owner, cuatro devs todo terreno con dedicación full time, un dev referente técnico con dedicación parcial, un tester full-time, una persona de UX, un persona de infra con dedicación on-demand y yo con dedicación parcial en el rol de coach dev. Los miembros del equipo vienen de trabajar en distintos equipos de la organización y nunca trabajaron todos juntos como equipo.

El proyecto debería durar aproximadamente unos 3 meses.

Estamos haciendo iteraciones semanales con todas las ceremonias (review-retro-planning) de corrido los días miércoles. Estamos haciendo dailies que logramos mantener ~10 minutos.

En la primera iteración no hicimos una estimación formal, simplemente agarramos un conjunto de 17 ítems que consideramos podrían llegar a completarse en 1 semana (spoiler: a los dos días ya no dimos cuenta que llegamos a completar todo, ja!).

Continuará…

La materia faltante en la universidad

Una problemática cotidiana de los sistemas de software es el mantenimiento y evolución de los mismos. Es común encontrar en los planes de estudio diversas técnicas para aplicar durante el desarrollo inicial del software de cara a facilitar su futuro mantenimiento y evolución.

Pero es poco habitual para los estudiantes tener que lidiar con el mantenimiento y evolución de código existente. Más aún, es poco habitual que los alumnos tengan que trabajar con código ajeno. No me refiero a tener que utilizar componentes desarrollados por otros sino a tener que modificar código escrito por otros.

Las técnicas para mantener y evolucionar código ajeno no son necesariamente las mismas que las que se utilizan para facilitar el futuro mantenimiento y evolución. Más aún, esas técnicas son tanto de índole técnico como también de índole de gestión.

Algunas de estas cuestiones intentamos cubrir en MeMo2@fiuba. Justamente cada vez que doy estos temas vuelvo sobre esta idea de tener una materia exclusivamente centrada en «código legacy».

Al mismo tiempo creo que estudiar estas técnicas requiere de aplicación práctica, no basta con estudiarlas teóricamente. Esto es lo que me lleva a pensar que es necesario una materia para lidiar con esta problemática.

No estoy seguro que sea una materia para estudiar en un carrera de grado, por el simple hecho de que me parece necesario que antes de abordar estos temas, los estudiantes dominen cuestiones Ingeniería de Software y también (sobre todo) tengan cierta experiencia de aplicación en «mundo real».

La pesada herencia

La pesada herencia

La pesada herencia es una frase que ha sonado bastante en el terreno político en Argentina en los últimos meses, pero no voy a hablar de política. Sino del código legacy que he heredado en el proyecto que estoy trabajando.

Esta semana completamos la tercera iteración del proyecto, todo en orden hasta el momento. Pero en esta cuarta iteración comenzamos a integrar el módulo que veníamos desarrollando con el resto del sistema, el cual es un sistema legacy: sin pruebas, con muy alto acoplamiento, baja cohesión, código oscuro, etc. El cliente es consciente de esto y por ello no se sorprendió cuando le dijimos que la fecha de salida a producción que habíamos hablado no sería factible. En cierto modo entendió «la pesada herencia». Ok, bien, es la realidad y no es fácil pero debemos afrontarla.

Pero de aquí a un año ya no podremos culpar a «la pesada herencia» porque si dentro de un año el sistema sigue siendo legacy, entonces no será «la pesada herencia» sino nuestra triste incompetencia.