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.

Evento: Desarrollo de Software en la era Post-Agile

Desde la Universidad Nacional de Tres de Febrero estamos organizando este evento en la previa de Agiles 2019. El evento lo estamos organizando desde el grupo de investigación en Procesos y Prácticas Agiles de Desarrollo de Software. Más allá del título (que lo pusimos con alguna intención marketinera) la idea es compartir lo que estamos viendo en la industria y en la academia en nuestras investigaciones sobre Desarrollo Ágil. Adicionalmente vamos a compartir lo que estamos haciendo en nuestra carrera de grado en UNTreF y vamos a anunciar nuestro primer seminario de postgrado sobre Software Delivery. A modo de cierre tendremos la presentación de una caso de industria a cargo de Diego Marcet (ContolShift Labs)

El evento se llevará a cabo el martes 17 de Septiembre a las 19.00 hs. (puntual) en la sede Buenos Aires del rectorado de UNTreF (Juncal 1319, Ciudad de Buenos Aires)

El evento es de entrada gratuita pero require registración (aquí).

Este es el texto que estamos usando en los flyers de difusión:

Agile alcanzó el mainstream, se filtró más allá del desarrollo de software y habilitó múltiples oportunidades de negocio. Trajo consigo una nueva mirada del desarrollo de software y el mundo del trabajo. En este proceso de difusión surgieron también distorsiones y oportunistas. Actualmente Agile perdió parte de su significado, muchas personas y organizaciones se consideran Agile sin casi haber recorrido mucho camino ni implementar sus prácticas. Sin embargo Agile marcó un antes y un después en la forma en que desarrollamos software y aportamos valor al negocio. A partir de esta mirada desafiante proponemos este espacio para compartir avances en investigación y experiencias reales de implementación en la industria.

Estudio formal sobre la enseñanza de Agile en Argentina

El año pasado empecé a trabajar en un estudio formal sobre la enseñanza de Agile. Más precisamente sobre la enseñanza de Métodos y Prácticas Ágiles de Desarrollo de Software. Fue así que en el contexto del la conferencia CONAIISI 2018 realicé una encuesta entre los estudiantes allí presentes. A partir de los datos recolectados en esa encuesta escribimos un artículo que enviamos al Workshop Brasilero de Métodos Agiles. Para nuestra alegría el artículo fue aceptado, será publicado en los proceedings de la conferencia y yo lo estaré presentando este miércoles.

Agradezco a todos los que participaron de la encuesta y comparto aquí algunos de los hallazgos más relevantes.

  • Al artículo se llama Initial Assessment of Agile Development in the Undergraduate Curricula
  • Conseguimos 62 datapoints (cantidad de encuestas respondidas) correspondientes a representantes de 14 universidades distintas
  • El 76% de los estudiantes avanzados indicaron haber estudiando Agile
  • Entre las prácticas más estudiadas (por encima de 60%) encontramos: Continuous Integration, Pair-Programming, Test Automation y Desarrollo Iterativo
  • Encontramos dos curiosidades importantes que sugieren que Agile puede estar siendo estudiado de forma muy superficial:
    • El 65 % de quienes respondieron haber estudiado Scrum indicaron que no estudiaron Retrospectivas
    • El 58% de quienes respondieron haber estudiado Extreme Programming indicaron no haber estudiado Test-Driven Development

Ingeniería de Software 2019 @ UNTreF

Este cuatrimestre será la primera vez que dictemos la materia en el contexto del nuevo plan de estudios. Esto implica ciertos cambios a nivel contenido respecto de lo que veníamos dando en años anteriores. Estos cambios tienen más que ver con cambios generales a nivel del plan de estudios que con cambios en el contenido particular de nuestra materia.

Más allá de los cambios de contenido, planeamos mantener la modalidad de cursada, eso es:

  1. Modalidad de aula invertida
  2. Como consecuencia del punto anterior hay una constante carga de trabajo fuera del aula (~6 horas semanales)
  3. Trabajo y evaluación constante a lo largo de toda la cursada

Según nos indica el sistema de inscripción, tendremos unos 10 alumnos, un excelente número para poder establecer un ambiente de confianza entre los alumnos y los docentes.

Las clases serán los días miércoles, de 18 a 22 horas (inicio puntual) en el aula 307 de la sede Caseros 1.