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.

Recursos de Testing 3.0

Ayer estuve participando en el ciclo de Tech Talks facilitado por Arcadio Abad. Estuve hablando sobre un conjunto de prácticas que he dado en llamar Testing 3.0.

La charla fue efectivamente una charla de ida y vuelta con Arcadio quien a su vez transmitía las preguntas de la audiencia. Me sentí muy cómodo con el formato y creo que pude dar respuesta a todas las preguntas que Arcadio me transmitió(aunque creo que por el chat pasaron algunas otras que pueden haber quedado sin respuesta por cuestiones de tiempo).

Durante la charla hablé de varias cuestiones pero la gran mayoría relacionadas a la idea de usar los tests como especificación de requerimientos y guía del desarrollo (lo que usualmente se conoce como BDD). Comparto aquí algunos recursos al respecto:

  • Los libros de BDD de Rose y Nagy son simplemente excelentes.
  • El libro «Specification by Example» de Goyco también es excelente, es bastante más extenso porque cubre muchas cuestiones.
  • Unos videos que muestran la técnica de BDD/TDD en acción: parte 1 y parte 2
  • Varios artículos de mi blog sobre esta técnica

Y si quieren aprender más de BDD y no tienen un perfil muy técnico, los invito a que se sumen a mi Taller de Prácticas Técnicas para Scrum Masters (al margen del nombre, vemos cuestiones que son relevantes incluso para gente que no es Scrum Master)

Seminario de Software Delivery edición 2023

Ya tenemos confirmada la cuarta edición de este seminario. Para quienes nunca escucharon al respecto de este seminario les cuento que está basado en el libro Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (IT Revolution, 2018) y tiene como objetivos:

  • Entender el impacto de las capacidades de Software Delivery en la performance del negocio
  • Entender las prácticas técnicas y de gestión que mejoran la performance de delivery
  • Conocer posibles estrategias para la adopción de las mencionadas prácticas

En términos de dinámica de cursada mantendremos el mismo formato que el año pasado:

  • 100% online
  • 6 encuentros de 2,5 horas cada uno
  • Los encuentros serán semana por medio, haciendo una duración calendario total de 11 semanas
  • Estimamos una dedicación semanal de 3 horas todas las semanas (al margen del tiempo de los encuentros)

Al igual que la edición 2022, tendremos un primer encuentro informativo, online y de participación abierta, el mismo será el miércoles 22 de marzo a las 9.30, los interesados en participar de este encuentro informativo pueden inscribirse aquí.

Las fechas de los encuentros son:

  • 2023-03-22, encuentro 0, presentación del seminario (previo a la inscripción)
  • 2023-04-12, encuentro 1
  • 2023-04-26, encuentro 2
  • 2023-05-10, encuentro 3
  • 2023-05-24, encuentro 4
  • 2023-06-07, encuentro 5
  • 2023-06-21, encuentro 6, presentación de trabajos finales y cierre

Actualización: ya está habilitado el formulario de inscripción.

Tech Talk: Testing 3.0+

Este jueves 9 de marzo estaré participando del ciclo de charlas técnicas organizado por la gente de Abstracta. En dicho espacio hablaré sobre mi visión actual del testing en general y del rol de tester en particular. La charla está pensada como una continuidad/profundización de la charla que dí en la QualitySense Conf en diciembre 2022 (video disponible aquí) y resume lo que actualmente enseño en la universidad.

Algunos puntos centrales de la charla:

  • Parte del testing lo deben hacer los desarrolladores.
  • Los testers deben trabajar muy cerca de la gente de negocio.
  • Los casos de pruebas deben generarse temprano en la iteración, incluso algunos casos de prueba deberían estar claros al finalizar la reunión de planificación de la iteración.
  • La gran mayoría del testing debe estar automatizado.
  • La ejecución de la mayoría de los test debe poder ejecutarse sin necesidad de utilizar un ambiente particular.
  • Testear algunas cuestiones en producción es válido, pero ello requiere planificación de cara a poder contemplarlo a nivel de desarrollo e infraestructura.

Varios de los puntos anteriores impactan directamente en las tareas y habilidades del tester y sé también que algunos pueden resultar polémicos. Esto es una buena excusa para sumarse la charla, es gratuita pero require registración.

El Scrum Master, la planificación y la gestión

En el contexto de un proyecto de desarrollo/entrega de software gestionado «a lo Scrum», las actividades de planificación y gestión de proyecto son repartidas entre el equipo de desarrollo y el Product Owner. A su vez la planificación tiene un aspecto estratégico y otro táctico.

La planificación estratégica tiene que ver con la priorización, definir qué vamos a construir y cuándo vamos a construirlo, una responsabilidad típica del Product Owner. La planificación táctica tiene que ver con definir cómo a construirlo, o sea, tomar cada ítem y hacer su descomposición en tareas. Una responsabilidad típica del equipo de desarrollo.Y al margen de táctica o estratégica, la planificación requiere de tener alguna idea de «costo/dimensionamiento», o sea: «hacer esto ¿nos llevará alrededor 2 días o alrededor de 2 meses?. Entonces debemos estimar.

Conceptualmente el Scrum Master no se encarga de la gestión, ni de la planificación y mucho menos de estimar, pero definitivamente son cuestiones en las que podría llegar a aportar mucho valor no porque vaya a ejecutar ninguna de esas tareas, pero sí por facilitar la realización de las mismas. Pero en ocasiones las personas en el rol de Scrum Master no tienen conocimiento formal en estos temas, sobre todo si no han tenido una formación de base en IT. En algunos casos, hay Scrum Masters con algún conocimiento informal de gestión o tal vez incluso cierta experiencia de gestión de proyectos pero no necesariamente en proyectos de software. Los proyectos de desarrollo/entrega de software tienen algunos condimentos interesantes en términos de gestión y particularmente en temas de planificación y estimación.

Un libro clásico sobre estas cuestiones es «Agile Estimating and Planning» de Mike Cohn. Es un libro que tiene más de 15 años y algunas de las cuestiones que propone ya no suelen utilizarse pero al margen de esos detalles, el libro explica muy bien algunas cuestiones fundamentales.

Otro libro que personalmente me resultó mucho más interesante y útil es «Planning Extreme Programming» de Kent Beck y Martin Fowler. Este libro tiene más de 20 años pero no ha perdido vigencia y sin embargo es mucho menos conocido que el libro de Cohn.

Estas cuestiones de gestión, planificación y estimación son parte de mi Taller de Prácticas Técnicas para Scrum Masters y Agile Coaches que comienza a mediados de marzo y que está especialmente dirigido a gente trabajando en estos roles pero que no ha tenido formación de base en IT.

MeMo2: clases por la mañana

Desde un inicio las clases de MeMo2 las veníamos dictando en el horario de 19:00 a 22:00, pero este primer cuatrimestre de 2023 vamos a cambiar de horario de las clases, serán de 8:00 a 11:00 de la mañana.

Hace ya un tiempo que yo venía pensando en dar las clases por la mañana a modo de experimento para ver si lográbamos una mejor dinámica, ocurre que muchas veces a las 19:00 los alumnos (y también los docentes) llegan cansados, después de trabajar o de haber realizado otras actividades, lo cual impacta negativamente en el nivel de atención y participación en clase. Tengo la creencia que dando la clase por la mañana, todos estaremos más fresco y la clases tendrán un mejor flujo.

A esta idea que yo ya venía barajando se sumo una situación de fuerza mayor nos impide seguir con el horario habitual en este primer cuatrimestre de 2023 y eso resultó en el empujoncito que necesitábamos para finalmente concretar el experimento de las clases matutinas.

Para despejar las dudas que puedan tener potenciales, este viernes 24 a las 8:30 haremos un Meet explicando la dinámica de cursada (presencialidad, asistencia, dedicación, etc, etc).

Los interesados en participar, deben completar este formulario, para que les enviemos el link de acceso al Meet.

Alternativa a Heroku: Render

A fines de 2022 Heroku cambió su modelo de suscripciones y descontinuó su oferta gratuita que muchos veníamos utilizando. Yo tenia alguna que otra aplicación de juguete pero principalmente venia utilizando Heroku en mis materias para que los alumnos puedan desplegar las aplicaciones que construyen durante la cursada. Si bien es cierto que con estos planes Heroku incluye una oferta para estudiantes la misma no se ajusta a nuestras restricciones pues exige una tarjeta de crédito para poder acceder a la oferta.

Este cambio de Heroku nos obligó a buscar alternativas considerando nuestras restricciones:

  • La plataforma/servicio debe ser gratuito y adicionalmente no debe pedir tarjeta de crédito (hay varias plataformas que a pesar de ofrecer opciones gratuitas piden igualmente una tarjeta de crédito para hacer una validación del usuario)
  • Debe soportar nuestro stack tecnológico, básicamente necesitamos poder correr una aplicación web construida en Ruby y con una base de datos PostgreSQL.

Estas restricciones nos obligaron a descartar algunas opciones interesantes como Vercel (no soporta nuestro stack).

Finalmente hemos decido utilizar Render que cumple con nuestras restricciones y que de acuerdo a la pruebas que hicimos parece que se ajusta bien a nuestras necesidades funcionales.

Mi colega Hérnan hizo un video orientativo para nuestros alumnos mostrando como desplegar en Render una aplicación web Ruby+PostgreSQL.

Nueva materia: Ingeniería de Software Continua

Durante el primer cuatrimestre de este 2023 estaré dictando esta materia en calidad de Profesor Invitado en la carrera de Ciencias de la Computación en la Facultad de Ciencias Exactas y Naturales de la UBA.

La materia será una variante reducida MeMo2 con algunos agregados. Será reducida porque las materias dictadas en esta modalidad tiene una duración de medio cuatrimestre (8 semanas).

El temario tentativo es:

  • Ingeniería de Software Continua: fundamentos.
  • Principios Lean & El movimiento DevOps.
  • Flujos de valor en el proceso de entrega de software.
  • Tipos y Estrategias de testing.
  • Software Configuration Management de segunda generación.
  • Desarrollo guiado por pruebas de aceptación.
  • Integración, Entrega y Despliegue continuos.
  • Delivery Pipelines & Estrategias de despliegue.
  • Gestión de Ambientes.
  • Modelos de infraestructura & Infraestructura como Código.
  • Roles y Modelo de Equipo.
  • Técnicas de trabajo colaborativo.
  • Gestión del proyectos vs. Gestión de Producto.
  • Operaciones y el enfoque SRE.

Digo tentativo porque aún me falta terminar de bajarlo a detalle de implementación y es posible que no llegue a cubrir la totalidad. de los puntos.

En términos de dinámica de cursada mi idea es utilizar la misma que en MeMo2 lo cual implica:

  • cursada híbrida (algunas clases presenciales y otras clases virtuales).
  • un enfoque muy «hands-on»
  • una carga de trabajo extra-clase de unas 6 horas semanales a lo largo de todo el curso.
  • stack tecnológico basado en Ruby, GitLab y Kubernetes
  • herramientas colaborativas para soporte de la cursada: GoogleGroups, CanvasLms, Discord y Google Meet

Dado el alto grado de interacción con los estudiantes, la materia está planteada con un cupo de 16 vacantes.

A comienzos de marzo tengo una reunión con personal de la facultad donde espero tener más «detalles de implementación».

Pensamiento final: mientras escribo estas línea se me ocurre que esta materia podría dictarla como materia optativa en otra institución o incluso como un curso privado, si llega a haber algún interesado no dude en contactarme.

Cursos y Materias 2023

Este año 2023 viene con algunas novedades que se suman a mis actividades recurrentes.

En el ámbito académico, seguiré con mis materias de grado en UBA Ingeniería (memo2) y UNTreF (Ing. de Software) y también volveré a dictar (por cuarta vez) el Seminario de Postgrado en Software Delivery. Una novedad es que durante el primer cuatrimestre de 2023 estaré dictando una nueva materia en UBA Exactas: Ingeniería de Software Continua (más detalle próximamente). Finalmente, si bien aún no está confirmado, es posible que durante la segunda mitad de año también esté participando del dictado de otro Seminario de Postgrado en UNTreF sobre Arquitectura de Software.

En el ámbito no-académico, ya tengo confirmada una nueva edición del Taller de Prácticas Técnicas para Scrum Masters y Agile Coaches que comenzará a mediados de marzo. También tengo la intención de estrenar dos nuevos talleres: uno sobre «Artesanía de Software» (sobre esto escribí algo el año pasado) y otro sobre «Especificación con ejemplos, BDD y TDD» (sobre esto tengo varias ideas pero nada escrito aún). Respecto de estos dos talleres, estoy considerando hacer un experimento de crowdfunding para cubrir los costos de preparación y dictado, en breve compartiré más información al respecto.

Como siempre, dudas, consultas y sugerencias las pueden poner en los comentarios o bien contactarme en privado por aquí.

Libro: Formulation (The BDD Books)

Terminé de leer este libro hace un par de días. Me gustó y me alegró ver que varias de las cuestiones que menciona coinciden con lo que vengo aplicando en mis proyectos y enseñando en MeMo2.

Al margen de que ya sabía, descubrí algunos conceptos y capacidades de Gherkin de las que nos estaba al tanto como ser los «journey escenarios» y la diferencia entre las «data tables» y «example tables».

El texto está escrito de forma tal que intercala explicaciones conceptuales con fragmentos de diálogos de un equipo de desarrollo que aplica esos conceptos. En cierto modo esto hace que la explicación de cómo formular buenos ejemplos contenga muchos ejemplos.

Creo que es fundamental para todo equipo pretenda aplicar BDD que al menos una persona del equipo de desarrollo maneje fluidamente las cuestiones descriptas en este libro (¿el facilitador/Scrum Master? ¿un tester?).