Tengo dos problemas con Scrum en sistemas integrados. Primero, hay muchas tareas que hacer, especialmente en las primeras etapas, que no son demostrables. Comenzamos con una placa de desarrollo, sin sistema operativo, sin pantalla, sin comunicación en serie, etc. No tuvimos nuestra pantalla para seis sprints.
Los primeros cuatro sprints fueron:
- Poner en funcionamiento el RTOS
- Crear tareas para escribir controladores de red y en serie
- Escribir rutinas de interrupción para botones, comunicación, etc.
- Escribir las clases y métodos de la base de datos primaria
- Escribir un menú de depuración en serie
La mayoría de estas tareas no son adecuadas para historias de usuarios. De hecho, la única interfaz en todo el sistema era el menú de depuración en serie, integrado en el sprint 3, por lo que no había nada que demostrar al final de los sprints. Incluso el menú en serie estaba destinado a uso interno y no a un usuario final. Sin embargo, todavía quiero rastrear y administrar estas actividades de desarrollo a través de Scrum.
Terminamos escribiendo frases de "historias de usuarios" como "Como desarrollador ...", algo con lo que no estoy contento, pero al usar Target Process (www.targetprocess.com), no existe el concepto de un elemento acumulado que sea una tarea o tarea
En segundo lugar, ¿cómo maneja las versiones y las pruebas? Es un verdadero dolor para nosotros porque los probadores no tienen los depuradores de hardware, por lo que tenemos que construir versiones flash del código y grabarlas en sus placas de desarrollo para probar. Los probadores no son técnicamente tan precisos como los desarrolladores y a menudo requieren mucho apoyo para que las cosas funcionen en las primeras etapas (restablecer la placa, conectar la comunicación en serie, etc.), o incluso para comprender la salida.
Finalmente, con respecto a la definición de hecho, un sprint no puede completarse hasta que todas las historias estén completas. Todas las historias no están completas hasta que sean verificadas por los evaluadores. No hay forma de evitar "robar" el tiempo del desarrollador para dar a los evaluadores. En otras palabras, si las últimas tres historias de usuario en el sprint demorarán cinco días en probarse, deben codificarse y probarse en la unidad cinco días antes del final del sprint. ¿Qué se supone que debe hacer el desarrollador? ¿Para de trabajar?
Estoy siendo gracioso, pero es un verdadero problema tratar de cumplir con las reglas. Ahora, estoy de acuerdo con cambiar las reglas, pero el problema que tengo es que arruina todas mis métricas de carga si no puedo marcar las cosas hasta que se prueben.
Me encantaría saber cómo otros han manejado estas situaciones.