Materia itinerante: Ingeniería de Software Continua

ingeniería de software continua

Ya voy por la tercera semana del curso de Ingeniería de Software Continua en Exactas y estoy convencido que la experiencia es complemente replicable en otras instituciones. Paso a explicar.

Esta materia la estoy dictando en calidad de Profesor Invitado, la facultad me contrata por tres meses para el dictado de la materia por única vez. La materia es ofrecida a lo alumnos como una materia optativa. El principal desafió que veía en el dictado de la materia estaba dado por el hecho de «venir de afuera» a dictar una materia sin saber el conocimiento con el que los alumnos llegarían a cursar la materia. Obviamente pude poner una restricción de correlatividades para mitigar la situación, pero esa correlatividad la determiné a partir de leer el plan de estudios. Pero muchas veces hay un gap entre lo que dice el plan en teoría y lo que encontramos en la realidad. No porque no se enseñe lo que dice el plan, sino porque en ocasiones no todo lo que el docente pretende enseñar termina siendo aprendido. A su vez los planes de estudio solo mencionan una lista de contenidos mínimos y queda a criterio de cada docente el tiempo y profundidad dedicado a cada tema.

Mi descubrimiento al cabo de estas 3 semanas de clase es que logré estructurar el curso de forma tal de bajar la dependencia con materias anteriores. Esto me lleva a intentar replicar esta experiencia de Profesor invitado en otras instituciones. A partir de esto estoy en la búsqueda de instituciones que quieran tenerme como profesor invitado para dictar el curso de Ingeniería de Software Continua. Más aún, podría dictar la materia en conjunto con un profesor de la institución de forma tal que ese profesor pueda seguir dictando la materia luego de mi visita. Mi motivación para hacer esto pasa por validar los materiales y metodología de enseñanza en diversos contextos.

Dicho todo esto, invito a aquellas instituciones que estén interesadas en hacer esta experiencia a que me contacten por aquí para ver si podemos trabajar en conjunto (y pueden ser instituciones de cualquier provincia/país). Aquí pueden ver el programa de la materia.

Charla Aceptada: Recorrida de prácticas técnicas para gente no téncnica

Desde el año pasado vengo trabajando en intentar transmitir la importancia de ciertas prácticas técnicas fundamentales para la entrega continua a aquellos que se encuentran trabajando con equipos de desarrollo de software y que no tienen un background técnico. En este sentido el año pasado diseñe un curso que ya he dictado dos veces y del cual ya tengo agendada una tercera edición.

En la misma línea del curso, envié una propuesta de charla a la conferencia internacional de Agile de la Agile Alliance. La propuesta fue aceptada y mi charla «Technical Practices Walkthrough for Non-technical People» está agendada para el jueves 27 de Julio a las 15:45. Para aquellos que asistan al evento nos vemos en Orlando y para los que no, tengo pensado hacer un Meet-up online en castellano para la comunidad hispano-parlante. Aún no tengo definida fecha ni plataforma, pero en cuanto la tenga lo publicaré aquí.

Sobre videos juegos como Trabajos finales de carrera

Más de una vez algún alumno me planteó la intención de hacer un video juego como trabajo final de carrera en FIUBA pero hasta el momento he tenido la oportunidad de dirigir solo un trabajo de este tipo. Sin embargo ese único caso, el video juego Fira de Facu Gertsner y Mati Feld, me permitió entender varias cuestiones del tema.

Hacer un juego implica al menos 3 cuestiones. En primer lugar tenemos la idea, el argumento, las reglas, en gran medida un trabajo creativo. En segundo lugar tenemos la parte artística: imágenes, sonido, animaciones, etc, lo tiene un parte creativa pero también una parte técnica. Finalmente está la programación. Podríamos ir un poco más allá y pensar en cuarta cuestión: la coordinación de tres cuestiones anteriores. La importancia y complejidad de cada una de estas cuestiones varia dependiendo del tipo de juego. Claramente la tarea de un ingeniero pasa por la programación pero también podríamos agregar la gestión.

Cuando un alumno se plantea hacer un juego como trabajo final debe considerar estas cuestiones. Asimismo, dependiendo también del tipo de juego, la programación puede no ser una tarea trivial. Otra vez dependiendo del tipo de juego puede ser necesario aprender algún lenguaje y/o framework particular y la mayor complejidad aquí no pasa por aprender el lenguaje/framework, sino por el hecho de tener que estimar y hacer un plan de trabajo sin tener un conocimiento del lenguaje/framework.

Teniendo en cuenta todo esto yo veo al menos 3 formas de plantear el trabajo final:

  1. La primera opción es tomar el paquete entero y hacer «todo», lo digo entre comillas porque la parte de artística podría hacerlo el alumno o bien la podría subcontratar pues es una cuestión que excede a lo que se espera de un estudiante de ingeniería.
  2. Una segunda opción es aprender el lenguaje/framework en la previa, o sea, dejar esa parte de investigación/aprendizaje fuera del alcance del trabajo final. En términos del esfuerzo total, la cuestión pareciera no cambiar pero hay una diferencia grande: si nos mandamos de una a hacer todo (opción 1) corremos el riesgo de armar un plan para X tiempo/esfuerzo y que luego termine llevando mucho más. En cambio, si hacemos la investigación en la previa, eso nos debería dar una mayor certeza para la planificación del proyecto disminuyendo así los riesgos de desvio.
  3. Otra opción podría ser no hacer el juego en sí, sino hacer un prototipo que si bien puede sonar a poco, puede igualmente ser un trabajo considerable si hay que aprender un framework como Unreal.

En lo personal creo que en todos los casos el alcance del trabajo debe incluir la distribución del juego, no necesariamente en un marketplace de juegos pero al menos en una página web donde resulte accesible al público en general.

Aclaro: lo que menciono aquí es una opinión personal, o sea: no es una posición oficial de la institución.

Resultado de la segunda edición del curso de Prácticas Técnicas para Scrum Masters

Hace un par de semanas completé el dictado de la segunda edición de este curso. Quedé muy conforme con los ajustes realizados luego de la primera edición y considero que el formato utilizado será el mismo en la siguiente edición: 5 encuentros de 2 horas cada uno.

En esta segundo edición, además de agregar un quinto encuentro, también agregué varias actividades para sumar así un total de 20 actividades extra clase. Según reportaron los mismos participantes, la dedicación promedio semanal fue de 3 horas lo cual hace que la dedicación total del curso ascienda a 25 horas (10 horas de encuentros online y 15 horas de actividades extra clase).

La evaluación del taller por parte de los participantes fue muy positiva.

Sin duda que hay algunas cuestiones que mejorar pero en términos generales estoy muy conforme y contento con el resultado. Comparto algunas frases que los participantes dejaron en el formulario de feedback:

«Me encantó el curso, me fue de mucha utilidad para comprender conceptos de los cuales no tenía conocimiento y que me permiten comunicarme mejor con los equipos a los que acompaño«

«Me gusto mucho el curso, la parte de devops fue la más esclarecedora junto con el mapa de las formas de quebrar o realizar slicing de una Historia de Usuario, fue excelente.«

Para aquellos interesad@s en participar de la próxima, ya tenemos fecha y está abierta la inscripción, pueden ver más info aquí.

Alternativa a Heroku: fly.io

Hace un tiempo escribí sobre Render como alternativa a Heroku. Luego de eso mi colega LucasM me recomendó probar fly.io y así lo hice.

Me gustó. Aún no termino de entender completamente cómo funcionan algunas cuestiones, lo pude hacer andar. No es que me funciona de casualidad, lo hice andar tal como indica la documentación, pero por esa «manía de control», hay algunas cuestiones «internas y/o de bajo nivel» que quisiera entender mejor.

Una condición importante que teníamos al buscar alternativas a Heroku era que la plataforma ofreciera una opción gratuita sin necesidad de poner una tarjeta de crédito. Fly.oi cumple con esto, pero hay una pequeña «trampita»: hay que crear la cuenta de fly.io asociándola a GitHub. Según entiendo esto es porque fly.io busca verificar la identidad del usuario y eso lo hace a partir de la tarjeta de crédito o bien confiando en Github. Así que si no quieren poner una tarjeta de crédito, asegurense de crear su cuenta de fly.io a partir de su cuenta de GitHub (ver imagen adjunta).

La experiencia de usuario que provee fly.io es muy similar a la de Heroku: se crea una aplicación, se la conecta con un repo y listo. No exploré si es posible disparar automáticamente un deploy ante cada commit porque no es nuestro caso de uso. Lo que hacemos es disparamos los deploy explícitamente usando la herramienta de línea de comando de fly.

Hasta donde investigué la plataforma termina corriendo un contenedor docker: si el repositorio de código fuente es de algunos de los frameworks soportados (rails, django, etc), fly genera un Dockerfile automáticamente y buildea la imagen al momento del deploy. También es posible proveer un Dockerfile propio que fly se encargará de builder, lo cual da la posibilidad de ir más allá de los frameworks/lenguajes soportados nativamente. Finalmente también es posible proveer una imagen ya buildeada.

La plataforma también provee servicio storage (basado en PostgreSQL y Redis entre otros) y la posibilidad de usar custom domains incluso en la modalidad gratuita.

A probarlo.

offtopic: el amor 30 años después del amor

Me tomo una licencia de los temas habituales de este espacio para compartir una experiencia fantástica que viví recientemente.

El pasado domingo 3 de Abril estuve en el estadio de Vélez Sarsfield para ver el show de Fito Páez en el contexto de su tour «El amor 30 años después del amor», justamente conmemorando los 30 años de lanzamiento del disco «El amor después del amor». Fue un show plagado del hits, tal como el disco en cuestión. Por algo sigue siendo, 30 años después, el disco más vendido del rock nacional.

El show fue excelente, Fito mezcló en el repertorio los temas del disco conmemorado con otros clásicos de su carrera. Me gustaron mucho las versiones de Dar es dar, Tumbas de la gloria y Ciudad de pobres corazones. Esta última comenzó un arreglo sinfónico mientras detrás del escenario se veían los relámpagos de la tormenta que se avecinaba, increíble, parecía que la naturaleza se hubiera acoplado para participar del espectáculo.

Recomendaciones para el mapeo de ejemplos

La semana pasada publiqué una traducción del artículo original de Example Mapping. Hoy quiero ir un paso más allá y compartir algunas recomendaciones surgidas de mi experiencia utilizando esta técnica.

Escenarios multi-regla

Cada historia de usuario tiene típicamente varias reglas asociadas que deben cumplirse simultáneamente. Sin embargo la técnica de mapeo de ejemplos propone que cada ejemplo esté centrado en una regla en particular, «ignorando» el resto de las reglas. La idea de esto es enfocarnos en entender cada una de las reglas y tener ejemplos bien concretos. En lo personal, me ha pasado de trabajar en aplicaciones con cierto grado de complejidad donde puede resultar muy útil generar ejemplos adicionales para ejemplificar la combinación de reglas. No siempre genero estos «escenarios de combinación» pero cuando lo hago procuro hacerlo en segunda instancia, o sea: comienzo trabajando en escenarios «de una regla» y luego recién después de terminar con ellos, trabajo los escenarios «multi-regla».

Escenarios encubiertos

Si al identificar los escenarios tenemos uno con un «o», puede ser un indicio de que en realidad tenemos 2 escenarios distintos. Por ejemplo si en una funcionalidad de pago con tarjeta de crédito tengo un escenario «aquel donde mi tarjeta está bloqueada o sin saldo», es posible que resulte más conveniente tener un escenario para tarjeta bloqueado y otro aparte para tarjeta sin saldo.

Plantilla online

Si bien ante la posibilidad de elegir prefiero que las sesiones de mapeo de ejemplos sean presenciales, en muchas ocasiones me encuentro haciéndolas online y para esos casos suelo usar esta planilla de Google Docs.

Alternativas a la tarjetas de colores

Al hacer las sesiones presenciales en ocasiones he tenido dificultades para conseguir tarjetas bibliográficas de colores y he tenido que buscar alternativas.

Una alternativa es hacer la sesión en forma presencial pero digital, o sea, tomamos la una computadora, la conectamos a un proyector y trabajamos con la plantilla que mencioné previamente. Pero en lo personal, si estamos físicamente juntos prefiero utilizar papel.

Una alternativa obvia es usar post-its, pero me he encontrado que el pegamento me genera cierta incomodidad pues me gusta poder ir reacomodando los escenarios a medida que los vamos trabajando. Por esto es que prefiero utilizar simplemente papeles de colores, tipo post-its pero sin pegamento. Esto va muy bien pues los puedo mover con total libertar, aunque al ser más livianos que las tarjetas y no tener pegamento, son mucho más volátiles y cualquier brisa leve los hace volar.

Preparando Ingeniería de Software Continua @ UBA-Exactas

Hace un tiempo comenté de esta materia que voy a estar dictando en carácter de Profesor Invitado. Pues bien, estoy empezando a ultimar detalles.

En primer lugar la materia la estaré dictando los días miércoles en el horario de 15 a 18. Será en principalmente en modalidad presencial pero con un esquema de aula extendida y algunas clases en modalidad online.En segundo lugar, Francia (perdón, sé que esto me quita seriedad pero no pude contenerme, jajajaja).

El próximo miércoles 19 de Abril a las 16:00 hs. estaré haciendo una charla de presentación de la materia para potenciales estudiantes interesad@s en cursarla. El objetivo de esta charla es básicamente setear expectativas tanto de quienes vayan a cursar la materia como también del equipo docente. O sea, me parece importante que los alumnos sepan antes de anotarse los temas que vamos a estudiar, la propuesta didáctica, mecanismo de evaluación y dedicación requerida. si bien toda esta información podría compartirla en texto, me parece importante poder la dar la chance de hablarlo en vivo y atender inquietudes de los interesados. Al mismo tiempo, como docente, quiero saber la cantidad aproximada de estudiantes que cursarán la materia pues ello podría llevarme a cambiar algunas cuestiones (no es lo mismo un curso para 6 estudiantes que uno para 20). De hecho, si hubiera muy pocos inscriptos (menos de 5) debido al horario de cursada, podría ver de analizar alguna alternativa horaria.

Introducción al Mapeo de Ejemplos (Example Mapping)

Nota: este artículo es una traducción del artículo de Matt Wynne publicado originalmente en inglés en diciembre de 2015 y disponible aquí.

Antes de tomar una historia de usuario para desarrollo, es crucial tener una conversación para clarificar y confirmar los criterios de aceptación.

Alguna gente hace esto durante la reunión de refinamiento de backlog o en sesiones de Planning Poker. Otros equipos hacen reuniones específicas de los tres amigos, talleres de especificación o talleres de discovery.

De cualquier forma que llames a esta conversación, muchos equipos la encuentran difícil, al no ser una conversación estructurada suele llevar mucho tiempo y se torna aburrida. Como consecuencia de ello, algunos no la hacen de forma regular o consistente, o tal vez directamente dejan de hacerla.

He descubierto un método simple y poco tecnológico para hacer que esta conversación sea corta y poderosamente productiva. Lo llamo Example Mapping.

Cómo funciona

Los ejemplos concretos son una excelente manera de ayudarnos a explorar el dominio del problema y constituyen una excelente base para nuestras pruebas de aceptación.

Pero a medida que discutimos estos ejemplos, hay otras cosas que surgen en la conversación que también merecen ser capturadas:

  • reglas que resumen un conjunto de ejemplos o expresan restricciones acordadas acerca del alcance de una historia.
  • preguntas acerca de escenarios en los que nadie en las conversaciones sabe cuál es el resultado correcto. O suposiciones que estamos haciendo para poder avanzar.
  • nuevas historias que descubrimos o slicieamos y diferimos fuera del alcance.

La técnica de mapeo de ejemplos utiliza un paquete de fichas bibliográficas o tarjetas de 4 colores y algunos bolígrafos para capturar estos diferentes tipos de información a medida que se desarrolla la conversación. Mientras hablamos, los capturamos en las tarjetas y los organizamos en un mapa.

Comenzamos escribiendo la historia en discusión en una tarjeta amarilla y colocándola en la parte superior de la mesa.

A continuación, escribimos cada uno de los criterios de aceptación, o reglas que ya conocemos, en una tarjeta azul y los colocamos en la mesa debajo de la tarjeta de historia amarilla.

Para cada regla, es posible que necesitemos uno o más ejemplos para ilustrarla. Los escribimos en una tarjeta verde y los colocamos bajo la regla correspondiente.

Mientras discutimos estos ejemplos, podemos descubrir preguntas que nadie en la sala puede responder. Entonces los capturamos en una tarjeta roja y seguimos con la conversación.

Seguimos adelante hasta que el grupo esté satisfecho de que el alcance de la historia está claro, o nos quedamos sin tiempo.

Y eso es todo. Te lo dije ¡es simple!.

Feedback Instantáneo

A medida que fluye la conversación, creamos rápidamente una representación visual en la mesa frente a nosotros que refleja nuestra comprensión actual de la historia:

  • Una mesa cubierta con tarjetas rojas (preguntas) nos dice que todavía tenemos mucho que aprender sobre esta historia.
  • Una mesa cubierta de tarjetas azules (reglas) nos dice que esta historia es grande y complicada. ¿Quizás podamos particionarla? Tomamos otra tarjeta amarilla (historia), escribimos la nueva historia y la colocamos en el backlog.
  • Una regla con muchos ejemplos podría ser demasiado compleja. ¿Hay múltiples reglas en juego que deben ser objeto de otras historias?

Descubrirás que algunas reglas son tan obvias que no necesitan ejemplos en absoluto. Está claro a partir de la conversación que todos entienden la regla. ¡Excelente! Todos pueden seguir adelante con sus vidas sin obligarse a sí mismos a obtener ejemplos como autómatas con lavado de cerebro BDD.

Pensando dentro de la caja del tiempo (time-box)

Un pequeño grupo de amigos debería ser capaz de procesar una historia bien entendida y de buen tamaño en unos 25 minutos.

Si no puede, o todavía está dominando esto (lo cual está bien), la historia es demasiado grande (definitivamente no está bien) o todavía tiene demasiada incertidumbre. Escuche eso e intente dividir la historia, o deje que la persona de producto se vaya y haga un poco de tarea antes de volver a poner la historia en otra sesión de mapeo de ejemplos en una fecha posterior.

En Cucumber, usamos un voto rápido con la mano después de 25 minutos para determinar si creemos que la historia está lista para comenzar a desarrollarse. Incluso si quedan algunas preguntas pendientes, puede pensar que son lo suficientemente menores como para poder resolverlas sobre la marcha. Deja que el grupo decida.

Beneficios

El mapeo de ejemplos ayuda a acercar y enfocarse en las partes más pequeñas de comportamiento dentro de la historia. Al mapearlo, puede separar las reglas, encontrar el núcleo del comportamiento que se desea y posponer el resto hasta más tarde. Con este nivel de detalle, el mapeo de ejemplos actúa como un filtro, evitando que las grandes historias entren en el sprint y exploten con sorpresas de último minuto tres días antes del día de la demostración.

También ahorra tiempo y, por lo tanto, ayuda a mantener el interés de las personas ocupadas en el proceso.

Muchos equipos asumen que los tres amigos deben escribir pruebas de aceptación (por ejemplo escenarios de Cucumber) durante esta sesión, sentados alrededor de un proyector mientras alguien escribe escenarios formales de Cucumber en un IDE. Hay ocasiones en las que esto es valioso, pero en general creo que es una mala idea. De hecho, puede distraerte del verdadero propósito de la conversación.

Es fácil ver por qué la gente comete este error: el propósito aparente es tomar una historia de usuario, que ya tiene algunos criterios de aceptación predefinidos, y generar ejemplos que puedan convertirse en pruebas de aceptación.

Creo que el verdadero propósito, sin embargo, es llegar a un entendimiento compartido de lo que se necesitará para hacer la historia. Puede moverse mucho más rápido hacia este objetivo si se mantiene bajo en tecnología.

Episodios de Friends

Entonces, en lugar de optar por escenarios formales de Gherkin en toda regla, solo intente capturar una lista de ejemplos aproximados, utilizando la convención de nomenclatura de episodios de Friends.

Por ejemplo:

  • Aquel en el que el cliente olvidó su recibo
  • Aquel en el que el producto está dañado
  • Aquel en el que se compró el producto hace 15 días

A veces, cuando acecha la incertidumbre, instintivamente querrás ser más concreto que esto. Todavía no necesitas recurrir a la estructura rígida de Dado-Cuando-Entonces:

Cuando el resultado (el entonces) no está claro, no tienes un ejemplo, tienes una pregunta.

Incógnitas conocidas

Cada vez que una conversación como esta da vueltas en círculos, es porque no tienes suficiente información. Probablemente falte alguien en la conversación, o tal vez necesites hacer una investigación de usuario, o un spike.

En lugar de dejar que todos compartan su opinión sobre cuál creen que debería ser el resultado, simplemente captura la pregunta y continua. ¡Felicidades! Acabas de convertir una incógnita desconocida en una incógnita conocida. Eso es un gran progreso.

¿Quién debería venir?

Lo mínimo son los tres amigos: un desarrollador, un tester y una persona de producto. Sin embargo, eso es solo un mínimo. Por todos los medios invita a gente de operaciones, personas de experiencia del usuario o cualquier otra persona que sea relevante para la historia que se está discutiendo. Cualquier persona que pueda ayudar a descubrir nuevas preguntas o convertir las preguntas en decisiones durante la conversación será útil.

Mientras aprende esta técnica, puede ser útil tener a alguien en el papel formal de facilitador, cuyo trabajo sea asegurarse de que todo lo que se dice se capture en una tarjeta. Los ejemplos y las preguntas vuelan rápidamente por la sala, y se necesita disciplina para capturarlos en la mesa para que pueda verse de lo que se está hablando.

Entonces ¿cuándo escribimos el Gherkin?

No dejes que esta publicación te confunda: también es de gran valor escribir Gherkin juntos, especialmente durante los primeros días de un proyecto. Ahí es donde desarrollas tu lenguaje ubicuo, y es vital tener esos escenarios expresados ​​de una manera en la que todos en el equipo crean.

Pero expresar ejemplos de esa manera requiere un modo de pensar diferente al de decidir qué ejemplos están en el alcance y aclarar las reglas subyacentes.

Para un equipo que está funcionando, con un lenguaje de dominio bastante maduro, mi preferencia es que la persona del producto dedique su tiempo y energía a la sesión de mapeo de ejemplos y deje la escritura real de Gherkin a sus otros dos amigos. Una vez que han redactado una especificación de Cucumber, la persona del producto puede darles su opinión.

¿Es así como lo habría escrito?

Esto le brinda la oportunidad de probar qué tan efectiva fue la conversación de mapeo de ejemplos para transferir el conocimiento de la persona del producto a sus amigos.

¿Con qué frecuencia debemos hacer esto?

La gente de producto suele estar ocupada. Respeta su tiempo programando estas sesiones de manera que puedan prestarte toda su atención.

Mi recomendación, basada en lo que he visto funcionar para varios equipos en la práctica, es ejecutarlos con frecuencia: cada dos días suele ser un buen ritmo. Solo elige una historia y dale 25 minutos de atención, luego vuelve al trabajo. Tratar de hacer más en un lote grande solo agotará su energía.

¡Pero mi equipo está distribuído!

Ya he visto trucos innovadores en esto: algunas personas usan listas con viñetas en un documento de Google, he visto personas que usan una hoja de cálculo con celdas de colores para representar las tarjetas. También puedes usar un mapa mental. La clave es mantenerlo rápido y fácil de usar, para que puedan concentrarse en la conversación.

Algunas consejos finales

Es importante comprender claramente la distinción entre reglas y ejemplos antes de poder utilizar el mapeo de ejemplos. Tengo un ejercicio divertido para enseñar esto que compartiré en una publicación futura.

Recuerda que todo el propósito de esta conversación es descubrir las cosas que aún no sabes. Así que no hay preguntas tontas. Diviértete y explora realmente el problema.

Descubrirás que las reglas crean fallas naturales para dividir una historia. Trata de sentirte cómodo aplazando tanto como sea posible, para que puedas concentrarte en resolver el núcleo del problema. Puedes agregar más sofisticación (y complejidad) más adelante.

Gracias a Janet Gregory, Aslak Hellesøy y Seb Rose por sus comentarios sobre esta publicación, a Theo England por su paciencia mientras la perfeccionaba y a Tom Stuart por sacarme el dedo.

11 alumnos, 2 docentes, educación pública y gratuita

Aula espaciosa, luminosa, con ventanas que pueden abrirse. Mesas altas y bancos que pueden acomodarse a gusto. Pizarra blanca con marcadores de 4 colores en perfecto estado y borrador. Sin aire acondicionado pero con ventilador. Proyector modelo 2019 con entrada HDMI y muy buena definición. Conexión WIFI de buena velocidad y bastante estable. Y posiblemente lo más importante: 11 alumnos y dos docentes nombrados (y algunos otros colaboradores informales/sin nombramiento).

No todo es perfecto, por supuesto: paredes con pintadas y con manchas de humedad, un edificio que literalmente se está cayendo a pedazos, un sueldo demasiado discreto (para los que tenemos sueldo) y una burocracia infinita e ineficiente.

Así es la situación de contexto para las clases de MeMo2 que estoy dando este cuatrimestre los lunes por la mañana (8:00 am) en la Facultad de Ingeniería de UBA. Si, la UBA, esa institución tan grande, tan politizada y con espacios tan distintos. A mi mismo me cuesta creerlo y el único cambio que hicimos fue el horario. Esto me hace pensar muy seriamente el mantener este horario matutino de forma permanente.