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.

Curso online de TDD

Hace ya un par de años que decidí no dictar más cursos de TDD, sin embargo desde ese momento me encontré con varias situaciones en las que necesité de un material introductorio a TDD, a modo de nivelación, para poder explicar luego el uso de TDD en escenarios más avanzados/reales. Busqué pero no encontré ninguno que me resultara convincente, entonces decidí generar mi propio material.

Es por esto que estas últimas semana estuve trabajando en un curso en video de «Introducción a TDD» que ya está disponible en la plataforma Udemy.

Si bien el curso está armando con C# y Nunit, la tecnología termina siendo anecdótica pues todo lo explicado es completamente aplicable en otros stacks de tecnología y todo el código es fácilmente traducible.

La idea de este curso es explicar los fundamentos de esta técnica de desarrollo ¿Vas a podes con este curso utilizar TDD inmediatamente en tu trabajo de desarrollo cotidiano? Depende, sin duda te va servir para entender la técnica y aplicarla en ciertas partes de tu código, pero de ahí a poder utilizarla al 100% en escenarios «reales», hay un largo trecho, hace falta mucha práctica y también utilizar algunas técnicas que intencionalmente no están cubiertas en este curso. Justamente la idea es: 1) comenzar tomando este curso, 2) practicar e incluso intentar aplicar la técnica en algunas partes/momentos de tu trabajo, 3) tomar una curso/taller más avanzado que tengo planeado publicar para mediados de 2025 y que incluirá muchas de las cosas que habitualmente doy en mis cursos de ingeniería de software.

Si sos estudiante de FIUBA y tenés pensado tomar mi curso de Ingeniería de Software 2, te recomiendo hacer este curso a modo de nivelación/repaso, escribime desde tu cuenta @fi.uba.ar y te tramito un pase gratuito.

Los seguidores habituales de este blog, también pueden escribirme y les tramito un pase.

Curso gratuito de Unit Testing

Una de las dificultades que suelo encontrar al intentar enseñar Test-Driven Development a gente que ya tiene varios años de experiencia en desarrollo de software (con los principiantes es distinto), es que muchas veces no saben hacer pruebas unitarias automatizadas. Por eso, hace un par de semanas cuando decidí experimentar haciendo un curso 100% en video, no dudé en hacerlo sobre unit testing.

Ayer finalmente, luego de un par de semana de trabajo completé el curso, son 2 horas de video divididas en varios videos de no más de 10 minutos. Además de los videos, incluye varios recursos de lectura y ejecicios. Todo el código del curso está basado en C# (netCore) y NUnit, pero todo el contenido es fácilmente extrapolable a otros lenguajes/frameworks. Personalmente creo que tomar el curso completo (videos + lecturas + ejercicios) podría llevar unas 4 o 5 horas dependiendo de la experiencia de programación de la persona.

El curso está publicado con acceso gratuito en la plataforma Udemy

Automatización de pruebas y entrega continua en Uruguay

En 25 de noviembre voy a dictar un taller sobre estas temáticas en Uruguay con la colaboración de @pablolis. La idea de hacer un taller que una estas dos temáticas surgió a partir de reiteradas consultas que he recibido y de encontrarme hablando de una de ellas a partir de una consulta que originalmente tenía que ver con la otra.

Ante todo me parece importante dejar bien en claro la relación entre estas dos cuestiones:

  • La automatización de pruebas puede hacerse independientemente de que se trabaje en un contexto de entrega continua. Más aún, ni siquiera es necesario que se trabaje con un proceso de desarrollo en particular. No importa si se trabaja con métodos ágiles, proceso unificado o algún proceso ad-hoc, siempre puede ser valioso automatizar las pruebas.
  • Trabajar en modo entrega continua requiere indefectiblemente contar con pruebas automatizadas, pues de lo contrario, habría que invertir mucho tiempo en pruebas manuales o bien ir a producción con un producto inestable o de calidad desconocida, lo cual podria traducirse en problemas continuos más que en entrega continua.

Con esta aclaración conceptual creo que queda clara la motivación para juntar ambas cuestiones en un mismo taller.

Hablando ahora de la estructura del taller, la idea es comenzar entiendo la práctica de entrega continua, sus beneficios, fundamentos y un conjunto de patrones para su implementación. Todo esto de la mano de un conjunto de herramientas para su implementación. En este sentido compartiremos con los participantes una máquina virtual con una aplicación de ejemplo y con un set de herramientas ya instalado, listo para que puedan poner manos a la obra a medida que vamos viendo las herramientas.

En varios puntos del flujo de entrega continua nos encontraremos con pruebas automatizadas. En cada uno de esos puntos nos detendremos a analizar el tipo de prueba y las distintas alternativas de herramientas para su automatización. Por más que las pruebas y herramientas las veamos en un contexto de entrega continua, como mencioné anteriormente, las mismas también pueden resultar útiles en cualquier otro contexto.

Entre las herramientas que veremos estan: Puppet, Chef, Docker, Jenkins, Go, Travis, Cucumber, Selenium, Fitnesse y JMeter.

Los interesados pueden consultar más detalles e información para inscripción en la página de Evolución Ágil.