Intentamos usar Kanban en nuestro proyecto de desarrollo. Nuestro equipo es uno de muchos otros equipos de desarrollo ágil en nuestra empresa. Los otros equipos pueden usar Scrum o Kanban o algo más (a veces nada, supongo).
Todos los equipos trabajan en un gran proyecto, pero este gran proyecto se divide en subproyectos y cada equipo trabaja en un subproyecto.
Hay bastante interacción entre los equipos:
Estas interacciones se dividen en dos grupos:
Así que estoy pensando en formas de gestionar eficazmente estas interacciones. Siempre tenemos muchas tareas de alta prioridad en nuestro propio proyecto, al igual que los otros equipos, por lo que parece que los gerentes deberían establecer primero una política común sobre estas interacciones.
¿Tiene alguna experiencia con este tipo de gestión de tareas entre equipos? ¿Cómo se puede abordar todo esto?
Hay algunas cosas en las que pensar aquí.
En primer lugar, ¿cómo define sus prioridades? Si solo se definen a nivel de equipo individual, entonces es un desafío priorizar las solicitudes de otros equipos.
Idealmente, cuando se comparte el trabajo, debe haber una priorización clara y de alto nivel para que sea fácil para los equipos saber en qué deberían trabajar a continuación.
En segundo lugar, busque empoderar a los equipos para que se auto-organicen. Las ceremonias como el scrum de scrums pueden ser útiles para permitir que los equipos hablen regularmente entre sí.
Finalmente, valdría la pena pensar en formas de reducir las dependencias entre equipos. La capacitación adicional y el intercambio de conocimientos realmente pueden ayudar con esto. También ayuda si tiene una base de código consistente, de modo que sea relativamente fácil para los equipos trabajar en áreas del código en las que normalmente no operan. Esto, combinado con una buena cobertura de prueba de regresión automatizada, puede alentar a los equipos a corregir sus propias problemas en lugar de tener que depender de otros equipos para que lo hagan por ellos.
(Mi experiencia es con marcos ágiles que funcionan en sprints de tiempo limitado. Algunos de estos puntos no se aplicarán directamente si está siguiendo un marco de proceso continuo como kanban).
La mejor respuesta dependerá de por qué ocurren estas interacciones entre equipos.
Aquí hay algunas posibilidades que puedo imaginar:
Un equipo ágil debe contener todas las habilidades necesarias para hacer su trabajo. ¿Es esto cierto de estos equipos? ¿Si no, porque no? ¿Se puede revisar la composición de los equipos?
¿Se definieron los subproyectos con miras a convertirlos en proyectos ortogonales e independientes que puedan ser trabajados por equipos independientes con una coordinación mínima? ¿O se dividieron sobre alguna otra base que ahora está causando dificultades y, de ser así, se puede revisar?
¿El equipo A está pidiendo trabajo al equipo B porque necesita ayuda para completar lo que está en su plato dentro del plazo definido? Si es así, los equipos deben mejorar en la planificación de la capacidad: habilidades como el refinamiento y la estimación de la cartera de pedidos.
En una nota ligeramente diferente, ningún equipo debe planificar el trabajo para llenar el 100% de su capacidad teórica. Apuntar a ~70 % deja espacio para que los desarrolladores realicen otro trabajo que surja durante el período de tiempo: ya sea complejidad recién descubierta, correcciones de errores sorpresivas, mantenimiento continuo, capacitación... o solicitudes de otros equipos para compartir su experiencia. .
Esta es probablemente la mejor razón que se me ocurre, porque tiene una buena intención a pesar de que la implementación está causando problemas. Si el deseo de la organización es que los equipos participen en las revisiones de código de los demás, etc., con el fin de transferir conocimientos, quizás haya formas menos perjudiciales de hacerlo.
Un par de otros pensamientos:
Como cuestión práctica, comencé a pegar etiquetas como "equipo_soporte" en cualquiera de esos boletos, para que podamos ver fácilmente y recordar que debemos hacer esa solicitud de soporte con suficiente anticipación para evitar sorprender al equipo b.
Estos dos puntos funcionan juntos: a medida que el equipo A aprende que el equipo B no va a responder a las solicitudes entrantes en medio de un sprint, el equipo A también aprende cuál es la cadencia del sprint (u otra planificación) del equipo B y aprende a preguntar por adelantado. .
Tomas Owens
Todd A. Jacobs
Chris Bretini
Todd A. Jacobs