Alguna información de fondo
Soy parte de un equipo interno de desarrollo de software. Consiste en
- 5 desarrolladores (con experiencias que van de 2 a 5 años, soy uno de ellos)
- 3 personal de implementación (realizan la implementación y capacitación del software)
- y 1 gerente de proyecto.
Desarrollamos muchos proyectos pequeños y medianos, y sus líneas de tiempo generalmente se superponen. El desarrollo es así:
- "Cliente" nos da un conjunto de requisitos iniciales
- Desarrollamos el sistema a dicha especificación
- Presente dicho sistema al "cliente"
- "Cliente" nos da requisitos adicionales basados en dicha presentación
- Repita 2-4 hasta que el "cliente" se haya quedado sin nuevos requisitos o la fecha objetivo de implementación esté cerca
- Configurar e implementar el sistema
Esto, junto con el hecho de que es el "cliente" el que maneja los plazos la mayor parte del tiempo (que es una señal de alerta, por lo que veo aquí en Programadores y PM.SE) y no seguimos una metodología de desarrollo definida. a la codificación del vaquero, el código casi imposible de mantener y los errores que pasan por la producción, entre otras cosas. Es por eso que optamos por adoptar una metodología basada en Agile como Scrum.
¿Por qué scrum?
Fue la iniciativa de nuestro gerente, y todos parecen estar de acuerdo, dada nuestra situación actual.
El problema con Scrum
Algunos de los elementos de Scrum tienen conflictos con nuestra configuración actual que no podemos abordar fácilmente, en particular la naturaleza de "Jack-of-All-Trades" de los desarrolladores de Agile. El equipo de implementación no sabe cómo programar, y los desarrolladores tienen habilidades de comunicación y capacitación por debajo del promedio. Y esta alineación realmente no cambiará en el corto plazo.
La pregunta
¿Afectaría la efectividad de Scrum como metodología? ¿Serían necesarios otros cambios para compensar? ¿O sería mejor abandonar el pensamiento por completo y pensar en una metodología diferente?
fuente
Respuestas:
En realidad, su forma actual de trabajar no está tan alejada de Scrum como podría pensar.
En Scrum, también obtiene un conjunto inicial de requisitos, los implementa y demuestra el resultado, y en función de la demostración, se le pueden dar nuevos requisitos o las partes interesadas pueden decidir que el producto es lo suficientemente bueno como para que no se necesite más desarrollo.
En su situación, el "cliente" del que habló podría recibir el rol de Propietario del producto en Scrum (ya parece que cumplen ese rol estableciendo las prioridades dentro de un proyecto y decidiendo cuándo está listo para implementarse).
Un gran cambio podría ser la duración de una iteración. En Scrum, una iteración debería durar entre 1 y 4 semanas.
En cuanto a la composición del equipo y la falacia de Jack-of-All-Trades: Scrum no requiere que todos sean un Jack-of-All-Trades. Scrum solo requiere que el equipo en su conjunto tenga todas las competencias requeridas para obtener el producto de una lista de requisitos a algo que ha sido / puede implementarse.
En su situación, podría ver fácilmente un equipo por proyecto que consta de uno o más desarrolladores (que realizan principalmente el trabajo de implementación y prueba) y un miembro del "personal de implementación" que se centra principalmente en la creación de manuales y material de capacitación para las características que los desarrolladores ahora están implementando.
Después de que el cliente / propietario del producto haya dado luz verde para la implementación, el trabajo para el equipo scrum se realizará en su mayoría, por lo que los desarrolladores pueden ir a otro proyecto (y estar disponibles solo a pedido para solucionar los problemas posteriores a la implementación) y la implementación el personal puede pasar a realizar la capacitación y apoyar el despliegue.
El hecho de que haya una fecha límite no es un problema real, siempre y cuando haya suficiente flexibilidad en la funcionalidad que debe existir en esa versión.
fuente
Piden alternativas, así que voy a decir eXtreme Programming (XP). Específicamente, creo que la programación de pares podría ayudarte aquí.
Al unir a personas con diferentes habilidades, no importa en qué habilidad: hacer café, probar, entrenar, etc., puede difundir las habilidades en todo el equipo.
Pero para ser sincero, no parece que SCRUM esté tan lejos para ti. Parte de SCRUM es ser flexible y encontrar lo mejor para su equipo. Parte de XP es respetar a tu equipo y adaptarte. Tal vez dentro de 100 años tengamos una profesión más desarrollada con reglas estrictas y rápidas (aunque lo dudo), pero por ahora, hacer lo que funciona para usted es todo lo que tenemos. Lo importante es tener bucles de retroalimentación. Si algo no funciona, entonces el equipo debe discutirlo y probar cosas nuevas hasta que encuentren algo que funcione.
fuente
¿Cómo hacer que Scrum funcione para un equipo con roles definidos?
Simplemente hazlo. De acuerdo con la guía scrum, todos somos desarrolladores, pero aquí en el planeta Tierra, diferentes personas traerán diferentes cosas a la mesa. Yo casi me linchado cuando me sugirió que algunas personas son realmente los probadores, mientras que otros escriben software.
Algunas cosas que quizás desee abordar:
Sprints
Parece que tiene una fase de desarrollo inicial seguida de una serie de lo que aparentemente son sprints. Considera romper esto. El cliente no solo verá algo temprano, sino que tendrá una mejor idea de los hitos del desarrollo a medida que ocurren.
Plazos fijos
Esto surge una y otra vez y de hecho es una espina persistente en el lado de los desarrolladores donde actualmente trabajo. Scrum establece estimaciones para el sprint, nada más. Sí, puede alcanzar el objetivo después de una serie de sprints, pero una vez que el cliente tenga en cuenta las primeras versiones, es probable que el alcance se desplace significativamente. Esto no es un problema en sí mismo, pero el cliente debe ser consciente de que se llevará a cabo más trabajo en los sprints posteriores y superará los requisitos conocidos.
fuente
Su situación podría ser una mejor coincidencia para Kanban, ya que puede comenzar con lo que tiene e iterar desde allí. Esto significa que no tendría una introducción de Big Bang que sea perjudicial para sus proyectos actuales, solo comience visualizando las tareas en un tablero y adoptando algunas de las prácticas, como retrospectivas y reuniones diarias.
Debes ser un poco más cuidadoso que con Scrum porque no es tan prescriptivo: por lo tanto, tiene la tendencia a volver a lo que fue antes en lugar de inculcar una mentalidad ágil adecuada.
fuente
Scrum no funciona bien con proyectos separados que se superponen, ya que no tienes un grupo estable de personas trabajando en un proyecto para el sprint completo. Por lo tanto, conceptos como verbosidad, etc., probablemente solo lo depriman.
Pero primero tomar la historia que brinda el mejor costo / beneficio para el cliente e implementarla incluyendo pruebas totalmente automatizadas, a una calidad que sea lo suficientemente buena como para ser implementada, antes de trabajar en la próxima historia es un concepto útil. Del mismo modo, se requiere que todo el código escrito para una historia sea revisado por otro desarrollador antes de que la historia se considere "hecha".
Supongo que su personal de implementación tiene que escribir documentos de capacitación y referencia, se pueden escribir (primer borrador) para cada historia antes de que se escriba el código, por lo que se convierten en las pruebas de aceptación.
Espero que encuentre que, al comienzo de cada proyecto, donde la contribución del personal de implementación sería de mayor ayuda para los desarrolladores, están 100% comprometidos con la implementación del proyecto anterior. Por lo tanto, considere si el personal de implementación puede estar trabajando en escribir las historias y la documentación del usuario para el próximo proyecto, mientras los desarrolladores escriben el código para el proyecto actual.
El "desarrollo impulsado por el comportamiento" con el personal de implementación escribiendo el ejemplo que se utiliza en las pruebas puede funcionar.
Por lo tanto, hay un poco de Scrum que lo ayudará, pero intente inclinarse desde Scrum en lugar de usar Scrum.
fuente