integración de código de scrums múltiples

La compañía donde trabajo ha estado probando scrum en un proyecto y ahora está buscando lanzar escoria a tres o cuatro equipos de proyectos diferentes. Estamos previendo que estos equipos trabajen en twigs de funciones separadas (estamos usando SVN).

No estamos seguros de si los sprints de los diferentes equipos deben finalizar simultáneamente o si debemos escalonar los sprints para que el sprint termine y los lanzamientos estén separados. El producto es un website, por lo que la implementación no es un problema.

Nos preocupa la integración del código. Si tres equipos integran su código al mismo time, es probable que genere conflictos. Pero si los lanzamientos están escalonados, esta carga solo se puede mover a los equipos que están mid sprint.

¿Alguien ha intentado alguno de estos enfoques y qué han encontrado que funcione?

También tenemos varios equipos, nuestros sprints están alineados e integramos continuamente: cuando una historia está completa. Esto a veces es molesto, pero de esa manera evitamos largos períodos de integración que podrían ser dolorosos. Cada historia se desarrolla en una twig separada, y luego se integra en la twig principal. Cuando dos equipos necesitan compartir algo que no está integrado, trabajan en la misma twig.

Estamos construyendo un producto empaquetado, por lo que la implementación no es un problema para nosotros.

Las dos preguntas están unidas: si solo se integra al final de los sprints, que no recomendaría, entonces es mejor que escalone los sprints.

Henrik Kniberg (autor de Scrum y XP de las trincheras) escribió un artículo sobre Control de versiones para múltiples equipos ágiles .

Tenemos dos equipos con sprints sincronizados y parece funcionar bastante bien. Nuestra estrategia es mantener las historias pequeñas. Obtenga las historias y publíquelas en el maletero a menudo durante el sprint. Sí, obtenemos conflictos de fusión, pero son manejables.

Ah, y asegúrese de que los equipos se comuniquen bien entre ellos.

eche un vistazo a este artículo, explica estos problemas de manera sucinta. http://www.infoq.com/news/2008/04/kniberg-agile-version-control

Integración continua. Integre todo el time, en cada check-in, no espere hasta el final del día o el final de una iteración para integrarse. Tenga testings unitarias y testings de aceptación automatizadas que se ejecuten en cada check-in para asegurar que nadie rompa el código.

Planifique características más pequeñas, trabaje en piezas de trabajo más pequeñas. Los trozos más pequeños son más fáciles de arreglar cuando las cosas se rompen. ¿Todos los equipos están trabajando en la misma línea de producto / código? Puede intentar planificar las funciones para que las características no afecten a las funciones en las que está trabajando otro equipo. Intenta asistir a los assemblys del otro equipo para que puedas resolver los conflictos de integración más temprano. Comparta el trabajo si las características entran en conflicto.