Estamos participando hace más de un año de un proyecto que combina Scrum y Continuous Delivery. Cada equipo lleva adelante muchas de las prácticas de Scrum, pero a su vez, hacen liberaciones todos los días, a veces día por medio a veces más de una vez al día. Esto lo hacen en lugar de esperar al final del sprint a tener el producto potencialmente entregable como entiendo que sugiere Scrum.
Con ellos seguimos una dinámica de trabajo bien interesante, donde destaco algunas prácticas relacionadas a calidad a tener en cuenta:
- Se cuenta con un sistema de integración continua con algunas pruebas automatizadas (falta cobertura y mayor orden para mi gusto, pero estamos trabajando en eso).
- Cada equipo cuenta con al menos un tester que hace testing exploratorio sobre cada feature o sobre cada elemento que pueda tener riesgo, asociado a las historias que se quieren liberar.
- Hacen pull requests y hay revisiones de código. Hay un líder técnico que revisa todo el código que se pasa a producción, teniendo conversaciones con cada desarrollador sobre las distintas decisiones tomadas, unificando criterios.
- No se hacen pruebas de performance, a menos que sea sobre un cambio muy grande (como cuando se re implementó el proceso de checkout). Esto es porque en producción se sabe que anda bien (se cuenta con buena monitorización, incluso con un APM que brinda métricas del lado de los usuarios), y cada deploy implica poco cambio (ya que se hace casi todos los días), entonces el riesgo es bajo. Algo de esto comenté en un post anterior.
- Base de datos de testing es una copia de producción despersonalizada y actualizada cada noche.
Buenas prácticas que generan buenos resultados. Parecen difíciles de implementar pero estoy convencido de que paso a paso todos podríamos ir hacia un esquema similar que se ajuste a cada contexto, aprovechando los beneficios que proporciona (reducción de riesgo, calidad, facilidad y velocidad para implementar cambios, gestión de cómo se comporta el sistema en producción…).
¿Cuál de estos puntos te gustaría alcanzar en tu equipo? ¿Cuál es el siguiente paso que podés dar para acercarte a eso?