Mi empresa está en medio de una transición del desarrollo de estilo cascada a Agile / Scrum. Entre otras cosas, se nos dice que la expectativa es que tengamos nuevas características de trabajo comprobables (por QA) al final de cada día.
La mayoría de nuestros desarrolladores pierden alrededor de 2 horas al día en reuniones y otros gastos generales empresariales. Esto significa que en cualquier período de 6 horas (en el mejor de los casos), tenemos que diseñar, escribir, probar la unidad, construir e implementar (con notas de la versión) suficiente código para producir una función completa con la que pueda jugar el control de calidad. Entiendo que las notas de compilación / implementación / lanzamiento podrían automatizarse con una configuración de CI adecuada, pero aún no hemos llegado.
También tenemos un gran contingente offshore que escribe nuestro código del lado del servidor, y la diferencia horaria de 12 horas hace que esto sea aún más difícil.
Intentamos distribuir las historias en cortes verticales estrechos y profundos para completar las características de principio a fin lo más rápido posible, pero la mayoría de los días se sienten bastante frenéticos y a menudo encuentro personas tomando atajos estúpidos y frágiles para asegurar que el control de calidad tenga su estructura. Este problema se agrava después de que un sprint ha estado en progreso durante un par de días, cuando los defectos inevitables comienzan a aparecer y tienen que encajar en la misma ventana de 6 horas.
¿Es este un ritmo normal para los equipos ágiles? Incluso si logramos implementar una configuración de CI, no puedo ver cómo podremos mantener este ritmo y seguir creando software de calidad.
Editar: Hay varias buenas respuestas aquí. Me hizo darme cuenta de que lo que realmente estaba preguntando es si los equipos de Agile ofrecen nuevas funciones a diario. Actualicé el título en consecuencia.
Si ayer tuvieras un software operativo, ¿por qué no funcionaría hoy? Si no terminó ninguna tarea hoy, la compilación de hoy será la misma que ayer. Las construcciones diarias y el ritmo de desarrollo son cosas separadas. El hecho de que tenga compilaciones diarias no significa que tenga nuevas funciones en cada compilación.
Cuando finalmente alguna característica se termina y se registra en la sucursal principal, entonces debería tener un proceso automatizado que construya el software y ejecute pruebas. Si hay un problema con la creación o ejecución de pruebas, se notifica al equipo y se concentran en su esfuerzo para que funcione nuevamente. Así es como funciona CI y cómo lo ayuda a lanzar software de trabajo todo el tiempo.
fuente
Respuesta corta: no . Simplemente no se puede lograr a diario.
Sin embargo, el equipo ágil supone entregar piezas de software de trabajo o historias de usuarios en cada sprint . Por lo general, las reuniones de estado se llevan a cabo diariamente para ver el progreso y los impedimentos.
En lo que respecta al software de calidad , los procesos de integración continua (CI) establecidos garantizarán que el control de calidad se aplique a pequeños esfuerzos (check-ins) y se realice con la frecuencia que se haya configurado. También tiene como objetivo mejorar
quality of software
y reducir el tiempo necesario para entregarlo, al reemplazar la práctica tradicional de aplicar el control de calidad después de completar todo el desarrollo.fuente
No, no debe haber expectativas de ofrecer nuevas funciones todos los días. No todas las características se pueden dividir en un tamaño tan pequeño como para que un desarrollador pueda finalizar la característica en ~ 6 horas de tiempo de desarrollo.
Si está haciendo scrum, debería estar haciendo al menos 2 semanas de sprints, con características dimensionadas para tomar aproximadamente de 0 a 8 días para finalizar. La promesa al propietario del producto es entregar un código de trabajo correcto nuevo, probado y verificado que pueda ponerse en producción al final del sprint. (NOTA: No tiene que ponerlo en producción, pero el objetivo es que pueda serlo si lo desea)
Una buena metodología le sugirió que configurara un servidor CI (integración continua) en el que automatizara la creación de al menos una compilación diaria de software de trabajo. La idea es que ingrese su código tan pronto como termine la función para que pueda estar en el próximo ciclo de compilación y luego en manos de QA para la prueba.
¡Recuerda que el objetivo es que las funciones se realicen y se prueben al final del sprint! No querrás tener que hacer que el control de calidad espere hasta el último día del sprint para que puedas hacer la compilación y luego hacer que prueben todas las características. No tendrán tiempo para probarlo todo y usted no tendrá tiempo para corregir ningún error ...
Si no puede configurar un servidor de CI, la práctica debería ser que necesita crear manualmente una nueva compilación para el control de calidad cada vez que un desarrollador verifica su código terminado y afirma que ha terminado con una función y está listo para entregarlo al control de calidad.
fuente
De hecho, depende del tamaño del proyecto; Si el proyecto es grande, no hay forma factible de lograrlo.
Las compilaciones diarias (o incluso más frecuentes) que surgen de herramientas de integración continua no significan software de trabajo; Apenas significa código compilable.
fuente
Existen muchos proyectos que ofrecen compilaciones diarias que, gracias a la integración continua, son software en funcionamiento. Al menos en teoría.
Significa que no necesariamente contiene nuevas características. Tal vez algunas correcciones de errores menores, o nada en absoluto.
En teoría, si no puede proporcionar más trabajo a su QA diariamente, debe aumentar el número de desarrolladores o reducir el número de probadores. Idea terrible!
Tu trabajo es hacer las cosas.
Dígale al control de calidad que obtendrán algo para probar cuando esté terminado. Tienes que explicarles por qué.
fuente
Creo que está confundido acerca de la idea de "CI". Puede visitar este excelente artículo de Martin Fowler sobre cómo funciona CI en la práctica. Eso debería responder a su pregunta correctamente.
fuente