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

Sobre nuestra dinámica de aula invertida

En las dos materias que dicto (UBA y UNTreF) utilizamos la misma dinámica de clases. la cual está basada en una estrategia de aula invertida con técnicas de educación centrada en el alumno y evaluación constante. Más allá de las definiciones formales, y en términos concretos, esto implica que cada tema que estudiamos en la materia consta de tres instancias: estudio, aplicación y evaluación.

Aclaración: en las siguiente secciones cuando digo aula me refiero al tiempo/espacio compartido sincrónicamente entre alumno y docente en forma semanal

1. Estudio

Ocurre fuera del aula, el alumno debe sentarse a estudiar, típicamente viendo uno o varios videos o leyendo un texto. Esto reemplaza la típica clase magistral donde el docente expone pasando diapositivas. Es justamente este tipo de clases las que convertimos en videos y que los alumnos consumen fuera del aula.

2. Aplicación

Esto ocurre dentro del aula y puede tomar distintas formas dependiendo del tema en particular, pero siempre intentamos que sea una actividad interactiva. Puede que sea una sesión de mob-progamming o alguna actividad de simulación (como el Pizza Game) utilizando alguna herramienta de soporte como Miro, Mentimeter, Kahoot o similares.

3. Evaluación

La evaluación ocurre también fuera del aula y dependiendo del tema puede ser un ejercicio de programación y/o un cuestionario.

De esta forma cada tema es estudiado y evaluado individualmente. Luego complementariamente tenemos dos trabajos integradores donde los alumnos trabajan en equipos y ponen en práctica todos los temas ya estudiados de forma integrada.

Shu-Ha-Ri, grado y posgrado

Escribo este post a partir de varias consultas que he recibido en relación al experimento de la materia Ingeniería de Software y el Seminario de Posgrado en Software Delivery.

Primero un poco de contexto. Como docente de UNTreF, todos los segundos cuatrimestre de cada año dicto junto a Diego Marcet la materia Ingeniería de Software perteneciente a la carrera de grado de Ingeniería de Computación. Por otro lado, el primer cuatrimestre dicto el Seminario de Postgrado en Software Delivery.

La materia Ingeniería de Software está pensada para alumnos del último año de la carrera que tienen poca o nula experiencia laboral. Cubrimos los temas clásicos de ingeniería de software, pero en su mayoría lo hacemos desde una perspectiva de Extreme Programming, en contraposición a la visión tradicional. En este sentido los libros de referencia en nuestra materia son los de Beck, Shore y Freeman en lugar de los clásicos de Pressman y Sommerville. Al mismo tiempo el foco de la materia está en el trabajo de un equipo. También utilizamos bastante el libro que escribimos con Fontela, Fontdevila y otros colegas hace un par de años.

Por otro lado el seminario de Software Delivery está pensado para gente que ya curso una materia de ingeniería de software y que ya tiene al menos algunos años de experiencia laboral. Tratamos temas más avanzados que incluyen cuestiones organizacionales que implican trabajo con varios equipos. Aquí la bibliografía de referencia es el libro Accelerate y luego para cada uno de los temas que menciona este libro tenemos material complementario.

Desde la perspectiva del modelo de aprendizaje Shu-Ha-Ri, la materia de grado es claramente nivel Shu, enseñamos una forma de hacer las cosas. Me gusta explicar esto con la película Karate Kid: pulir y encerar, pulir y encerar. «Estimados alumnos, tiene que resolver esto y tiene que hacerlo con este proceso». Buscamos que los alumnos logren un pleno dominio de una técnica, de una forma de desarrollo software. Por su parte el seminario de postgrado es más nivel Ha, vemos varias formas de aproximar un problema y reflexionamos al respecto. Los participantes ya vienen con nivel Ha y buscamos que los participantes puedan dar el salto de Ha a Ri.

No estoy seguro si esta relación Shu => grado, Ha-Ri => postgrado, pero claramente aplica en este caso particular.

Cierre del Seminario de Software Delivery, primera edición

Recientemente completamos la primera edición del Seminario de Postgrado en Software Delivery que organizamos en UNTreF.

El seminario constó de 6 encuentros (virtuales, obviamente) de 2 horas cada uno. Participaron del seminario unos 14 profesionales pero menos de la mitad completaron el trabajo final. A algunos directamente no les interesó hacerlo, algunos otros lo intentaron pero por una u otra razón lo llegaron a completarlo. Sin embargo creemos que los trabajos completados fueron muy buenos.

Inicialmente, en una época pre-pandemia, el curso estaba planteado en una modalidad mixta de encuentros presenciales y virtuales, con lo cual el cambio a modalidad 100% virtual no fue tan difícil.

Como herramientas de soporte para el dictado de curso utilizamos Jitsi para los encuentros virtuales y Canvas como campus virtual. Esta última herramienta yo ya la venía utilizando para el dictado de mis materias de grado con muy buen resultado.

Todo el contenido del seminario estuvo regido por las temática descriptas en el libro Accelerate de Forsgren, Humble y Kim.

Una de las cuestiones que varios de los participantes destacaron como muy positiva fue la frecuencia de los encuentros. Dado que el curso tenía una carga importante de trabajo fuera de las clases, decidimos espaciar los 6 encuentros a los largo de 14 semanas se la siguiente forma:

  • Semana 1
  • Semana 5
  • Semana 6
  • Semana 10
  • Semana 11
  • Semana 14

Viendolo en retrospectiva creo que fue una buena decisión aunque para una próxima edición posiblemente ajustemos la distancia entre los encuentros.

Quedamos muy conformes con el seminario y ya tenemos decidido repetirlo, en principio el primer cuatrimestre del 2021. Aquellos interesado en particular en futuras ediciones puede contactarme por este medio.