El desafió de Enseñar a Diseñar

El desafió de Enseñar a Diseñar

Desde mi comienzo en la carrera docente siempre he estado en materias que en mayor o menor medida han incluido la temática de diseño de software. Cuando estaba en Algo3 y AyDOO era diseño a nivel de clases, ahora en MeMo2 cubrimos un poco de diseño a nivel de clases y también diseño de más alto nivel (arquitectura e infraestructura). Enseñar a diseñar es una tarea que me parece muy difícil. De entrada debemos decir que no hay diseños «malos» o «buenos», sino que un diseño podrá ser más o menos conveniente dependiente del contexto. Un diseño es consecuencia de un conjunto de decisiones, diseñar es decidir, elegir. Pensando en el proceso de diseño veo al menos 3 pasos:
  1. Entender el contexto, el problema a resolver, las restricciones y necesidades. Esto es lo que Kazman denomina Architectural Drivers.
  2. Entendido el contexto hay que identificar las decisiones relevantes que deben tomarse.
  3. Finalmente para cada decisión relevante hay que analizar las posibles alternativas y elegir una. Esto puede implicar hacer algunas pruebas de concepto para poder tomar decisiones con evidencia que las respalde.
El punto 1 cae dentro del área denominada ingeniería de requerimientos y cuenta con un amplio cuerpo de conocimiento. El punto 2, ya es más complejo y más allá del cuerpo de conocimiento requiere de experiencia, lo cual es bastante difícil de transmitir. El punto 3 también reviste de complejidad pero creo que en general es más fácil que el punto 2. A mi parecer identificar opciones y evaluarlas para decidir es una trabajo en esencia muy ingenieril. A comienzo de año estábamos hablando con mi colega docente Diego Marcet sobre los criterios de corrección de un ejercicio de AyDOO y lo vimos:
Pretender que en un cuatrimestre académico alguien aprenda a diseñar es demasiado ambicioso, o sea, se puede enseñar algún método/heurística pero pretender dominarlo y generar buenos resultados puede ser difícil. Por ello ajustamos nuestro objetivo para centrarnos en dar a los alumnos herramientas para ser capaces de detectar las decisiones importantes y al mismo tiempo que sean capaces de detectar decisiones inapropiadas para un contexto dado.
De cara a este objetivo trabajamos bastante sobre código ajeno, o sea, analizando y extendiendo código existente. Continuará….

Cierre de cuatrimestre AyDOO 2018 @ UNTREF

La semana pasada cerramos el curso 2018 de Análisis y Diseño Orientado a Objetos en UNTREF. Personalmente creo que en términos organizativos fue una de las mejores ediciones. Estos son los puntos destacados del cuatrimestre:

  • 12 inscriptos: 7 aprobados, 2 abandonos, 1 desaprobado y 2 con final pendiente
  • La nota promedio de cierre de cursada fue 6,6/10
  • La evaluación general de la materia realizada por los alumnos (vía encuesta anónima) fue de 8,3/10.
  • El tiempo promedio semanal dedicado por los alumnos a la materia fuera del aula fue de 10 hs
  • El equipo docente estuvo conformado por Diego Marcet, Lucas Campaner y yo

Entre los puntos a mejorar los alumnos destacaron:

  • Necesidad de mayor claridad en la consigna de los ejercicios
  • Necesidad de unificar algunos criterios de corrección.

Casi con seguridad este fue el último cuatrimestre de esta materia, ya que la misma pertenece al viejo plan de estudios que está siendo reemplazado. Es por esto que me parece interesante aprovechar para compartir algunas estadísticas históricas a lo largo de los últimos 3 años:

  • La evaluación general de la materia evolucionó constantemente en forma positiva, al igual que la claridad de los contenidos y la dinámica de clases.
  • Al mismo tiempo la cantidad de inscriptos y la nota formal de aprobación muestran una disminución.
  • Al cabo de 3 años la evaluación general de los fue 7,9 (promedio) mientras que la nota promedio de aprobación fue 7.5.
  • El promedio general de aprobados de la materia fue de 75% (en el 25 % restante están los que no aprobaron durante la cursada y que tal vez aprobaron en un fecha posterior o en un examen libre).

Promediando el cuatrimestre en AyDOO @ UNTREF

Hemos completado la séptima semana de clase de Análisis y Diseño Orientado a Objetos en UNTreF. Este cuatrimestre viene con varias novedades.

En primer lugar tuvimos un cambio de equipo el cual esta conformado por: Diego Marcet (egresado de FIUBA con quien tuve el gusto de trabajar profesionalmente en diversas ocasiones y que está definitivamente en mi Dream Team) y Lucas Campaner (estudiante de UNTreF y uno de los mejores ex-alumno de la materia).

Otra novedad fue el cambio de la herramienta de soporte, comenzamos a utilizar Canvas LMS, una herramienta que yo ya venía utilizando en otras materias.

Finalmente la novedad a mi parecer más importante es el cambio en la dinámica de la clases. Este cuatrimestre estamos dividiendo la clase en 2 partes. En la primera vemos algo de teoría, atendemos consultas o resolvemos algún ejercicio en forma conjunta utilizando el proyector. En la segunda nos dedicamos a programar. Planteamos alguna consigna y programamos en grupos de tres, haciendo lo que podríamos denominar como «trio-programming» (o pair-programming con trios en lugar de pares). Al mismo tiempo los docentes vamos rotando por los equipos atendiendo dudas, debatiendo diseños y programando.

Esta semana, hicimos un retrospectiva con la intención de tener un feedback formal de los alumnos y detectar oportunidades de mejora. El feedback fue muy positivo y los alumnos destacaron el hecho de programar en clase. Entre los puntos accionables que salieron de la retrospectiva están:

  • Tener una semana sin tareas. En la dinámica que llevamos los alumnos tienen tareas todas las semanas lo cual hace que la materia tenga un ritmo intenso. Suele ocurrir (como en cualquier contexto de aprendizaje) que los alumnos deben reentregar alguna tarea y eso complica aún más la dinámica ya de por si intensa. En ese contexto los alumnos sugirieron tener una semana sin tareas para que quienes estén adeudando algo puedan ponerse al día.
  • Mejorar el material de estudio sobre diagramas de secuencia que actualmente resulta insuficiente.
  • Ajustar el tiempo de requerido por la materia y la dinámica de reentregas. Si bien en nuestro diseño de la materia esperábamos una dedicación extra-clase de 6 horas semanales, los alumnos reportaron estar invirtiendo unas 10 horas. Parte de las cuales resulta consecuencia de las múltiples reentregas que tienen algunas tareas. En este sentido acordamos que cada tarea tendrá solo una reentrega.

Cierre de AyDOO 2017 en UNTreF

Se fue otro cuatrimestre y como de costumbre es momento del informe de cierre.

El primer punto a destacar es que, incorporando el feedback de la edición anterior, ajustamos la carga de trabajo y ampliamos el equipo docente. En la edición anterior yo fui el único docente, mientras que en este caso, también participaron de la materia Facundo Arcieri y Diego Fontdevila. Personalmente creo que esta extensión del equipo fue muy positiva. Más allá de esta cuestión contextual, las métricas del curso fueron:

  • 14 inscriptos, 2 abandonos, 8 aprobados y 4 desaprobados.
  • La nota promedio de cierre de cursada fue 8/10.
  • La evaluación general de la materia realizada por los alumnos (vía encuesta anónima) fue de 7,9/10.

Como siempre cerramos la materia con una retrospectiva. Entre los puntos a probar/mejorar surgieron:

  • El tiempo de corrección, en varios casos nos demoramos más de una semana en entregar las correcciones de las tareas semanales
  • Cambiar el campus, pues el que usamos tuvo varias caídas y algunas de las funcionalidades ofrecidas no están muy logradas
  • Hacer más ejercicios con Ruby y/o empezar a trabajarlo antes
  • Armar el calendario de entregas de forma tal de tener 2 semanas de trabajo entre la fecha de publicación de cada tarea y la fecha de vencimiento

Por otro, entre los puntos positivos de la materia los alumnos identificaron:

  • El uso del campus virtual
  • El stack de herramientas utilizado
  • La dinámica de cursada con evaluación constante

 

 

Preparando Análisis y Diseño Orientado a Objetos en UNTreF

Por estos días me encuentro preparándome para dictar esta materia el primer cuatrimestre de este año. Si bien ya he dictado este materia en otras ocasiones esta vez tengo el desafío de dictarla solo, las veces anteriores la dicté en conjunto con @dfontde. En base al feedback obtenido de las dictadas anteriores y de algunas ideas que probando en otras materias, he decido hacer algunos ajustes a la dinámica de dictado de la materia.

El avance de internet, las redes sociales y la sobrecarga de información requieren que la dinámica de las materias se adapte, por ello más allá de la clase presencial semanal tendremos un modelo de aula extendida basado en un plataforma web. En base a esto se espera que los alumnos tengan una interacción constante con todo el grupo de estudio. Por cada hora de clase presencial se espera una dedicación de al menos una hora de trabajo fuera del aula. Dicho esto y pasando en limpio: los alumnos que cursen la materia deberán dedicar al menos 8 horas semanales todas las semanas. Dependiendo de cuanta maña pueda darse cada alumno, puede que la materia le insuma unas 6 horas semanales o puede que le insuma unas 10. El punto clave aquí es que a diferencia de otras materias no es posible llevar esta materia «haciendo la plancha» y estudiando a 30 horas seguidas los días previos a la evaluación. Se quiere una dedicación constante.

Respecto del mecanismo de evaluación no me gusta tomar examen escrito (aunque no lo descarto) y por ello estoy diseñando un mecanismo de evaluación basado en tareas semanales. La mayoría de estas tareas será de índole individual. Las tareas consistirán principalmente en lecturas con cuestionarios asociados y resolución de problemas de modelado y programación.

Análisis y Diseño Orientado a Objetos en UNTreF

Este cuatrimeste estamos con DiegoF dictando esta materia por primera vez, un desafio por demas interesante.

Nos hemos plateado como objetivos:

  • Que los alumnos desarrollen una capacidad de análisis y diseño para atacar problemas de distinta índole, tanto a nivel software como hardware.
  • Presentar un método formal de trabajo aplicable a su vida profesional.
  • Construir una caja de herramientas de diseño para su uso en posteriores materias y  también en el ejercicio profesional.

Complementariamente a estos objetivos de alto nivel también pretendemos:

  • Trabajar con varios casos de estudio, pues creemos que la mejor manera de aprender a diseñar es diseñando y revisando diseños.
  • Desarrollar actividades periódicas que complementen la teoría y ayuden a poner en práctica los conceptos expuestos.
  • Trabajar con distintos tipos de sistemas: de información, de tiempo real y embebidos entre otros.
  • Proveer herramientas para documentar un diseño.
  • Reflexionar sobre el costo y el valor de la flexibilidad.

Si bien no hemos encontrado un libro de texto que cubra la totalidad de los temas que queremos cubrir, hemos decido recomendar a los alumnos el libro de Craig Larman, UML y Patrones: Introducción al análisis y diseño orientado objetos y al proceso unificado. Esta decisión esta basada en que el mencionado libro provee una buen acercamiento a los temas centrales de la materia utilizando herramientas muy difundidas y de uso cotidiano en la actualidad. Además el libro desarrolla un caso de estudio de punta a punta.
Entre los libros que hemos decidido utilizar para distintos temas puntuales estan:

A medidas que vaya corriendo el cuatrimestre intentaré ir compartiendo los resultados y descubrimientos que hagamos.