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.

Preparando Ingeniería de Software UNTreF 2020

Ya está definido que este año tendremos que dictar la materia en modalidad completamente a distancia y por ello tendremos que hacer algunos ajustes en la dinámica de las clases y de la materia en general. Al mismo tiempo tenemos ciertas dudas sobre la cantidad de alumnos que cursarán.

Por esto es que hemos habilitado este formulario para llenen que los alumnos interesados en cursar Ingeniería de Software este segundo cuatrimestre de 2020 y de esta forma poder hacer una planificación con menos incertidumbre. Quisiéramos que llenen este formulario todos los alumnos que tengan intención de cursar la materia incluso cuando no reúnan todas las correlativas necesarias.

De paso compartimos aquí algunos detalles de la forma en que dictamos la materia:

  • Intentamos cubrir los temas de la materia con materiales de estudio actualizados y herramientas de uso de frecuente en la industria
  • Para las cuestiones de programación utilizamos Ruby
  • Como herramienta de soporte para las tareas de programación y el trabajo grupal utilizamos GitLab
  • La materia requiere una dedicación semanal de entre 4 y 6 horas adicionales al tiempo de clase
  • La dinámica de evaluación es continua, con tareas semanales que incluyen lecturas, videos, ejercicios de programación y cuestionarios.
  • Este artículo describe formalmente la dinámica de la materia
  • Aquí pueden encontrar varios sobre el dictado de la materia en cuatrimestres anteriores

Seminario en Software Delivery

Bueno, finalmente y a pesar de la pandemia ya tenemos fecha para el seminario de Postgrado en Software Delivery de UNTreF.

La temática de este seminario está centrada 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 alta performance.  En especial se destacan las ideas desplegadas 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 curso está estructurado en cinco encuentros online. Está destinado a graduados universitarios de títulos vinculados con la informática o profesionales que acrediten experiencia de al menos 5 años de trabajo en la disciplina.
En el primer encuentro se presentará la dinámica del seminario y se compartirán los materiales de estudio sobre los que se trabajará en los siguientes encuentros. Los siguientes encuentros estarán dedicados a presentación de casos, actividades de debate e intercambio. Para completar el seminario los participantes deberán realizar un trabajo de final que deberán presentar en el último encuentro del seminario.
Los encuentros online se realizarán con la herramienta Google Meet y adicionalmente se utilizará un campus virtual para compartir los materiales y atender consultas fuera del espacio de clase.

El calendario de encuentros es:

  • 20 de Mayo
  • 17 de Junio
  • 24 de Junio
  • 22 de Julio
  • 29 de Julio

Todos los encuentros serán de 2 horas.  La dedicación estimada es de entre 3 y 4 horas semanales durante toda la duración del seminario.

Este seminario está dirigido a:

  • Profesionales informáticos involucrados en procesos de Software Delivery independientemente del rol que tengan en ese proceso
  • Profesores y/o Investigadores en el área de ingeniería de software

En ambos casos es imprescindible contar con un título de grado en el área de informático y tener al menos 5 años de experiencia profesional comprobable en la industria del software.

Los interesados en pueden completar el formulario inscripción en la página de la universidad.

Dinámica de un grupo de investigación part-time

La mayoría de la gente que conozco que trabaja en investigación lo hace con una alta dedicación. En general tienen un cargo de tiempo completo en la academia y dentro de ese contexto hacen investigación y algunas otras tareas como dar clases o participar de proyectos de extensión.

Pero en el grupo de investigación de que yo trabajo nadie tiene una dedicación de tiempo completo en la academia. Más aún algunos tienen dedicación de tiempo completo en la industria y la cuestión académica la hacen en “tiempo-extra”. Solo el director del proyecto tiene dedicación de tiempo completo en la academia, pero aún así la mayoría de su tiempo está dedicado a cuestiones administrativas/operativas ya que además de dirigir nuestro proyecto es también el director de la carrera de grado.

En mi caso particular yo tengo un cargo docente de dedicación no-exlusiva para dictar una materia y hacer investigación y colaborar en cuestiones varias con la dirección de la carrera. El presupuesto que nos da el hecho de tener el proyecto formalmente radicado en la universidad está restringido para ser utilizado en viajes, entradas a conferencia, pago de algunos recursos, etc, pero no sueldos. Al mismo tiempo, como contraprestación tenemos que generar cierta cantidad de publicaciones.

Respecto de la dinámica de trabajo en nuestro grupo de investigación cada miembro trabaja en un línea de investigación de la cual es responsable y como tal establece el ritmo de trabajo y es quien “rema” para publicar los resultados de su línea de investigación. Al mismo tiempo cada uno colabora con alguna otra línea y obviamente el director del grupo está involucrado en todas las líneas. En mi caso mi línea de trabajo es en Métodos Agiles de Desarrollo de Software y colaboro con DiegoF quien trabaja en cuestiones de Usabilidad de Procesos. A su vez DiegoF colabora con mi trabajo. Mas allá de todos los experimentos, hallazgos y conclusiones que uno logre en su investigación el avance y aporte de un proyecto se mide en términos de publicaciones. Esto se debe a que la publicación tiene un doble cometido. Por un lado es un mecanismo de validación, previo a la publicación el trabajo es evaluado por un comité y solo es publicado si ese comité lo considera valioso y correcto. Por otro lado la publicación es la forma de difundir trabajos y sus hallazgos.

Conceptualmente uno debería hacer el trabajo de investigación y luego ver dónde publicar. Pero personalmente esto no me funciona, o sea, necesito poner un deadline para evitar el trabajo se extienda infinitamente. Por eso, cuando logro cierto grado de avance ya intento definir una conferencia para publicar y eso ya me establece un deadline de finalización.

Para este 2020 tengo en mi plan de trabajo hacer tres publicaciones, dos de las cuales ya tengo en mente donde. El número no es arbitrario sino que tiene que ver con tres hitos/avances esperados de mi proyecto de investigación.

Yo me sumé al grupo de investigación en 2016 con lo cual mi experiencia es bastante acotada, pero a pesar de ello en estos 4 años he publicado, dentro de mi línea de investigación, 5 artículos en conferencias locales y 4 en conferencias internacionales. Más allá de las publicaciones estoy muy conforme con lo logrado porque he aprendido mucho de los temas investigados y también de cuestiones de metodología de investigación.

Por estos días estamos planificando los próximos dos años del proyecto de investigación (las convocatorias de proyectos de UNTreF son bi-anuales). Personalmente creo que hemos consolidado el grupo y me parece que estamos en condiciones de sumar más gente, de hecho ya tenemos algunas incorporaciones confirmadas.

Primera Ingeniera en Computación de UNTreF

Ayer Maribel Maisano(@maribelmai) hizo la defensa de su trabajo final y obtuvo su título de Ingeniera en Computación convirtiéndose en la primera egresada mujer de la carrera.
Tuve a Maribel de alumna años atrás y esta vez tuve el honor de ser parte del jurado evaluador de su trabajo. Los otros dos jurados fueron Pablo Cosso y Luis Argerich.

El reglamento de UNTreF no estipula una nota para los trabajos finales, sino simplemente un dictamen de aprobado / desaprobado, pero de haber tenido que poner una nota, le hubiera puesto un 10. Mis felicitaciones para Maribel.

Cierre de cuatrimestre en Ing-Soft @ UNTreF

Ayer terminamos Ingeniería de Software en UNTreF, fue la primera edición de la materia con el nuevo plan de estudio. Este cambio de plan de la carrera no trajo muchos cambios a nuestra materia particularmente, pero si hubo importantes cambios en la materias previas y posteriores a la nuestra, lo cual nos llevó a ajustar algunas clases y la profundidad de algunos temas.

Otra novedad de este cuatrimestre fue que contamos con un alumno en el equipo docente (FerGainey), lo cual a mi entender siempre es un aporte de valor pues aporta una visión distinta a la que tenemos los que dejamos de ser alumnos hace mucho tiempo.

Comenzamos la materia con 10 alumnos y la terminamos con 8, todos aprobados. La nota promedio de aprobación fue 9 (con desvío 1).

Comparto algunos números de la encuesta de fin de curso:

  • Evaluación general de la materia: 8,5 / 10
  • Claridad de los docentes 4,5 / 5
  • Conocimientos de los docentes sobre los temas de la materia 4,8 / 5
  • Dinámica de las clases 4,6 / 5
  • Materiales de estudio (textos y videos) 4,8 / 5
  • Dedicación promedio semanal extra-clase: 7,8 horas

Comparativamente este cuatrimestre ha sido el mejor puntuado desde 2016 que fue cuando yo me sumé a la materia.

Entre los ítems destacados que surgieron de la retrospectiva de cierre con los alumnos están:

  • Mejorar la consigna y material de estudio de algunas de las tareas
  • Mejorar el feedback escrito en la corrección de las tareas individuales
  • Mejorar el feedback al final de cada iteración del trabajo grupal
  • Incluir clases sobre nuevos temas (por ejemplo seguridad informática)
  • Hacer actividades técnicas/de programación en clase

Personalmente me voy muy conforme con el resultado del cuatrimestre y con varias ideas para el próximo año. Creo que logramos una muy buena química alumnos-docentes a lo largo del cuatrimestre.