Enseñanza de Métodos Ágiles en Argentina

Corté el título porque quedaba demasiado largo, pero para ser preciso debería haber puesto: Enseñanza de Métodos ágiles de Desarrollo de Software en Argentina. Estado del Arte. Este es el título formal del trabajo con el que completé mi carrera de Especialista en Tecnología Informática Aplicada en Educación (UNLP).

Este trabajo es un estudio formal y sistemático basado en métodos empíricos de investigación. El trabajo completo tuvo 3 fases.

La primera fase, a fines de 2018, fue incluso antes de comenzar formalmente con el trabajo de especialización. Hice una encuesta entre estudiantes en CONAIISI 2018. El resultado de esa encuesta fue un artículo titulado en “Initial Assessment of Agile Development in theUndergraduate Curricula” que fue publicado en el Workshop Brasilero de Métodos Agiles que se llevó a cabo en el contexto de Agile Brazil 2019.

La segunda fase, ya en el contexto de la especialización, consistió en un mapeo sistemático de literatura que fue publicado en el XXV Congreso Argentino de Ciencias de la Computación con el título Introducing Agile Methods in Undergraduate Curricula, a Systematic Mapping Study

Hasta este punto, toda la información recolectada no resultaba suficiente para tener un entendimiento lo suficientemente certero sobre el estado de la enseñanza de métodos ágiles en Argentina. Entonces ya en la fase 3 realicé una encuesta a docentes de Ingeniería de Software, que es el área donde típicamente se estudian métodos ágiles. Para esto contacte en forma personalizada a los docentes de Ingeniería de Software de la universidades pertenecientes a la Red de Universidades Nacionales con Carreras de Informática, un organismo que agrupa tanto a instituciones públicas como privadas.
Logré así recolectar respuestas de 69 cursos pertenecientes a 44 instituciones distintas. Según los datos provistos por de la Secretaría de Políticas Universitarias del Ministerio de Educación de la Nación , las instituciones relevadas en mi estudio “generaron” en ~77 % de los egresados de las carreras universitarias de informática en el país en el 2017. Esto da cuenta de la representatividad de la muestra analizada.

Entre los resultados encontrados, destacan:

  • Los métodos ágiles son enseñados en el 97.7 % de las carreras de grado relevadas. Más aún, en el 54,5 % de los casos, los métodos ágiles se estudian en el contexto de varias materias que también abordan otros temas.
  • La gran mayoría de los encuestados (83.8 %) dicta sus materias de forma completamente presencial. Este hecho puede estar influido por cuestiones de regulaciones ya que muchas instituciones no admiten alternativas de educación no presencial y exigen asistencia física a las clases. Sin embargo, el 70 % de los encuestados utiliza en sus materias un campus virtual, lo cual representa una extensión del aula y por ende cierto grado de hibridación en la modalidad de enseñanza.
  • El 77 % de los encuestados indicó enseñar Scrum, pero tan solo el 53 % indicó enseñar Retrospectivas, que sin duda es una de las prácticas más importantes de Scrum. Iteration Planning, Iteration Review y Daily Standup son todas prácticas centrales de Scrum y su porcentaje de enseñanza es bastante menor al de Scrum
  • Respecto de las prácticas ágiles; User Stories, Iteration Planning, Planning Pocker, Retrospectives e Iteration Review son las cinco prácticas más enseñadas, las cinco por encima del 50 %. Cabe destacar que estas cinco prácticas pertenecen todas a la categoría “Practicas de gestión”.

Los interesados en leer el trabajo completo lo pueden descargar desde este link.

El próximo lunes 17 a las 19.00 hs voy a hacer un sesión online para compartir los resultados de este estudio y debatir al respecto. Si estas interesado en participar, puedes registrarte aquí.

The Pragmatic Programmer

La primera edición de este libro fue publicada en 1999 pero yo no lo conocí hasta ~2005. Y no lo leí hasta 2009 cuando lo encontré la biblioteca de la empresa en la que trabajaba en aquella época. El año pasado se publicó la edición 20 aniversario y no dudé en comprarlo. Ayer terminé de leerlo.

Mas allá de la elegancia de la edición tapa dura, a nivel contenido el libro no tiene desperdicio y creo que es una lectura obligada para todo developer. Cubre temas muy variados que van desde principios de diseño, estimación, hasta ética profesional pasando por programación concurrente, técnicas de testing y recomendaciones de organizacional personal.

Complementariamente a la usual división en capítulos, el libro está organizado en “temas” (topics) que son subdivisiones de los capítulos y la extensión de cada uno es tal que su lectura puede realizarse en 30 minutos (lo cual a mi personalmente me facilita mucho la lectura). Asimismo al final de cada tema se listan los temas relacionados y se ofrece una serie de ejercicios, algunos de reflexión, otros de programación, etc.

Los autores son Dave Thomas y Andrew Hunt, ambos autores del Agile Manifesto. Tal vez por eso muchas de las cuestiones tratadas en el libro están abordadas desde una perspectiva ágil.

Esta edición 20 aniversario es bastante distinta a la edición original de 1999. La esencia de libro es la misma pero el contenido ha sido totalmente actualizado. De hecho los propios autores reconocen que hay partes del libro que fueron completamente reescritas.

#HistoriaDeTrinchera: equipo completo

Al cabo de 6 iteraciones hemos completado el equipo. Resulta que al comenzar la sexta iteración se sumó el miembro faltante. Tenemos ahora cubiertos todos los roles/habilidades que consideramos necesarios para llevar adelante el proyecto y al mismo tiempo hemos alcanzado, a mi criterio (no estoy seguro que mis colegas compartan) el número máximo de personas que el equipo puede tener.

Nuestra expectativa es poder tener dentro del equipo todas las habilidades (y autorizaciones) para operar en un esquema de entrega continua dentro de ciertas restricciones organizacionales que por el momento no parecen estar abiertas a negociación (tema de otro post). En este sentido tenemos los siguientes roles/habilidades:

  • Developer
  • Tester
  • Diseñador de UI/UX
  • Facilitador
  • Product Owner
  • Infraestructura

Estos roles/habilidades son ocupados por personas que están en el día a día del proyecto y que como tal participan diariamente de las reuniones de sincronización (daily standups). Algunas aclaraciones que pueden resultar relevantes para el lector:

  • Developers: apuntamos a que puedan desarrollar una funcionalidad de punta a punta, lo cual implica tanto hacer tanto front (angular) como back (netCore) y tocar algunas cuestiones de infra como pipeline de CI/CD y generación de los correspondientes contenedores.
  • Testers: en el sentido de Agile, trabajan muy de la mano de la gente de negocio y con una visión funcional. Colaboran en la identificación/definición de casos y también en su automatización.
  • Diseñadores de UI/UX: diseñan/validan la experiencia del usuario y definen las pantallas. Trabajan muy de cerca con la gente del negocio y los usuarios. No codean, su trabajo llega hasta el maquetado con alguna herramienta tipo Miro, Marvel y Zeplin.
  • Facilitadores: llamados a veces Scrum Masters o coaches, ayudan a que el equipo mantenga el foco en el proceso y la entrega de valor, destraban impedimentos y mantienen los diálogos abiertos con otros equipos/áreas.
  • Product Owners: es gente con perfil de negocio que define el norte del producto, concentra los pedidos de los usuarios y los prioriza.
  • Infraestructura: más allá del control que tenga el equipo sobre la infraestructura es fundamental que el equipo entienda (y pueda definir y discutir) ciertas cuestiones de infraestructura porque pueden impactar en la implementación de algunas características/funcionalidades de la aplicación. En este caso particular, la organización tiene un área de DevOps con la cual nosotros como equipo de desarrollo trabajamos muy cerca en un ida y vuelta constante. Luego ese equipo de DevOps se encarga de la interacción con el resto de los sectores de infraestructura como seguridad, networking, etc.
    (este es un punto que puede resultar polémico y por ello le dedicaré un post aparte)

Todo este conjunto de roles/habilidades está repartido entre 12 personas, varias de ellas con asignación parcial (yo entre ellas). Para mi gusto ya son demasiadas personas y como algunos colegas coinciden con esto, es muy posible que en el corto/mediano plazo sumemos más gente y partamos el equipo en 2.

Sobre la cadencia de iteración

Sobre la cadencia de iteración

Personalmente me gusta trabajar con iteraciones de 1 semana. Pero en el proyecto que estoy trabajando actualmente acordamos trabajar en iteraciones de 2 semanas pues la mayoría del equipo así lo prefiere y no logré convencerlos. Y cuando digo la mayoría del equipo en este caso es todo el equipo salvo yo. Entre los argumentos de mis compañeros para no hacer iteraciones de 1 semanas se destacó: “si hacemos iteraciones de una semana vamos a invertir demasiado tiempo porcentual en planning, review y retro”. Personalmente no coincido, al ser las iteraciones más cortas, la planning y la review deberían también ser más cortas. Pero es cierto que más allá del tiempo dedicado a planning y review hay un costo de logística/setup de cada reunión.

Mi preferencia por las iteraciones de una semana se remonta a unos 10 años atrás. Desde entonces siempre que puedo intento trabajar de esta forma. Otra de mis preferencias es hacer las iteraciones en continuado agrupado en un mismo día las reuniones de revisión y planificación. Respecto de las retrospectivas no considero mandatorio que tengan la misma cadencia que la planificación. En varios proyectos he trabajado con una cadencia de planning/review semanal y con retrospectivas cada 2 o 3 semanas dependiendo de la consolidación del equipo.

Cuando me toca trabajar en iteraciones de 2 semanas (como en mi proyecto actual) yo igualmente en iteraciones de 1. No es que yo haga planning y review en solitario ni en paralelo, sino que al inicio de la iteración yo mentalmente planifico que voy hacer durante la primera semana. Una vez completa la primera semana, hago un checkpoint de mitad de iteración, leo el burndown chart, analizo cuánto hemos completado y veo como enfocar la semana siguiente de cara a intentar asegurar cumplir con el plan de la iteración o de ajustarlo si es que el contexto así lo requiere.

Agile a izquierda y derecha

Continuando con la inquietud que traje hace un par de días comparto algunas ideas más surgidas de mi intercambio con mi querido colega @Pablitux.

Dada la relevancia del factor humano, la consciencia del otro, el espíritu de co-creación y colaboración, uno podría pensar que Agile tiene cierto aire de “izquierda”.

Del mismo modo si pensamos en el foco en la entrega de valor, la eliminación de desperdicios y la optimización del flujo, uno podría pensar que es un enfoque resultadista, algo que suena más de “derecha”.

Más allá de esto pensamientos algunos hechos que podrían aportar a esta reflexión.

  • Toda la movida de Scrum at Scale tiene una onda muy corporativa
  • El libro de Tobias Mayer & Alan sobre Scrum se llama Por un Scrum Popular
  • En Ágiles 2017 no hubo sponsors, lo que podría interpretarse como una postura “anti mercado”
  • El Ágiles 2014 se hizo en un hotel de categoría, la organización estuvo a cargo de una empresa de eventos, el precio de la entrada fue record y los sponsors estuvieron muy presentes en el evento

Estudio sobre enseñanza de métodos ágiles (pedido de ayuda)

El principal foco de mi trabajo de investigación este año es la enseñanza de métodos ágiles en carreras universitarias de grado en Argentina. En ese sentido llevo publicados dos trabajos:

  • Introducing Agile Methods in Undergraduate Curricula, a Systematic Mapping Study, publicado en CACIC 2019
  • Initial Assessment of Agile Development in the Undergraduate Curricula, publicado en WBMA@AgileBrazil 2019

El primero es una revisión de sistemática de publicaciones. El segundo es un trabajo basado en una encuesta realizada a estudiantes de carreras de informática. El tercer paso de este trabajo de investigación es estudiar el tema desde las perspectiva docente y en ese sentido estoy contactando docentes de ingeniería de software y afines para revelar qué enseñan y cómo lo enseñan.

Hasta el momento he logrado contactar docentes de 22 universidades, no pretendo contactar docentes de todas las universidades de país, pero hay algunas que particularmente me gustaría poder contactar:

  • Universidad de Mendoza
  • Universidad Nacional de Córdoba
  • Universidad Nacional de Rosario
  • Universidad Nacional de Entre Ríos
  • Universidad Nacional de Formosa
  • Universidad Nacional de La Pampa
  • Universidad Nacional de Río Cuarto
  • Universidad Nacional de Santiago del Estero

Si algún lector puede darme una mano para contactar docentes de ingeniería de software de estas instituciones le estaré muy agradecido.

Agile, Economía, Tradicionalistas e Innovadores

El clima político que se ha vivido en Argentina desde el comienzo de las campañas electorales me llevo reflexionar sobre las posibles relaciones entre Agilismo y los tan mencionados modelos económicos que tanto han sido nombrados en estos últimos tiempos. Antes de adentrarme más en el tema quiero aclarar que no soy experto en estos temas, sino un simple ciudadano de a pie, cuyas ideas pueden implicar razonamientos erróneos. Hecha la advertencia, avanzo.

Dentro de lo que ha dado en llamarse “Agile” o “Agilismo” hay a mi entender dos corrientes que yo personalmente denomino “los tradicionalistas” y “los innovadores”.
Los tradicionalistas son lo que ven los métodos ágiles como literalmente los describe el manifiesto: “…formas mejores de desarrollar software…” y por consiguiente lo aplica puntual y concretamente al desarrollo de software.
Los innovadores son los que tienen una conexión más profunda con el Agilismo y lo aplican en diversos contextos de su vida, excediendo por mucho el desarrollo de software e incluso el ámbito laboral. Yo personalmente me considero tradicionalista pero tengo varios amigos y colegas que sin duda se ubicarían en el grupo de los innovadores.

Para los tradicionalista me parece que no hay conexión entre agile y los modelos económicos.

Pero en el caso de los innovadores sospecho que puede llegar a haber cierta conexión. Los innovadores “van con agile a todos lados” y eso hace que agile se filtre indefectiblemente en la discusión de modelos económicos. Y cuando hablo de modelos económicos no me refiero necesariamente a cuestiones de macroeconomía sino también a cuestiones más del día a día como la forma en que nos organizamos dentro de una organización. Un dato en este sentido: en el meetup de Agiles Argentina suele hablarse con bastante frecuencia de organizaciones horizontales. En contraposición a eso, mientras escribo estas líneas me viene a la memoria una conversación con un colega que me cuenta que está trabajando en un corporación internacional y que están implementado SAFe lo cual me hace pensar que estoy escribiendo boludeces (perdón el término, puede que no suene elegante pero es muy gráfico).

En fin, me cuesta articular argumentos, tal vez porque soy un tradicionalista. Voy a cortar aquí y voy a intentar validar algunas ideas con colegas innovadores a ver opinan.

Continuará….

Algunos datos de Agiles 2019

La semana pasada estuve participando de la conferencia Latinoamericana de Agilidad, previamente llamada Conferencia Latinoamericana de Métodos Ágiles. Desconozco cuándo ocurrió el rename, pero ocurrió.

En términos generales debo decir que estuvo muy bien. Superó mis expectativas, aunque sinceramente no esperaba demasiado considerando que a mi parecer en los últimos años la conferencia se viene “alejando” de la construcción de software para enfocarse en cuestiones más genéricas de gestión y colaboración.

Algunos puntos que me parece vale la pena destacar:

  • El lugar de la conferencia me pareció muy apropiado: un espacio enorme con más de 20 salas alrededor
  • Había 2 salas especialmente acondicionadas para sesiones de programación / con computadoras
  • Un bar/restaurant dentro del espacio abierto
  • No hubo un momento predefinido para el almuerzo, había sesiones todo el tiempo y cada uno elegía a qué hora parar para comer o incluso se podía seguir de largo. De esta forma se evitó congestión a la hora de almorzar
  • El lugar de la conferencia estaba ubicado entre un parque y un centro comercial. Se podía cruzar fácilmente al patio de comidas del centro comercial del mismo modo que se podía cruzar al parque para disfrutar el aire libre. Incluso me parece que hubo alguna sesión en el parque
  • El marketplace del open space fluyó bastante bien a pesar de la gran cantidad de participantes (~1000)
  • Respecto del contenido creo que hubo para todos los gustos:
    • sesiones técnicas / específicas de software,
    • sesiones más orientadas a la gestión / colaboración (la mayoría me parece que fueron de este tipo)
    • y sesiones diversas que no entran en ninguno de los otros dos grupos que mencioné

Esta es la tercera edición de la conferencia en formato 100% Open Space y sin keynotes, me parece que es un momento interesante para detenernos a pensar cómo queremos que sea el evento en las siguientes ediciones, pero ese es un tema que trataré en otro post.

Un detalle interesante de las credenciales es que tenían semillas incrustadas con la idea de plantar la credencial una vez finalizada la conferencia
En la apertura del evento hubo un show de tango: músicos en vivo y una pareja de baile

Notas de la sesión de libros de autores latinoamericanos en Ágiles 2019

Hoy en Agiles 2019 hicimos una sesión donde se presentaron los siguientes 8 libros:

  • Proyectos Ágiles con Scrum de Martin Salías & Martín Alaimo
  • Construcción de Software, una mirada Ágil, de Nicolás Paez, Diego Fontdevila y otros
  • Poder Creativo de Ingrid Astiz (presentado por María Thompson)
  • Historias de Usuario de Lucho Salazar y Jorge Abad
  • Ingeniería de Software con Scrum, de Dario Palminio
  • La serie del AOC, compilado por Nicolás Paez
  • Agilidad en 4 estaciones, de Melina Jajamovich
  • Desarrollo de Software Ágil en 10 Pines, de Federico Zuppa

Cada autor presentó su libro en 4 minutos y luego tuvimos un espacio para preguntas. En este link están los slides con los datos de contacto de los autores.

Finalmente cerramos las sesión regalando unos 40 ejemplares de los libros presentados. Dejamos los libros sobre una mesa y dejamos que la gente se los reparta con el siguiente compromiso:

  1. Llevarse no más de un libro por persona
  2. Twittear sobre libro
  3. Anotar en la contratapa del libro el nombre de quien se lo llevó y la fecha
  4. Leerlo y dar feedback al autor
  5. Pasarlo a otro persona para que repita el proceso

La idea es que lo libros no queden de adorno en una biblioteca sino que circulen por la comunidad.

Autores latinoamericanos: Diego Fondevila, Nicolas Paez, Dario Palminio, Federico Zuppa, Miaria Thompson, Melina Jajamovich, Jorga Abad, Natalia Baeza, Lucho Salazar, Daniel Celian, Martín Salías y Juanjo Zapico

AgileBrazil 2019, day 3

I attended to 3 session and the rest of the time I was talking with people in the coffee area.

The first session I attended was the one by Hugo Corbucci who talk about the test-pyramid and some variations on it. He shared his experience working on this topic at Digital Ocean where he currently works. Nice session.

Next, I attended a session by Joseph Yoser who talked about Scrum Patterns. It was an interesting session. Joseph talk about the patterns published at http://scrumbook.org/. During the session he just reviewed a couple of patters (the site contains around a hundred patters) and it seems a very interesting resource.

Finally, the closing of the conference was with a keynote session by Dr. Alistair Cockburn who talked about his approach called Heart of Agile. I was already familiar with this approach because my friend SolePinter who is actively working with it. I liked how the session was driven.