El contexto de la pregunta es una empresa que crea un producto de software que consta de varios componentes funcionales (también podría llamarlos subproductos) y vende el producto a un número bastante pequeño de clientes (~10 clientes principales, <100 en total). Esos clientes pagan una tarifa de licencia por cosas nuevas y una tarifa anual por mantenimiento. Hay alrededor de 20 desarrolladores, trabajando con un proceso ágil durante varios años. Consideramos pasar de equipos de proyecto a equipos fijos. Estamos discutiendo dos principios primarios sobre cómo organizar los equipos: (1) Cada equipo es responsable de un conjunto de componentes funcionales, o (2) cada equipo es responsable de un grupo de clientes.
¿Tiene experiencias positivas o negativas con cualquiera de las opciones en un contexto similar? ¿Cuál de las opciones es mejor para el contexto dado?
Experimento.
Ninguna respuesta presentada aquí se ajustará a su producto, equipo o cliente específico. Agile promueve la mejora continua, así que adelante.
Con eso en mente, podemos revisar algunos elementos clave a tener en cuenta al experimentar:
¿Por qué cambiar? Tenga claros los problemas que el equipo pretende abordar al aplicar estos cambios. Cambiar por cambiar "para volverse más ágil" no es un propósito real. Su propósito real es entregar valor con más frecuencia y con previsibilidad. Agile es una herramienta que puede ayudarte en eso.
Los equipos deben poder entregar un producto completo . Si organiza equipos por componentes funcionales, tendrá más experiencia en este componente específico, pero puede terminar con un gran equipo en la interfaz de usuario que ofrece muchos cambios que no se pueden activar porque el equipo de back-end no tiene tanta experiencia.
Entienda su fondo actual del conocimiento . Si tiene una sola persona que realiza la interfaz de usuario y esto es clave para todas las entregas, tener diferentes equipos que dependan de esta única persona eventualmente creará un cuello de botella.
La base de conocimientos es uno de los cambios más complejos para los equipos ágiles totalmente funcionales. Si su equipo se basa en el conocimiento de personas específicas, antes de cambiar la estructura del equipo, le sugiero:
Recuerde, uno no necesita ser experto en todas y cada una de las áreas (todavía considero que un "desarrollador de pila completa" es una falacia en la mayoría de los casos). En cambio, uno debe tener un conjunto de habilidades en forma de T que permita a cada subequipo poder entregar con una dependencia mínima de otros equipos.
Esta es una pregunta difícil de responder porque depende de su empresa. La directriz general es optimizar el equipo hacia la creación de valor. Por lo general, una pregunta como esta se plantea como: ¿deberíamos organizar equipos en torno a los componentes del sistema y las áreas funcionales? La respuesta a esa pregunta es más fácil porque con los componentes del sistema, ningún equipo puede ofrecer una característica valiosa a los usuarios por sí solo. Sin embargo, en su caso, parece que ambos pueden ofrecer una función valiosa completa por sí mismos, por lo que la pregunta puede ser, ¿cuál puede ofrecer mejor o más a menudo una función valiosa por sí solo?
Otro modelo a considerar con un número tan pequeño de desarrolladores son los equipos completamente intercambiables. Si todos los equipos pueden hacer todo el trabajo, siempre obtendrá las funciones más importantes más rápido.
Me parece que hacerlo en torno a los componentes de software es más inteligente porque parece que los equipos podrán controlar mejor las decisiones, ya que recibirán la información de varios clientes en una sola función.
Si lo hace al revés: tener varios equipos trabajando en el mismo componente con diferentes aportes del cliente, parece que podría haber una posibilidad de pisar los dedos de los demás.
Es necesario tener en cuenta lo siguiente:
aventura2099
tobias b
tobias b
ottodidakt