Recientemente me uní a un joven hackerspace que todavía está en proceso de configuración. Somos afortunados porque el espacio tiene algunos proyectos internos que necesitan trabajar y no hay escasez de voluntarios para trabajar en ellos.
Ha habido algunas discusiones sobre cómo organizar estos proyectos. Mi experiencia profesional más reciente ha sido con Scrum, así que estoy considerando lanzar un enfoque Scrum para nuestros proyectos de software, pero no estoy seguro de que sea una buena opción.
Aunque he visto a Scrum funcionar bien para pequeños equipos de tiempo completo, la naturaleza de esta organización es diferente:
- Los miembros son voluntarios . Algunos son estudiantes a tiempo completo. Otros trabajan trabajos a tiempo completo. No podemos esperar un nivel constante de contribución de nadie, ya que sus vidas reales tienen prioridad.
- Si bien casi todos tienen años de experiencia escribiendo software, no muchos miembros lo han hecho de manera profesional o en equipo.
- No hay dueño del producto . Los requisitos para estos proyectos son determinados por un comité. Los miembros de este comité también estarán trabajando en la implementación. Esto significa que no tendremos un propietario de producto único y dedicado.
- No tenemos plazos (blandos o duros). Los proyectos se realizarán cuando se realicen.
Estas son diferencias bastante significativas, pero no estoy convencido de que sean bloqueadores para aplicar Scrum. Creo que algunos pequeños ajustes podrían superar este obstáculo:
- Si cambiamos los Sprints para que tengan un tamaño de punto de historia fijo, pero una duración (tiempo) fluida , aún podemos beneficiarnos de lanzamientos iterativos sin ejercer una presión de entrega poco realista sobre los desarrolladores voluntarios.
- Podemos deshacernos de las tablas de quemado y el cálculo de la velocidad . Si entiendo correctamente, estas son herramientas y métricas que funcionan como un puente entre el equipo de desarrollo y la Administración. Sirven para informar el progreso en una forma que sea significativa tanto para los desarrolladores como para las partes interesadas. Teniendo en cuenta que no tenemos a nadie a quien informar (sin Gerente de Proyecto, sin Propietario de Producto y sin partes interesadas externas), creo que podemos abandonar esto por completo.
Cosas que creo que podríamos beneficiar de las cuales no requerirán ajustes:
- La (s) reunión (es) de reunión de requisitos . Donde todos se sientan alrededor de una mesa y discuten Historias de usuarios, bosquejan simulacros de UI y construyen una cartera de productos.
- Retrospectivas de Sprint . Esta será una forma interesante de converger en un proceso de desarrollo que funcione para nosotros como equipo de voluntarios.
Cosas de las que no estoy seguro:
- ¿Cómo se deben tratar los Stand-ups diarios ? Me pregunto si tendrían mucho valor en nuestro entorno. Mi comprensión del ritual de pie es que ayuda a la comunicación al diseminar información de forma natural en todo el equipo. Teniendo en cuenta el hecho de que nuestros Sprints probablemente ofrecerán mucha menos complejidad que un Sprint promedio, es posible que haya menos necesidad de estar al tanto de los avances / desarrollos de todos los demás miembros del equipo.
- ¿Debería presionar para obtener cosas de XP como integración continua, revisiones de código y TDD? Me preocupa que esto pida mucho. Me sentiría más tentado a incorporar estos conceptos en proyectos futuros una vez que las personas estén más familiarizadas con Scrum y trabajen en equipo.
Mis preguntas:
¿Se puede adaptar Scrum a un entorno voluntario?
¿Y mi enfoque planificado va en la dirección correcta hasta ahora?
fuente
Respuestas:
Mira a Kanban. Es más apropiado que SCRUM para sus limitaciones.
Editar: SCRUM es (más o menos) un retraso acumulado ordenado con sprints y ceremonias para garantizar que el volumen de trabajo 'en progreso' se mantenga bajo control y tenga algo sólido al final de cada sprint. Si abandona las ceremonias y la cadencia de sprints, termina con Kanban: una acumulación ordenada y un fuerte énfasis en limitar el trabajo 'en progreso' directamente y asegurándose de que todo lo marcado como 'hecho' se haga en lugar de imponer estabilidad al final de cada sprint
Todavía obtienes los beneficios ágiles: libera en cualquier momento, flexibilidad, alguna medida de previsibilidad, aunque SCRUM puede llevarte un poco más lejos en ese aspecto, y sin las ceremonias o aspectos de SCRUM que no encajan bien en un equipo suelto y distribuido sin compromiso . ¿La captura? Abandonar las ceremonias requiere más disciplina, por lo que REALMENTE debe prestar atención a las pruebas, la calidad del código, el trabajo actual en progreso y asegurarse de que la parte superior de la cartera (cosas listas para ser recogidas por personas) esté suficientemente elaborada.
Podría tener una cartera de pedidos basada en votos, aunque en un entorno voluntario algunas personas simplemente trabajan en lo que quieran.
(Y sí, todas las ideas de TDD, CI, revisiones e programación de pares son buenas ideas).
fuente
Para abordar las diferencias que observa primero:
Con respecto a sus adaptaciones propuestas, especialmente cuando trabaje con voluntarios, recomendaría encarecidamente mantener la longitud del sprint fija. De esa manera, los voluntarios saben definitivamente durante qué período están dando su compromiso.
Tampoco abandonaría las listas de quemado inmediatamente. También pueden ser útiles para que el equipo mismo vea cómo están cumpliendo con su compromiso. Dejaría en manos del equipo decidir mantenerlos o deshacerse de ellos. Lo mismo ocurre con los cálculos de velocidad. especialmente con la gran variación en horas hombre disponibles en cada sprint, pueden resultar muy útiles (especialmente si calcula el número de puntos completados por hora hombre) en la estimación de futuros sprints.
Con respecto a las standups diarias, seguirán siendo útiles en su entorno, aunque solo sea para que se sepa lo que todos están haciendo o tienen problemas (y eso es independiente de la complejidad). Pero puede ser más difícil realizar una resistencia diaria, por lo que es posible que deba comprometerse allí.
Las prácticas de XP que mencionas se pueden introducir o no independientemente del uso de Scrum y también se pueden proponer durante una retrospectiva.
fuente
Me sorprende que nadie lo haya señalado, pero su proyecto parece ser la mayoría de los proyectos de código abierto. Si echa un vistazo a algunos proyectos de código abierto más populares, puede encontrar algo de inspiración. Y creo que deberías olvidarte de SCRUM y pensar en esto desde una perspectiva de agilidad general.
Ágil es todo sobre comunicación y colaboración. Hay una razón por la cual hay 2 puntos de 4 en el Manifiesto Ágil para hablar de ello.
Y la forma en que describe su proyecto, sería difícil tener una comunicación cara a cara con todos los que trabajan en el proyecto, algo que tanto Agile como SCRUM fomentan. Entonces, lo primero en lo que me enfocaría es establecer canales de comunicación para todo el equipo (tanto voluntarios como comité de producto). Cosas como wiki, foros, videoconferencias y un sistema adecuado de trabajo atrasado, tareas y seguimiento de errores son excelentes maneras de garantizar que todos sepan lo que está sucediendo y lo que hay que hacer.
La segunda cosa que quisiera señalar es no solo rozar las partes tecnológicas de ágil. Muchos creen (incluido yo mismo) que ellos son los que hacen que el trabajo sea ágil, no el lado del proceso. La revisión del código es importante y la mayoría del trabajo de código abierto al hacer que alguien que conoce el proyecto revise los compromisos / impulsos para garantizar que se mantenga una calidad lo suficientemente alta. TDD se da prácticamente para cualquier proyecto ágil. Asegura que cualquier cambio en el código no rompa la funcionalidad anterior, lo cual es aún más importante en su caso cuando los voluntarios no pueden molestarse en corregir los errores de otras personas. También facilita la revisión del código porque el revisor puede ver en las pruebas qué funcionalidad se agregó y, al ejecutarlas, se asegura de que la funcionalidad realmente funcione según lo previsto. La integración continua es igual que TDD.
Lo último es que creo que debería tener al menos pocas personas trabajando en el proyecto a tiempo completo. Esas personas deberían tener roles específicos:
fuente
No puede adaptarlo de la manera que lo describe y aún llamarlo SCRUM. pero en mi opinión, puede usar Scrum como sigue para la configuración que ha descrito.
fuente
Podría sugerir un enfoque diferente. Como se trata de voluntarios, debe tener en cuenta algunas cosas. Su equipo probablemente tendrá una alta rotación, la vida se interpondrá y la gente se distraerá. De los que quedan, unos pocos contribuirán de manera consistente, pero no mucho, y finalmente tendrás ese grupo hardcore que realmente hundirá sus dientes en el proyecto. Estoy haciendo muchas suposiciones sobre su fuerza laboral aquí y si siente que mi evaluación no refleja a las personas con las que está trabajando, no dude en ignorar el resto de esto.
Ahora necesita una estrategia que permita a las personas que no hacen mucho trabajo poder trabajar de manera bastante autónoma, solo tienen mucho tiempo para dedicar a esto y no quieren hacer que gasten la mayor parte de eso en comunicación. Las personas que están más involucradas deberían ser responsables de la integración y eliminar algunas de las ideas más complejas.
Esto me lleva a pensar en un proceso de desarrollo más centrado en marcos de alambre y prototipos.
Puede tener un grupo de elementos de trabajo disponibles y alentar a las personas a escribir marcos de alambre para ellos. Puede usarlos como Tracer Bullets (terminología prestada del programador pragmático) para perfeccionar la idea y proporcionar inspiración a las personas para que la desarrollen. A partir de ahí, puede graduar las ideas exitosas en prototipos, nuevamente estos son proyectos muy pequeños diseñados para ayudar a las personas a aprender más sobre los proyectos. Después de eso, ahora tiene una sección más pequeña de ideas sólidas que han sido creadas por una multitud de personas que puede transmitir a algunos miembros del equipo que son un poco más activos y pueden trabajar para integrar esas ideas en su sistema.
fuente
Creo que Kanban encajaría mejor para esta situación.
Scrum tiene algunas cosas que no encajan. Las mediciones de tiempo o alcance no son necesarias y todos los que desarrollan tienen la misma visión de producto de las reuniones. La responsabilidad y el seguimiento de un plan corto con coherencia son objetivos comerciales.
Kanban ofrece muchas de las mismas ventajas que Scrum sin sus desventajas. Puede darle prototipos rápidos. Los prototipos se pueden ejecutar antes de las reuniones. También proporciona TDD para código modificable y pruebas de regresión. La programación de pares puede facilitar a los recién llegados y no habituales a la base del código mediante la transferencia de conocimientos.
Kanban también tiene ventajas únicas. Si la visión de lo que hacen los usuarios se está desarrollando en paralelo, Kanban funciona bien. Prueba de ello es el éxito de los programas de pequeñas empresas. Además, para los días con pocos voluntarios, como tres personas, Kanban aún funcionaría bien. Scrum, a pesar de ser ligero, sería demasiada cinta amarilla.
fuente