En este tema tenemos dos cuestiones:
- La aplicación de técnicas agile en la enseñanza (más allá de cual sea la materia de estudio)
- La enseñanza de agile como un enfoque de la ingeniería de software.
En mi caso tengo experiencia en ambas cuestiones.
En Algoritmos y Programación 3 (Universidad de Buenos Aires) nuestro foco de estudio es la programación orientada a objetos pero incluimos en el programa de la materia algunas prácticas comunes en el movimiento agile como ser TDD e integración contínua. Esto se debe a que en la actualidad no concebimos la construcción de software orientado a objetos sin el uso de estas prácticas.
Por otro lado, en Elementos de Ingeniería de Software (Universidad Nacional de Quilmes) el enfoque de ingeniería que enseñamos es el enfoque Agile. Es necesario mencionar que el objetivo de esta materia es proveer, a un técnico en programación, herramientas suficientes para llevar adelante el desarrollo de un sistema de software. La discusión de porqué el enfoque Agile y no otros, es tema de otro post. Al mismo tiempo la forma en que se dicta la materia tiene varias técnicas de agiles como ser:
- La materia se encuentra dividida en iteraciones, al final de cada una los alumnos presentan un entregable y se realiza un retrospectiva sobre la forma en que se ha dictado la materia
- El entregable puede ser un informe, software, un documento de diseño o una evaluación
- Los alumnos se auto organizan para llevar adelante las distintas asignaciones
- Cada alumno lleva un backlog de sus tareas, que es priorizado por el docente y estimado por cada alumno
- Si al final de la iteración el entregable de un alumno no cumple con el criterio de done previamente acordado, entonces el docente puede decidir:
- «cancelar el proyecto», lo que básicamente significa que el alumno ha pedido la materia)
- agregar al backlog items distintos o adicionales para compensar/suplir el entregable incompleto
Asimismo hay dos cuestiones que nos parecen centrales más allá del enfoque agile:
- Los proyectos de software se desarrollan dia a dia y eso mismo hacemos en la materia. Hay que trabajar todas las semanas. Esto resulta en ocasiones «chocante» para los alumnos que muchas veces están acostumbrados a simplemente asistir a clase y sólo trabajar/estudiar la semana previa a un exámen.
- Un factor importante para el éxito de cualquier proyecto es la comunicación y el manejo de expectativas. Durante toda la materia hacemos mucho incapié en esto. Por eso, si un alumno piensa no asistir a una clase, tiene la obligación de avisar previamente al resto de la clase. No hace falta que dé explicaciones, simplemente decir «No asistiré a clase». Esto permite que el docente puede planificar mejor las actividades de la clase sabiendo con cuantos alumnos contará.
Aqui dejo algunos links a posts anteriores que agregan más información sobre lo mencionado aquí:
- Academia e Ingenieria de software
- Enseñár a estimar
- Práctica de estimación
- Mi enfoque hacia la arquitectura de software
- Particularidades de TPI/UNQ
- Cierre de cuatrimestre, segunda promoción
- Cierre de cuatrimestre, tercera promoción
Nota: este post surgió a partir de una consulta de mi colega Juan Gabardini quien me mencionó una iniciativa de gobierno de Medellín para la enseñanza de método ágiles en las universidades. Gracias Juan.