Preparando Ingeniería de Software 2022 @ UNTreF

Luego de dos ediciones 100% virtuales volvemos a la presencialidad. Si bien la universidad habilitó la presencialidad plena, nuestra idea es tener un esquema híbrido. En principio estamos planificando al menos 4 clases presenciales y las restantes online.

En términos de contenido, no planeamos novedades.

En términos de la dinámica de las clases esperamos hacer un mix de lo que eran nuestras clases presenciales pre-pandemia y nuestras clases online de la pandemia.

Un cambio que estamos evaluando es respecto del trabajo grupal de la materia. Personalmente tengo la idea de que el trabajo tenga un complejidad funcional y técnica un poco mayor que lo que veníamos haciendo, de forma tal que nos habilite a poner en práctica algunas cuestiones que hasta el momento solo estudiábamos de forma más superficial.

Finalmente cierro con algunos datos relevantes para quienes tengan pensado cursar la materia este 2022:

  • La materia se dictará en modalidad híbrida y que la asistencia es obligatoria.
  • Semanalmente son 4 horas de clase y adicionalmente hay que dedicar como mínimo otras 4 horas de estudio (según reportan los alumnos suelen dedicar unas ~7 horas extra clase)
  • Utilizamos Git pero no enseñamos Git
  • Programamos con Ruby pero que no enseñamos Ruby
  • Damos por sabido todo lo visto en la materias anteriores, pero definitivamente lo más relevante es lo visto en las materias «Algoritmos y Programación (1,2 y 3)» y «Diseño y Arquitectura de Sistemas«

Plan de Virtualización de la Educación Superior @ UNTreF

Este plan es una iniciativa del Ministerio de Educación disparada a partir de la pandemia y de la cual han participado distintas instituciones. UNTreF es una de ellas. En el contexto de este plan UNTreF llevó a cabo distintas acciones de capacitación (en algunas de las cuales he participado). Precisamente ayer se realizó una jornada en UNTReF donde se expusieron cinco casos de «adaptación» de materias/carreras a los contextos de virtualidad. Mi caso fue uno de esos cinco.

Estuve presentando la dinámica de trabajo de la materia Ingeniería de Software que dicto con Diego Marcet.

La jornada fue en formato mixto, había unas ~50 personas en el auditorio y otras ~80 vía Zoom. Para mi sorpresa la jornada fluyó muy bien (digo para mi sorpresa porque mi experiencia con reuniones mixtas ha sido bastante mala).

La presentación de cada caso se hacía en 25 minutos y luego había 3 especialistas en el rol de comentaristas que justamente realizaban comentarios/observaciones luego de cada presentación de caso. Me alegra que la universidad tenga este tipo de iniciativas y felicito al equipo de organización.

Para los interesados aquí están las diapositivas que utilicé durante mi exposición.

Notas de Seminario de Software Delivery 2022

La semana pasada completamos la tercera edición de este seminario. Quedé muy conforme con el resultado. Creo que hemos consolidado tanto el contenido como la dinámica. Es esta edición tuvimos un cambio de equipo, cambiamos de Diego, estuve acompañado por Diego Marcet en lugar de Diego Fontdevila. Este cambio estuvo motivado en parte porque tenemos la intención de que DiegoF dicte otro seminario de postgrado en la segunda mitad de año enfocado en cuestiones de arquitectura (más información sobre este en un futuro post).

El seminario estuvo estructurado en 6 encuentros de 2,5 horas, uno cada dos semanas. Adicionalmente tuvimos algunas sesiones de consulta agendadas específicamente para ver cuestiones referentes a los trabajos finales.

Tuvimos 10 participantes de perfil variado, gente industria, gente de academia y tuvimos hasta un extranjero. De estos 10 participantes, 8 completaron el curso y 3 llegaron incluso a completar el trabajo final de aplicación en campo.

La evaluación de los participantes fue muy positiva. Ante la pregunta ¿Cómo evalúas este seminario respecto de tus expectativas iniciales? Todas las respuestas indicaron que por encima de sus expectativas.

En términos históricos el Seminario tiene un Net Promoter Score de 84.

En principio si no hay cambios a nivel institucional, la siguiente edición del seminario será el primer cuatrimestre de 2023.

Dirección de trabajos finales de carrera

Luego de recibir varias consultas de alumnos para que dirija sus trabajos finales de carrera, he decidido resumir aquí algunas cuestiones/condiciones referentes mi forma de trabajo como director.

  • La dinámica de trabajo es al estilo Agile/XP tal como enseñamos en MeMo2, esto es: iteraciones semanales de tiempo fijo, 1 reunión de seguimiento (review+planning) semanal, entrega continua, gestión adaptativa, etc.
  • En línea con el punto anterior, solo dirijo alumnos que hayan cursado MeMo2 en mi curso, esto se debe a que no quiero tener que lidiar explicando la forma de trabajo, si cursaron MeMo2 entonces ya lo conocen.
  • Ya desde el planteo del proyecto apunto a que el trabajo no exceda de ninguna manera los 365 días.
  • Como consecuencia de los puntos espero una dedicación semanal (por alumno) de al menos unas 10 horas semanales.
  • La documentación (propuesta e informe técnico) la prefiero escrita en Latex, en particular me inclino por trabajar con Overleaf que ofrece una muy buena experiencia de trabajo colaborativo online al estilo Google Docs.
  • Para los trabajos que impliquen un desarrollo de software, apunto a que sean publicados bajo licencia open source.
  • Para los trabajos que sean más del tipo «research» apunto a que el trabajo sea publicado en alguna conferencia y/o revista.

Estos puntos representan una guía que pretendo seguir, pero en determinados casos son cuestiones «charlables». Quienes estén interesados en que dirija su trabajo pueden contactar por aquí.

Seminario de Postgrado en Software Delivery (3º edición)

La semana pasada confirmamos la realización de la tercera edición del Seminario de Postgrado en Software Delivery de UNTreF.

Este seminario está centrado en el proceso de desarrollo y entrega de software,cubriendo diversas prácticas tanto a nivel técnico como de gestión. El contenido está estructurado sobre la base de un conjunto de estudios formales y casos de estudio en torno a organizaciones de alto desempeño. En especial se destacan las ideas desarrolladas por Forsgren, Humble y Kim en su libro ​»Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations» (IT Revolution, 2018)​.Los objetivos del seminario son:

  • Entender el impacto de las capacidades de Software Delivery en la performance del negocio
  • Entender las prácticas técnicas y de gestión que mejoran la performance de delivery
  • Conocer posibles estrategias para la adopción de las mencionadas prácticas

El seminario está destinado a:

  • Profesionales de la industria (independientemente de su rol) que pretendan mejorar su práctica de software delivery
  • Docentes e investigadores que se desempeñen el temás de ingeniería de software y quieran familiarizarse con en el estado de la práctica de software delivery

Vamos a mantener el mismo formato que la edición anterior, eso es: una duración calendario de 3 meses, con un encuentro online de 150 minutos cada 15 días. Esto hace un total de 15 horas de clase repartidas en 6 encuentros. A esto se se suman otras ~40 horas de estudio/trabajo fuera del aula (algo así como unas 3 horas de trabajo constante todas las semanas adicionalmente al tiempo de clase). Las fechas de los encuentros serán:

  • 2022-04-13
  • 2022-04-27
  • 2022-05-11
  • 2022-05-25
  • 2022-06-08
  • 2022-06-22

Siempre en el horario de 9:30 a 12:00 (hora argentina, GMT-3).

Una de las novedades esta edición es que estaremos sumando al Lic. Diego Marcet al equipo docente.

Si bien el seminario se dicta en el contexto de una universidad nacional que ofrece carreras de grado gratuitas, este seminario es pago (como suele ocurrir con las actividades de postgrado). En esta edición el costo rondará los AR$ 10.000, digo rondará porque es una cuestión que me excede, yo no manejo esta recaudación ya que tengo un sueldo fijo que me paga la universidad por ser empleado permanente. De todas formas, siempre tramitamos algunas becas, principalmente destinadas a docentes y empleados de organismo públicos.

El día 23 de Marzo a las 9:30 haremos una charla abierta de presentación del seminario para todos los interesados los cuales deben registrarse aquí para que les compartamos el link de acceso. Adicionalmente a esta reunión, aquellos que quieran saber más sobre este seminario pueden encontrar algunos artículos en mi blog bajo la etiqueta seminario-sd y obviamente siempre pueden escribirme en casos de más dudas.

Cierre de otro cuatrimestre particular en Ingeniería de Software @ UNTREF

Particular no solo por ser en modalidad online sino también porque participaron del curso estudiantes externos a la carrera. Esto último es parte de una iniciativa de «abrir la universidad» que comenzamos hace ya un tiempo.

Algunos números descriptivos de este cuatrimestre:

  • Comenzamos con 10 estudiantes y terminamos con 9
  • La nota promedio de aprobación fue 8
  • Tuvimos 35 tareas individuales incluyendo videos, lecturas, cuestionarios y ejercicios de programación
  • Hicimos un trabajo grupal que duró 5 semanas trabajando en equipos de 3

Luego de 15 semanas de clases online, la última clase la hicimos en modo mixto: parte del curso reunido presencialmente y parte del curso en forma online. En 4 cuatrimestres de pandemia es la primera vez que hacemos una clase en esta modalidad y esta experiencia confirmó mi sospecha: es preferible estar todo el curso en un mismo medio, ya sea online o presencial, pero todos juntos.

Para la reunión presencial, a pesar de estar todos vacunados, seguimos algunos protocolos básicos: todos con tapabocas, ventanas abiertas, etc.

Como de costumbre la última clase estuvo dedicada a una actividad de cierre tipo retrospectiva. De esa actividad sacamos 3 accionables:

  • Armar una base de conocimiento (con una wiki o documento compartido) donde docentes y alumnos vayan colaborando con preguntas/respuestas frecuentes.
  • Enviar el checkpoint con las tareas semanales apenas terminada la clase.
  • Grabar las clases que sean más «teóricas»

Finalmente algunos números de las encuestas de fin de curso:

  • Evaluación general de la materia: 9.5 / 10
  • Conocimientos de los docentes: 5 / 5
  • Dinámica de las clases: 4.9 / 5
  • Materiales de estudio: 4.6 / 5
  • Dedicación semana promedio extra clase: 7.6 horas

Cierre del segundo Seminario de Software Delivery @ UNTreF

Este post viene con retraso ya que el seminario lo terminamos a mediados de julio pero igualmente quiero compartir algunos resultados de esta experiencia. Estoy convencido que esta segundo edición resultó mucho mejor que la primera en todo sentido y aún así creo que aún hay varias cuestiones por mejorar.

En primer lugar creo que los cambios que hicimos en términos del calendario de cursada y de duración de los encuentros virtuales resultaron muy beneficios: nos permitieron profundizar más en ciertas cuestiones al mismo tiempo que generaron una mejor cadencia de trabajo.

Otro cambio fundamental fue planteo del trabajo final. En esta ocasión fuimos mucho más claros con la consigna al mismo tiempo que la planteamos en forma muy temprana. Creo que esto fue fundamental para que pudieramos tener los trabajos finales que tuvimos. Hay que destacar que el trabajo final fue planteado como la implementación de una mejora concreta en la organización de cada participante.

Tuvimos 13 participantes de los cuales 12 completaron la cursada (asistieron a todas las clases y completaron las tareas individuales). Al mismo tiempo 11 participantes plantearon su trabajo final, casi todos lograron darle forma pero solo 4 lograron completarlo durante el seminario. Estos cuatro trabajos consistieron en:

  • Mejorar la trazabilidad de artefactos en un proceso de software delivery
  • Implementar un proceso de integración continua para una aplicación construida con tecnología legacy (Visual Basic 6)
  • Implementar un proceso de despliegue automatizado para una aplicación Asp.Net/IIS
  • Mejorar un proceso de integración continua agregando pruebas automatizadas y segmentando su ejecución

Estamos muy conformes con los resultados de esta segunda edición asi que ya está confirmada la próxima edición en 2022. Los potenciales interesados pueden escribirme aquí.

Seminario de Postgrado en Software Delivery (2º edición)

Desde hace un par de semanas que venimos preparando esta segunda edición que viene con algunos cambios. En primer lugar hemos ajustado la frecuencia de los encuentros, en esta ocasión serán cada 2 semanas. Por otro lado también cambiamos algunas cuestiones de la dinámica general como ser el hecho de que esperamos que los participantes comiencen su trabajo final ya desde el segundo encuentro para de esa forma poder hacer desarrollos de mayor grado de profundidad e impacto. Otro de los cambios es que esperamos contar con invitados especiales que vengan a compartir sus casos de aplicación de los temas que vemos en seminario. Las fechas de los encuentros de esta edición y los detalles del programa está disponibles aquí.

La semana próxima, el miércoles 17 de marzo, a las 9:30 hs hora argentina (GMT-3) haremos una charla de presentación del seminario donde apuntamos a contar brevemente sobre el contenido, la dinámica y también contestaremos dudas de los interesados. La participación en esta charla es gratuita pero requiere registración, simplemente hay que completar este formulario y les enviaremos el link de acceso.

Cierre de un año atípico en IngSoft @ UNTreF

El miércoles pasado cerramos un cuatrimestre atípico debido principalmente a la situación de pandemia. En términos formales tuvimos dos particularidades: todas las clases fueron virtuales y la duración del cuatrimestre fue de 14 semanas (y no de 16 como es habitualmente). Una curiosidad (o no tanto) es que de no ser por la pandemia es posible que el curso no se hubiera dictado ya que solo tuvimos 2 alumnos que estaban en condiciones formales de cursar la materia y con ese número es común que la universidad no abra el curso principalmente por la escasez de aula (tema muy polémico). Pero la situación de pandemia «nos sacó» del aula y de las restricciones asociadas. Es así que aceptamos en el curso algunos alumnos a los que les faltaba alguna correlativa y también a gente externa a la universidad. Esto último fue un experimento para «abrir» la universidad y que ahora terminado el curso, creemos que fue muy positivo.

Comparto algunas métricas del curso:

  • 14 clases
  • 31 tareas individuales incluyendo lecturas, videos, ejercicios de programación y cuestionarios
  • 1 trabajo grupal
  • 1 invitado de la industria
  • Cantidad de alumnos inscriptos 5
  • Cantidad de alumnos aprobados 5
  • Nota promedio de aprobación: 8.8
  • Dedicación promedio extra-clase por alumno por semana: ~6 horas

Egreso online de Ingeniería en Computación @ UNTreF

El miércoles pasado asistí a una defensa de trabajo final de carrera en modalidad online. El ponente fue Gonzalo Cozzi, quien presentó su trabajo final para obtener el título de Ingeniero en Computación de la Universidad Nacional de Tres de Febrero. Los jurados evaluadores fueron Carlos Fontela, Diego Fontdevila y Diego Marcet. También estuvo en la defensa el director de la carrera Alejandro Oliveros. Yo participé en la presentación en calidad de director del trabajo presentado.

La presentación de Gonzalo fue muy sólida, ordenada y en tiempo. Los jurados felicitaron a Gonzalo por el trabajo realizado. Yo como director del trabajo también quedé muy satisfecho, tanto con el resultado como con todo el proceso de trabajo.

El trabajo en cuestión consistió en el desarrollo un radiador de información incluyendo una solución integral de software y hardware y soportando distintas arquitecturas de despliegue:

  • SmartTV + Cloud
  • SmartTV + Raspberry Pi
  • TV/Monitor + Raspberry Pi

El software está desarrollo con una arquitectura hexagonal, la cual a partir de un modelo de ports and adapters permite integrar distintas herramientas de una habitual con los proyectos de desarrollo. Out-of-the-box hay soporte de conectores para GitHub, GitLab, Redmine y Travis-CI.

Todo el código del proyecto está disponible en GitHub bajo licencia GPL-V3.

Algunos punto interesantes para destacar de este trabajo:

  • Se buscó proveer una solución integral contemplando software y hardware.
  • El trabajo está publicado con licencia de código abierto.
  • El trabajo está desarrollado de forma tal que permite muy fácilmente incorporar extensiones lo cual puede significar un oportunidad interesante para trabajos finales de otros alumnos (interesados no duden en contactarme).
  • Adicionalmente a la presentación formal de trabajo en la universidad, el mismo también fue presentado en un congreso de ingeniería.

¡Felicitaciones Gonza!

Abajo (los jurados): Carlos, Diego y Diego
Arriba: Nico, Alejandro y Gonzalo