Eu tenho dois problemas com o Scrum em sistemas embarcados. Primeiro, há muitas tarefas a serem executadas, especialmente nos estágios iniciais, que não são demonstráveis. Começamos com uma placa de desenvolvimento, sem sistema operacional, sem tela, sem comunicação serial, etc. Não tivemos nossa tela por seis sprints.
Os quatro primeiros sprints foram:
- Colocando o RTOS em funcionamento
- Criando tarefas de gravação de drivers seriais e de rede
- Escrevendo rotinas de interrupção para botões, comunicação etc.
- Escrevendo as principais classes e métodos de banco de dados
- Escrevendo um menu de depuração serial
A maioria dessas tarefas não é adequada para histórias de usuários. De fato, a única interface em todo o sistema era o menu de depuração serial, construído no sprint 3, portanto não havia nada para demonstrar no final dos sprints. Até o menu serial era para uso interno e não para o usuário final. No entanto, ainda quero acompanhar e gerenciar essas atividades de desenvolvimento via Scrum.
Acabamos escrevendo frases de "histórias de usuários" como "Como desenvolvedor ...", que não me agrada, mas ao usar o Target Process (www.targetprocess.com), não existe o conceito de um item de backlog que é uma tarefa ou tarefa.
Segundo, como você lida com lançamentos e testes? É uma verdadeira dor de cabeça para nós, porque os testadores não têm os depuradores de hardware, por isso precisamos criar versões em flash do código e gravá-las em suas placas de desenvolvimento para testar. Os testadores não são tecnicamente tão perspicazes quanto os desenvolvedores e geralmente precisam de muito apoio para fazer as coisas funcionarem nos estágios iniciais (redefinir a placa, conectar a comunicação serial etc.) ou até mesmo para entender a saída.
Finalmente, em relação à definição de done, um sprint não pode ser concluído até que todas as histórias estejam completas. Todas as histórias não estão completas até serem verificadas pelos testadores. Não há como evitar "roubar" o tempo do desenvolvedor para dar aos testadores. Em outras palavras, se as três últimas histórias de usuários no sprint levarem cinco dias para serem testadas, elas deverão ser codificadas e testadas por unidade cinco dias antes do final do sprint. O que o desenvolvedor deveria fazer? Parar de trabalhar?
Estou sendo ridículo, mas é um problema real tentar obedecer às regras. Agora, estou bem em alterar as regras, mas o problema que tenho é que estraga todas as minhas métricas de burndown se eu não conseguir marcar as coisas até que sejam testadas.
Eu adoraria ouvir como os outros lidaram com essas situações.