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 es 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!

Agile => Brazil

En este 2026, al ya clásico Agile Brazil, se le sumarán el Agiles@Latam y la XPconf, dos eventos internacionales de la comunidad Agile que también se realizarán en Brasil.

Agiles@Latam es el evento Agile de la comunidad latinoamericana que inauguramos en 2008 en Buenos Aires y que desde entonces va rotando por distintos países de la región. De hecho, la segunda edición de este evento, allá por 2009, se realizó en Brasil, aquella vez fue en Florianópolis (aquí pueden encontrar mis notas de aquel evento). Es un evento que en la últimas ediciones ha tomado un formato de Open Space al 100% y que en sus temáticas, se encuentra (a mi parecer) cada vez más lejano al desarrollo de software. En 2026 Agiles@Latam se realizará en Foz de Iguazú.

La XPconf es la International Conference on Agile Software Development, el evento de Agile con más historia. Usualmente rota por países de Europa pero esta vez se realizará por primera vez en latam. Es un evento del cual también he participado en más de una ocasión (xp2015, xp2016, xp2018) . Tiene la particularidad de reunir Industria y Academia: se presentan charlas de practicantes y también papers académicos. Al mismo tiempo mezcla sesioes de distinto tipo (presentaciones, talleres, paneles, etc). En 2026, la XPConf se realizará en San Pablo.

Cierre de cuatrimestre en FIUBA 2025-2

Como todos los cuatrimestre cerramos el curso con una actividad tipo retrospectiva y fue en ese actividad en la que un alumno destacó el hecho de que tratamos a los alumnos por su nombre. Claro, resulta que esta camada de alumnos es parte de la ola ingresó a la facultad a hace un par de años y que incrementó la matrícula de forma importante, como consecuencia de ello muchos de estos alumnos estuvieron en cursos multitudinarios (más de 60 alumnos) donde resulta prácticamente imposible para un docente retener el nombre de los alumnos. A esto hay que sumarle que una parte de las clases se realiza en forma virtual y la gran mayoría de los alumnos no enciende la cámara e incluso ni siquiera tiene foto de perfil. De esta forma los alumnos llegan a nuestro curso que no es tan masivo (este cuatrimestre terminamos con ~20 alumnos), donde una importante cantidad de clases son presenciales, donde les exigimos que pongan foto de perfil en todas las herramientas que utilizamos y donde los alumnos trabajan en vivo en equipos de 4, con un docente dedicado durante varias semanas. Esto habilita a que uno como docente pueda aprender el nombre de los alumnos y eso es lo que el alumno destacaba en contraposición a la gran mayoría de los cursos anteriores.

Al margen de esta curiosidad Tuvimos un cuatrimestre muy desafiante ya desde la previa con record de inscriptos. Como suele ocurrir en los últimos años en varias materias de fiuba, hay muchos alumnos se inscriben y luego ni siquiera asisten a la primera clase. Es así que a pesar del record, podemos decir que comenzamos el cuatrimestre con unos 46 alumnos que asistieron a la primera clase, de los cuales solo 25 completaron la primera parte de la materia. Finalmente 19 alumnos aprobaron el curso y están en condiciones de rendir el final oral.

Este cuatrimestre también empezamos a ver una consolidación del perfil de alumno de nuestro curso:

  • amplia mayoría sin experiencia laboral (~82%)
  • edad promedio de los alumnos: ~23 años
  • cantidad de materias aprobadas incluyendo CBC: ~23 (según el plan deberían llegar con 24)
  • cantidad de materias cursando este cuatrimestre: 3,7 (según el plan deberían cursar 4)

Algunos números concretos surgidos de nuestra encuesta:

  • Cantidad de respuestas: 17
  • Evaluación general del curso: 8,9 / 10 (desvío 0.8)
  • Claridad de los docentes: 4,6/ 5
  • Conocimiento de los docentes: 5 / 5
  • Dinámica de las clases: 4,9 / 5
  • Conformidad con la nota: 4,4 / 5
  • NPS: 71
  • Dedicación semanal extra-clase: ~11 horas

Entre los puntos a mejorar claramente destaca la necesidad de ajustar el esfuerzo requerido para completar el TP que en este cuatrimestre requirió en promedio por equipo de unas ~260 horas (con un desvío ~85) distribuido en 3 semanas. Una curiosidad que vemos en este punto es que la mayor dedicación no implica mejor calificación, de hecho pareciera ser al revés, un tema que da para el análisis.

Algunos comentarios anónimos que los alumnos dejaron en la encuesta:

«Me gusto mucho la modalidad de ver videos sobre un tema y luego en la clase de los lunes retomarlos pero con «intensidad». La organizacion es otro de los puntos fuertes.»

«Buena onda de las clases. Clases participativas. Se notan las intenciones de querer enseñar y de querer que los alumnos aprendamos.»

«Excelente dinámica y temas, salí de la materia con 10 veces más de experiencia que con la que entre, definitivamente una cursada muy enriquecedora.»

«Se siente como el cuerpo docente se involucra bastante con los alumnos para que se sienta una enseñanza más personal lo cual ayuda mucho a asimilar varios conceptos y práctica.»

Resultados del cuatrimestre que cambiamos a TypeScript (untref-stats-2025)

A partir de los cambios introducidos por el nuevo plan de estudios en UNTreF, realizamos varios cambios en nuestro curso de Ingeniería de Software. Unos de los más relevantes fue el cambio de Ruby a TypeScript, algo que ya mencioné en un post anterior.

Habiendo terminado el cuatrimestre debo decir que la decisión de cambio a TypeScript me parece que fue acertada, pero a pesar de eso los resultados del cuatrimestre me generan cierta incomodidad. Comenzamos el cuatrimestre con +40 alumnos y llegamos al trabajo final (semana 11) con 20, una situación sin precedentes desde que el curso está a mi cargo. En términos generales la materia está estructurada en 2 partes. En la primera los alumnos trabajan individualmente estudiando y poniendo en práctica ciertos temas que evaluamos con ejercicios de programación. Para aprobar esta primera parte y poder «pasar» a la segunda, los alumnos deben promediar al menos 6. De los +40 alumnos que comenzaron la materia apenas 20 lograron completar la primera parte con promedio 6 (o más). En la segunda parte los alumnos trabajan en equipo en un «simulacro de proyecto real», desarrollando una WebAPI REST y aplicando de forma integral todo lo visto en la primera parte de la materia.

Al analizar el desempeño de los alumnos desaprobados nos encontramos ciertas situaciones recurrentes que podríamos resumir como: falta de atención. Dos ejemplos concretos:

  • En la consigna del ejercicio indicamos el nombre de los archivos a entregar. Luego nos encontramos con archivos con nombres distintos a los indicados.
  • Acompañamos la consigna con un conjunto de casos de prueba, esperando que los alumnos se aseguren de que sus soluciones pasen dichos casos antes de realizar la entrega. Luego nos encontramos con soluciones que no pasan los casos de prueba.

Por otro lado, en la segunda parte, el desarrollo del trabajo final requirió de un esfuerzo/dedicación de los alumnos, mucho mayor a la esperada. No fue el caso de todos los equipos pero sí de un porcentaje importante de ellos. Creemos que esto se debe en gran medida a la falta de atención pero también al hecho de los que alumnos llegan bastante «verdes», algo que definitivamente tendremos revisar para el próximo cuatrimestre.

Volviendo al tema de TypeScript, nos sirvió para lograr nuestro primer objetivo: facilitar a los alumnos el setup de sus ambientes y facilitar la explicación/entendimiento de ciertas cuestiones a partir del uso de un lenguaje estáticamente tipado. Sin embargo nos encontramos con algunas «chanchadas» que permite TypeScript, a pesar de haber advertido a los alumnos, como por ejemplo el uso de Any en los objetos de negocio. Aún no lo hemos confirmado con el equipo pero creo que TypeScript es una de las cosas que mantendremos.

Cierro con algunos números concretos surgidos de nuestra encuesta:

  • Evaluación general de la materia (promedio): 8,4 / 10
  • Dinámica de clases : 4,4 / 5
  • Materiales de estudio: 4,4 / 5
  • Claridad de los docentes: 4,5 / 5
  • El 90% de los alumnos estuvieron de acuerdo con la cantidad de clases presenciales (el 10% restante hubiera preferido más presencialidad)
  • Cantidad de respuestas: 18

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.

Y un día me pidieron hacer una prueba técnica

Por casi 15 años he estado trabajando de forma independiente, en la gran mayoría de los casos haciendo trabajo que podría calificar como consultoría/coaching. En todo este tiempo nunca me habían pedido hacer una prueba técnica de programación. Me ha tocado hacer algo tipo «entrevista técnica» pero fue pura charla, nada de codear.

Resulta que ahora, un potencial cliente me pidió hacer una prueba técnica, en el lenguaje de mi elección, una hora de pair-programming con un tech lead de la organización. Cuando lo comenté con un colega, le resultó doblemente curioso: por un lado le llamó la atención que me hubieran pedido la prueba y por otro que yo haya aceptado. Dadas las características del trabajo a realizar me pareció muy razonable el pedido, así que acepté con gusto.

En un par de semanas les cuento.

Recursos de mi charla de Patrones en Nerdearla

Ayer di mi charla en nerdearla y ayer mismo quedó disponible en YouTube. En realidad la charla la grabe hace ~1 mes y ayer fue «emitida» la grabación. Mientras se emitía yo estaba conectado en la plataforma chateando con «los espectadores» entre los que encontré a varios ex-alumnos y ex-colegas de trabajo. Una vez terminada la charla, salí en vivo en el stream para contestar consultas.

Comparto aquí algunos recursos que mencioné:

Agradezco a la gente de nerdearla por darme la oportunidad de dar la charla y mucho más por hacer este gran evento.

Patrones de Diseño @ Nerdearla España 2025

Mañana estaré participando de Nerdearla España 2025, mi charla «Patrones de Diseño: de vuelta a la bases» (que ya está grabada) será emitida mañana jueves 13 a las 7:25 AM hora Argentina (11:25 AM hora de España). Mientras se tramite la charla estaré disponible en el chat y una vez terminada la charla saldré al aire para contestar consultas en el stream.

Esta charla la preparé exclusivamente para este evento y es la primera vez que la doy. Como suele ocurrir, algunos de sus contenidos son parte de lo que suelo dar en mi cursos en la universidad y que suelo aplicar en mis propios proyectos.

Lo que me motivó a armar esta charla es que muchas veces me encuentro gente utilizando ciertos patrones «en forma automática» sin tener en claro la razón, sin saber a ciencia cierta lo que se pretende solucionar con el uso del patrón. A partir de esto decidí enfocarme en algunos principios de los patrones y explorar puntualmente 3 patrones muy populares que suelen utilizarse en conjunto: MVC, DTO y Repository.