Off-topic: Chau Indio

Ayer murió Carlos «Indio» Solari, el líder de Patricio Rey y sus Redonditos de Ricota, un banda que marcó mi adolescencia.

Empecé a escuchar a Los Redondos estando en la escuela primaria, allá por el año 1991 con la publicación del disco La mosca y la sopa. Un disco que en aquella época yo escuchaba en casete y no era el casete original sino un «casete grabado». No lo recuerdo claramente pero seguramente era un TDK. Mi primer CD original de Los Redondos fue Oktubre, que había sido publicado en el 86 pero que yo lo tuve recién en el 96. Luego de eso y en la medida en que tuve mis propios ingresos fue comprándome todos los discos (CDs) originales y también algunos inéditos como los grabados en vivo en Stud Free Pub, Paladium y Obras.

La música de Los Redondos me acompañó en fiestas, juntadas con amigos y momentos de soledad. Sonaba en el equipo de música que teníamos en casa y en mi walkman Sony cuando viaja a jugar al basket. Sonaba en los parlantes del boliche y en mi Diskman Sony cuando viaja a la universidad. Sonaba en los programas de radio que yo escuchaba y también en los programas de radio yo mismo hacía con mis amigos en la radio del pueblo. Sonaba en el viaje de egresados de la primaria y también en el de la secundaria.

Tuve la oportunidad de ver a los redondos en vivo el 15 de abril de 2000. Recuerdo que ese mismo día por la mañana tuve que rendir un parcial de Algoritmos y Programación 2 escribiendo código Pascal en papel. Una cuestión del show que me sorprendió fue ver dos baterías en simultáneo en el escenario. Resulta que entre los temas de la lista había varios del disco Ultimo bondi a finisterre que precisamente ameritaban esa situación. El show comienzó con El pibe de los astilleros y Un Angel para tu soledad y cerró con el pogo más grande del mundo con Jijiji. Promediando el show un inadaptado comenzó a atacar gente con un cuchillo, lo que derivó en una interrupción temporal del show y unas palabras de indignación del Indio. Luego de eso el show continuó con las luces encendidas. A pesar del incidente el show fue increíble. Nunca había vivido algo así.

Creo que más allá de la cuestión musical, Los Redondos fueron (y creo que aún lo son) un fenómeno cultural. Su forma de manejarse, en cierto modo, «por fuera del sistema» expresa una crítica a ese sistema. La consistencia de su actitud a lo largo de tanto tiempo es no tan habitual en la actualidad.

Yo hablo de Los Redondos pero soy consciente que el Indio era el artífice central de muchas de las creaciones y de la actitud de la banda.

Para cerrar, solo quiero agradecer al Indio porque su arte me ha acompañado en gran parte de mi vida y creo que este país ha sido un poco mejor por su aporte. Gracias.

Modelado de estado

Esta es una problemática habitual al construir software y una y otra vez veo modelos muy pobres. Fenómeno que también observo en la universidad. Es por ello que hoy grabé un video con algunas sugerencias al respecto en el que, entre otras cosas, explico el patrón state. Espero les resulte útil.

Anti-patrones de arquitectos de software

La semana pasada hablaba con un cliente cuando descubrí los dos anti-patrones relacionados a arquitectos de software. Ideas que venían dando vuelta en mi cabeza y que había visto reiteradas veces pero recién en esa charla hice click y logré articularlas. Paso a describir.

Cuando digo «anti-patrones» me estoy refiriendo patrones, situaciones que he visto una y otra vez y que en todos los casos que vi tuvieron resultados negativos.

Arquitectos que «no se embarran»: este tipo de arquitecto suele tomar decisiones y «bajar línea», posiblemente hace diagramas, escribe lineamientos y en algunos casos hasta puede llegar a escribir código de una librería o código genérico. Pero lo que lo destaca es que no «sufre» sus propias decisiones: dice «hay que usar este framework» pero él no lo usa, dice hay que hacer las cosas de tal forma pero el no las hace. Esta situación suele derivar en que sus decisiones/lineamientos resultan inconvenientes no porque no resuelvan el problema que pretendían resolver sino porque resultan muy incómodas de aplicar para los desarrolladores y en un punto lo desarrolladores empiezan a ignorarlas (si es que en algún momento las respetaron). Este tipo de arquitectos no suele trabajar en un equipo de desarrollo sino que suele estar en una área de arquitectura que opera de forma transversal a todos los equipos de desarrollo.

Arquitectos infractores: la organización tiene ciertos lineamientos sobre la forma de trabajo, por ejemplo: cada equipo tiene un backlog, planifica cada 2 semanas, hace retrospectivas, su código tiene que tener pruebas automatizadas y una cobertura por encima de cierto porcentaje. Pero resulta que este arquitecto (o el equipo entero de arquitectura) incumple los lineamientos que todos los equipos de desarrollo deben cumplir. Esto tiene múltiples consecuencia como ser falta de visibilidad, falta de credibilidad y resistencia por parte de los desarrolladores (¿por qué yo tengo que hacer esto y ellos no?)

¿y tu?, ¿te haz cruzado con arquitectos así?

Sincerando el uso de la IA en la educación

No suelo escribir sobre IA, en parte porque creo que ya hay demasiada gente (y agentes) escribiendo al respecto. Vengo siguiendo el tema, haciendo mis propias experiencias y sobre todo vengo leyendo y hablando con colegas.

No pretendo aquí hablar sobre el uso de IA en la Ingeniería de Software, sino sobre cómo lidiamos con el hecho de que los estudiantes usen IA.

No creo que tenga sentido intentar evitar que los alumnos usen IA. Y tampoco fingir demencia simulando que los alumnos no la usan.

Así que creo que lo mejor que podemos hacer es sincerar su uso. Esto se traduce en varias cuestiones concretas.

En el caso particular de la Ingeniería de Software, que es lo que yo enseño, creo que está claro que la IA tiene un impacto relevante en la disciplina, pero también creo que la dimensión de ese impacto aún no está clara. De todas formas, mientras el tema sigue evolucionando creo que hay que hacer algo y en ese sentido vamos a empezar por algunas cuestiones «conservadoras».

En primer lugar me parece importante explicitar con los alumnos que pueden usar IA y darles algunos consejos básicos del estilo «revisa el código generado antes de commitear».

En segundo lugar, le pedimos a los alumnos que en caso de usar IA:

  • Indiquen en la entrega la herramienta de IA utilizada
  • Incluyan en la entrega los prompts/skills utilizados
  • Estimen cuanto les costó en dinero el uso de la IA.

Esto lo estoy empezando a poner en práctica este mismo cuatrimestre, a fin de año les cuento como resultó.

My notes from XP 2026

A couple of weeks ago, I traveled to São Paulo to participate in the 27th International Conference on Agile Software Development, also known as the XP Conference.

It was not my first time attending the conference. I had previously participated in several editions: 2015 (Helsinki), 2016 (Edinburgh), and 2018 (Porto). However, this time was different because, in addition to giving a talk in the industry track, I also joined the volunteer team. It was a great experience.

The conference was held at Insper, a non-profit institution dedicated to teaching and research that offers undergraduate, graduate, executive education and customized programs.

I had the chance to interact with people from very different places like Vietnam, Italy, USA, Iran, China and Morroco among others. I also interact with some famous people in the Software Engineer community like Joshua Kerievsky, Paulo Caroli and Joe Yoder among others.

This conference usually rotates across European countries. This edition was the first to take place in South America and had approximately 120 participants.

Regarding the content, as expected, many topics were related to the use of Artificial Intelligence. Among the sessions I enjoyed the most, I would highlight:

  • Paulo Caroli’s keynote, “From Speed to Direction”.
  • The talk by the team from Bradesco Bank, which presented their experience adopting AI.
  • Joshua Kerievsky’s talk on Code Smells.
  • Alexandre Freire’s talk on AI adoption at Google.
  • Rick Kazman’s keynote, «Better Together: How Humans and AI Can Co-Create Software Designs».

One of the things I like most about this conference is the combination of formal/academic content with real-world experiences shared by practitioners.

Another aspect I enjoy about conferences in general is the communities that emerge around them. Each edition of the conference is also an opportunity to reconnect with colleagues, and this XP was no exception. On a personal note, I had the chance to meet again with my colleague Lula, who lives in São Paulo and whom I first met at the 2018 XP Conference in Porto.

I would like to congratulate and thank the organizing team, especially Grazie, for delivering such a great conference experience.

Tesis completa

Hace poco más de dos semanas completé mi tesis de maestría que realicé bajo la dirección de Ale Zangara, la co-dirección de DiegoF y la asistencia técnica de Ale Oliveros. Mis eternas gracias a ellos tres. Debo también agradecer a Carlos Fontela que medio feeedback de varios capítulos de la tesis. Obviamente también agradezco a mi equipo docente, a mis alumnos y a mi familia.

Me llevó un par de años completar la tesis (más de lo habitual). Durante ese tiempo realicé 3 publicaciones (también más de lo habitual).

En estos momentos me encuentro a la espera de designación del jurado evaluador. Luego, tendré que esperar un par de meses a que los jurados lean la tesis y me convoquen para la defensa. Estimo que será en algún momento de este año.

Esta tesis representa el último paso de mi carrera de maestría. Una maestría que en términos de calendario me llevó más tiempo que mi carrera de grado. Si bien pasaron años desde que terminé de cursar las materias de la maestría hasta que finalmente comencé a trabajar en la tesis, creo que no fue tiempo en vano. En todo ese tiempo pude poner en práctica diversas cuestiones que aprendí en las materias de la maestría y mejorar mi práctica docente.

Muchas de las cuestiones que tratadas en la tesis surgieron como parte del proceso de investigación pero varias otras ya formaban parte de mi práctica docente y esta tesis sirvió para formalizarlas y validarlas. Asimismo, en el proceso de hacer la tesis aprendí mucho sobre métodos de investigación, lo cual me habilitó a hacer esta tesis pero también a realizar diversas publicaciones científicas, varias de ellas relacionadas a esta tesis pero algunas otras no.

Comencé este trabajo de investigación con una serie de preguntas. A muchas de ellas pude darle respuesta a lo largo del desarrollo de esta tesis. En ese sentido, la conclusión de esta tesis representa un final, el final de mi carrera de maestría en Tecnología Informática Aplicada en Educación. Pero es también un inicio, pues mientras contestaba algunas preguntas, otras fueron apareciendo. Nuevas preguntas que seguramente me llevarán a emprender nuevos caminos. Como dijo un músico hace ya varios años: el final es en donde partí.

Cerrado por Tesis

Puede que los lectores habituales de este espacio se hayan extrañado de no ver nuevos posts por aquí. Efectivamente es una situación curiosa pues mi promedio es de 4 posts mensuales y ya llevo más de un mes sin escribir.

Resulta que estoy trabajando en mi tesis de maestría. Una tesis que comencé hace unos años y que me propuse terminar en los primeros meses de este 2026. La realidad es que todo el trabajo de investigación ya lo tenía hecho, de hecho realicé 3 publicaciones formales en conferencias. Lo que me restaba era sentarme a escribir, lo cual no es poco porque aún cuando no me falte trabajo de campo, escribir el marco conceptual, la metodología de investigación, los resultados obtenidos, etc, es un trabajo no trivial y bastante laborioso.

La escritura ya está muy avanzada, podría decir que llegué al hito de «code complete», o sea, está todo escrito y casi todo validado con mis directores. Restan ajustes, revisión y corrección.

Tengo en mi backlog varios posts por publicar que espero empezar a trabajar una vez completa la tesis durante el mes de marzo.

Libro: Enseñar Distinto

Ayer terminé de leer este libro: Enseñar Distinto, Guía para innovar sin perderse en el camino de Melina Furman.

Es un libro muy completo, cubre cuestiones de planificación, preparación de clases, armado de tareas para los alumnos, evaluación, etc. Ofrece teoría, en la medida justa, acompañada de ejemplos concretos y también ejercicios para hacer a medida que vamos leyendo. Es un libro de referencia para volver de vez en cuando a la hora de preparar clases o arma una materia/curso.

Luego de +20 años de docencia, algunas cuestiones que menciona ya las conocía y algunas otras las aplicaba pero sin tener su marco teórico. Obviamente descubrí varias cuestiones que no conocía y que ya estoy empezando a aplicar como ser «Las tarjetas de salida» y «La escalera de feedback».

Me pareció muy bueno y creo que es una lectura obligada para todo docente que no haya tenido formación docente, cosa habitual entre docentes universitarios 😦

Retrospectivas en una página

Esta es una práctica que fue popularizada por Scrum, pero cuyo uso se ha extendido ampliamente más allá de este marco. Es una práctica que apunta a la mejora continua, aunque el solo hecho de hacer retrospectivas no trae mejoras por sí mismo. En concreto, la retrospectiva es una herramienta que nos permite detectar oportunidades de mejora. Luego, si realmente queremos mejorar, deberemos accionar sobre esas oportunidades.

En mi libro Construcción de Software: una mirada ágil, hay un capítulo completo dedicado a esta práctica, pero hoy, viéndolo a la distancia (más de 10 años después de su publicación) y considerando cómo he ido variando mi forma de trabajar, creo que dicho capítulo no refleja la manera en que me gusta que fluyan las retrospectivas.

La retrospectiva se realiza con una determinada cadencia: puede ser cada dos semanas, una vez por mes u otra. Pero esa cadencia debe estar definida. He escuchado equipos decir «hacemos retrospectiva cuando consideramos que lo necesitamos»; eso no es válido, pues convertiría a la retrospectiva en una práctica reactiva cuando, en realidad, es una práctica proactiva. En lo personal, suelo trabajar en iteraciones semanales, con lo cual, al inicio del proyecto, suelo hacer retrospectivas todas las semanas; pero, una vez que el equipo entra en ritmo, suelo cambiar a una cadencia de dos semanas (obviamente, esto no es una definición mía, sino una sugerencia: finalmente es el equipo quien decide).

El resultado de una retrospectiva es un conjunto de «accionables realizables», es decir, cuestiones que podamos trabajar de aquí a la próxima retrospectiva. En lo personal, suelo sugerir no más de tres accionables.

La retrospectiva es una sesión de trabajo con un facilitador designado, que se encarga de prepararla. Sí, la retrospectiva hay que prepararla; no es una actividad improvisada. Al mismo tiempo, se espera que el facilitador esté 100% dedicado a la facilitación: llevar la sesión, moderar las interacciones, cuidar los tiempos, etc. El facilitador no es un participante más; incluso si el rol es ocupado por un miembro del equipo, esa persona «resigna» su derecho a opinar. Es por ello que, en ocasiones, se busca que el rol del facilitador sea asumido por alguien externo al equipo, una persona «neutral».

En la retrospectiva participan exclusivamente los miembros del equipo, quienes están en el barro del día a día, aquellos con los que nos vemos diariamente. En ocasiones surge la duda de si debe participar el Product Owner, mi respuesta es: depende. Si el Product Owner está en el día a día, entonces sí. Pero si el Product Owner interactúa esporádicamente con el equipo, viene a la planning/review y no mucho más, entonces yo me inclino a que no, eventualmente buscaremos otro espacio para hablar con él las mejoras del proceso que lo incumban.

Usualmente, la retrospectiva comienza con una actividad «rompehielos», cuyo objetivo es desacoplarnos de lo que veníamos haciendo y entrar en la sesión con confianza y la mente despejada.

Luego, hacemos el repaso de los accionables surgidos en la iteración anterior (obviamente, en la primera retrospectiva no hay accionables previos): ¿los cumplimos?, ¿resultaron útiles?

Así llegamos al punto central de la retrospectiva, donde típicamente repasamos lo que hicimos bien y lo que no hicimos tan bien (por no decir «las cagadas»). Para esto existen distintas dinámicas (muchas de ellas documentadas en el libro/sitio Fun Retrospectives de Paulo Caroli). En general, todas las dinámicas incluyen un momento de brainstorming. Si estamos haciendo la retrospectiva de forma presencial, muchas veces el brainstorming implica el uso de post-its. Esto permite que cada persona pueda expresarse libremente en dos sentidos:

  1. Sin verse influenciado por lo que digan los demás.
  2. Manteniendo el anonimato (aunque, si realmente somos un equipo, nadie debería tener miedo de expresarse).

Si estamos en una sesión virtual, buscaremos utilizar alguna herramienta que nos permita emular una experiencia análoga. Algunos equipos utilizan herramientas colaborativas «genéricas», como Miro o Google Slides. En lo personal, prefiero utilizar herramientas específicas para retrospectivas, como ser EasyRetro o Retrium.

Luego pasaremos a una fase de convergencia, para lo cual analizaremos lo surgido del brainstorming, identificando cuestiones (post-its) repetitivas o recurrentes. Precisamente, si tenemos cuestiones que se repiten (varios post-its mencionando lo mismo), eso nos está indicando la relevancia de esa cuestión. Sin embargo, puede ocurrir que la cosecha sea más dispersa y no encontremos cuestiones repetidas. En ambos casos, deberemos priorizar sobre qué cuestiones trabajar, ya que, como mencioné previamente, la cantidad de accionables debería ser acotada.

Para esto, lo que suele hacerse es votar abiertamente sobre qué cuestiones trabajar. Una vez identificadas las cuestiones más prioritarias, pensaremos en conjunto las acciones a tomar. En todo este proceso es importante el rol del facilitador, guiando la dinámica, manteniendo el foco del equipo y cuidando los tiempos.

Una vez definidos los accionables, debemos registrarlos. En algunos casos, si usamos una herramienta digital, puede que ya queden allí; de lo contrario, yo suelo utilizar la wiki del proyecto.

Finalmente, hay ocasiones en las que se realiza un cierre de la retrospectiva, por ejemplo, pidiendo a los participantes que evalúen la sesión.

Dos nuevos egresados @fiuba

Durante 2025 fui tutor del trabajo final de carrera de dos miembros de mi equipo docente: Kevin Spasiuk y Matías Gonzalez.

Kevin completó su carrera de Licenciatura desarrollando un video juego. Lo hizo utilizando el framework Godot y la plataforma Steam, donde quedó publicado. Hay un par de cuestiones destacadas del trabajo de Kevin:

  1. Su software quedó publicado en una plataforma comercial lo cual representa delivery real de punta a punta: «from concept to customer».
  2. Si bien en términos administrativos Kevin trabajó solo, en realidad tuvo que trabajar con profesionales de otros rubros principalmente artistas gráficos.
  3. Realizó el proyecto aplicando las prácticas de calidad y delivery que estudiamos en la carrera aún cuando dichas prácticas no son muy habituales en el desarrollo de videojuegos.

Por su parte Matias, completó su carrera de Ingeniería trabajando en conjunto con gente del LaFHIS y desarrollado una herramienta para investigación. Entre las cuestiones más destacadas del trabajo de Mati (al margen de la herramienta desarrollada) estan:

  1. Debió trabajar sobre código légacy
  2. Si bien en términos administrativos Mati trabajó solo, en realidad su trabajo lo realizó con un equipo de investigadores de Exactas lo cual para mi marca un hito en términos de colaboración Ingeniería-Exactas.
  3. A modo de «spin-off» del trabajo, Mati escribió un artículo contando su experiencia desarrollando este trabajo final y dicho artículo fue aceptado en un workshop de ICSE.

¡Mis felicitaciones para los graduados!