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.

Notas sobre los trabajos finales de carrera en informática/computación

Notas sobre los trabajos finales de carrera en informática/computación

Durante este cuatrimestre he recibido varias consultas sobre trabajo finales de carrera tanto en FIUBA como en UNTREF.

En UNTreF los alumnos deben hacer un Trabajo final Integrador mientras en FIUBA los alumnos pueden optar por Trabajo Profesional o una Tesis. En este artículo quiero centrarme en el Trabajo Profesional de FIUBA que es equivalente al Trabajo Final Integrador de UNTreF. En otro post trataré el tema de la tesis.

Antes que nada aclaro: lo que escribo aquí no es información oficial de ninguna carrera. Esto es un resumen Es información que yo he recopilado a partir de charlas informales con otro

Algunas cuestiones generales sobre este TFI/TP son:

  • Puede hacerse en forma individual o grupal.
  • Se espera que insuma un esfuerzo aproximado de unas 200 horas por estudiante.
  • Es necesario un profesor que dirija el trabajo.
  • El estudiante debe presentar una propuesta formal con el aval de su director.
  • No existe una lista de temas para el trabajo, en ocasiones los profesores/directores tienen algunas propuestas.
  • Se espera que el trabajo integre los contenidos y habilidades adquiridas durante la carrera.
  • El trabajo no es un trabajo práctico de una materia, es un trabajo final de carrera con lo cual las complejidad y alcance deberían ser mayores a los de un trabajo práctico de una materia.
  • Típicamente el trabajo consiste en algún tipo de desarrollo. No es mandatorio que el desarrollo sea alto totalmente nuevo, la novedad o desafío puede estar en la forma de resolución, en las tecnologías utilizadas o algunas otra cuestión de índole ingenieril.
  • Una fuente interesante de ideas que suelo recomendar es el Technology Radar que publica periódicamente la gente de Thoughtworks

Espero estas líneas resulten de utilidad.

Seminario de Postgrado en Software Delivery

Seminario de Postgrado en Software Delivery

Desde el grupo de investigación en Prácticas y Procesos de Desarrollo de Software de la Universidad Nacional de Tres de Febrero estamos planificando un seminario de postgrado en Software Delivery.

Venimos hablamos de esta idea desde el año pasado pero recién en Marzo comenzamos a trabajar en la preparación. De hecho el título del seminario aún no es definitivo. Estamos apuntando a una modalidad blended: encuentros presenciales + encuentros remotos + trabajos para realizar entre encuentros.

Respecto de la audicencia, es un seminario de posgrado, con lo cual esperamos egresados de carreras de grado en el área de informática/computación/sistemas, con experiencia en delivery de sistemas software-intensive.

Recién empezamos a trabajar en el contenido, sabemos que habrá algo de diseño/descubrimiento de producto, algo de trabajo en equipo y bastante de arquitectura, calidad y operaciones.

La idea también es que los participantes no vengan simplemente en modo alumno a escuchar. Sino que pretendemos también traigan sus propias experiencias y que el equipo docente actué más como guia/facilitador a lo largo de todo el seminario.

No tenemos idea de cuantos interesados en participar podrá haber, pero dada la dinámica que tenemos en mente, necesitamos al menos 6 participantes y posiblemente no más de 15.

Trabajos finales en UNTreF Computación

Algunas carreras de grado requieren que los alumnos realicen un trabajo final para completar su formación. Dependiendo de la carrera y la institución ese trabajo final recibe distintos nombres: tesis, tesina, trabajo final integrador, etc, etc.

En la carrera de Ingeniería en Computación de UNTreF los alumnos tienen que hacer un trabajo final integrador. Como parte del plan de estudios hay una materia en la que se orienta/prepara al alumno para realizar dicho trabajo, pero la realización del trabajo no es parte de esta materia. En el mejor de los casos, al finalizar la materia los alumnos tienen planteada la propuesta formal para realizar el trabajo final. La realización del trabajo requiere de la dirección de un profesor. Una vez terminado el trabajo un jurado de 3 profesores evalúan lo realizado.

Tiempo atrás tuve el honor el de ser parte de jurado de la primera camada de egresados de la mencionada carrera de UNTreF. Recientemente recibí un par de consultas de alumnos por la posibilidad de ser su director. Ello me disparó la idea de escribir este post para compartir algunas generalidades de mi visión y estrategia para la realización de trabajos finales.

En primer lugar y en términos reglamentarios el trabajo final debe representar una carga de unas ~200 horas. Esto es equivalente a una materia intensa: (6 horas semanales de cursada + 6 horas de estudio extra-clase) * 16 semanas. Lo cual significa que trabajando de forma ordenada y constante, el trabajo puede completarse en 1 cuatrimestre. Al mismo tiempo para que esto sea factible, el trabajo debería ser planteado en términos de esfuerzo/calendario fijo, dejando el alcance con cierto grado de variabilidad.

Se espera que en el desarrollo de este trabajo el alumno aplique de forma integral los conocimientos obtenidos durante la carrera. El tema debe ser acordado entre el alumno y el director. Yo personalmente tengo ciertas restricciones de temas, o sea, no dirijo trabajos de cualquier temática y al mismo tiempo siempre algunas ideas de posibles temas que me gustaría dirigir.

Adicionalmente, espero que los alumnos que hagan su trabajo final bajo mi dirección lo presenten en una conferencia académica como JAIIO-EST o CONAIISI.

Cierre de segundo cuatrimestre 2018 en UNTreF

Ayer cerramos el cuatrimestre de la materia Ingeniería de Software. Fue un cuatrimestre un poco atípico, pues a mediado de cuatrimestre no nos gustó como estaba fluyendo la materia y por ello hicimos un ajuste importante en la planificación. Creemos que con esto logramos corregir el rumbo y finalmente cerramos la materia satisfactoriamente. Comparto algunos números del cuatrimestre.

  • Inscriptos: 9
  • Aprobados: 9
  • Nota promedio de aprobación: 7,6
  • Evaluación general de la materia: 8.4
  • Trabajos/tareas individuales: 10
  • Trabajos grupales: 1 (6 iteraciones)
  • Dedicación semanal promedio extra-clase: 11 horas (desvío 5)
Foto de WaldoG en el after-class luego del cierre de la materia

Ingeniería de Software: materiales de estudio

Hace un par de semanas un colega docente me hizo una consulta porque tenia que comenzar a dictar una materia de Ingeniería de Software. Hicimos una llamada vía skype y le conté sobre el enfoque que suelo usar en mis materias sobre dicha temática. Al final de la charla quedamos en que le compartiría los materias de estudio que utilizo y de ahí la idea de este post.

En primer lugar un poco de contexto. Yo dicto dos materias de Ingeniería de software una en UNTREF y otra en UBA (Facultad de Ingeniería). La materia de UNTREF se llama efectivamente Ingeniería de Software mientras que la de UBA se llama Métodos y Modelos en la Ingeniería de Software 2 (memo2). Más allá de las diferencias de nombres, el contenido de ambas materias es muy parecido y la dinámica de cursada y aprobación es la misma (está descripta en este paper).  Al mismo tiempo hay que destacar que en ambos casos los alumnos llegan luego de haber cursado previamente alguna otra materia de Ingeniería de Software más introductoria, con lo cual ya tienen cierta idea de un proceso de desarrollo y han leído/estudiado algunos de los clásicos como No Silver Bullet y el SWEBoK.

Explicado el contexto vamos al contenido. En ambos casos tomamos como base el libro Construcción de Software: una mirada ágil (aunque no lo leemos completo). Complementariamente tenemos los siguientes materiales (no todos son de «consumo obligatorio» y en algunos casos se referencia un libro, pero no pedimos leerlo completo sino algunos capítulos en particular):

Adicionalmente tenemos algunos material de nivelación sobre temáticas que se supone vieron en materias anteriores:

Debo mencionar que esta lista de materiales está en constante evolución.

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).

Sobre los trabajos finales de carrera

Reciente algunos alumnos vinieron a consultarme para que los dirija en la realización de sus trabajos finales de carrera. Luego de repetir los mismo por tercera vez decidí ponerlo por escrito.

Mi condición para dirigir un trabajo es que el desarrollo del mismo se haga bajo las siguientes condiciones:

  • El trabajo se plantea como un proyecto de alcance variable, esfuerzo fijo y calendario ajustable (pero no mucho). El esfuerzo está dado por lo que determina el reglamento de la institución. Respecto del calendario, la institución suele poner un tiempo límite pero en general es mucho mayor del necesario. Adicionalmente mi idea de calendario es que el trabajo esté listo en un plazo máximo de medio año.
  • No dirijo trabajos de alumnos que no hayan sido alumnos en alguna de mis materias. El trabajo final es un proyecto «one-shot», y la dupla alumno-director es en cierto modo como un equipo.  Resultaría muy arriesgado para un proyecto one-shot formar equipo con gente que no se conoce previamente.
  • Desde el punto de vista metodológico trabajamos a lo XP con iteraciones semanales.
  • A partir del momento que se inicia el desarrollo, se trabaja a un ritmo constante durante un período de ~16 semanas (un cuatrimestre).
  • Previo al comienzo de desarrollo hay un fase de setup/envisioning de aproximadamente 1 mes (a esfuerzo variable)
  • Una vez completado el desarrollo, hay un período de ~1 mes para terminar de redondear las cuestiones formales para la presentación del trabajo.

Para empezar recomiendo a los alumnos crear un GoogleDoc y empezar a escribir la propuesta de trabajo, no toda la propuesta pero si la parte de lo que sería la visión de proyecto.