Como você lida com o trabalho não-funcional do Scrum em hastes oculares incorporadas?

15

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.

Bruce
fonte
2
Etapa 1. Procure outras pessoas com a mesma pergunta. Exemplo. stackoverflow.com/questions/5909533/… . É uma pergunta muito comum.
S.Lott
É engraçado como muito tempo e esforço pessoas gastam tentando cumprir com um processo de desenvolvimento, que aparece para adicionar nada para o resultado final
Steve

Respostas:

8

Você está usando uma metodologia em um produto que não é compatível com IMHO.

Na maneira como a maioria das pessoas define agilidade, todo o trabalho é negociável com base na mudança de prioridades, reordenação ou substituição.

Na maneira como a maioria das pessoas define cascata, o trabalho é organizado em sequência com antecedência, a partir de um esforço significativo de arquitetura no início.

As tarefas que você listou acima parecem muito impressionantes para mim. Eles precisam estar em uma determinada ordem e não são negociáveis.

Não estou dizendo que você deve respeitar a visão de alguém sobre qualquer processo, mas pelo menos para essas tarefas você parece estar em um projeto não-ágil para mim. Tentar basear isso em um processo ágil será, na melhor das hipóteses, um desleixo.

Se o resto do projeto é adequado para agilidade, não me preocuparia muito com a configuração inicial, mas o fato de você mencionar o RTOS e as placas de desenvolvimento me faz suspeitar que tudo seria melhor em algo mais. como cascata (uma longa sequência de dependências imóveis).

Conta
fonte
7

OK, então não sei nada sobre a construção de sistemas embarcados, mas pelo que vejo, não há nada que tornaria o Scrum inadequado para esse desenvolvimento. É fácil se envolver com a preocupação de não ter realmente a funcionalidade voltada para o usuário, por isso é difícil escrever "histórias de usuário" com usuários. Exceto que as histórias de usuários não fazem parte do Scrum - elas são frequentemente usadas com o Scrum - mas são apenas uma ferramenta.

O que faz parte do Scrum é a ideia de fornecer recursos completos que são totalmente testados e potencialmente implementáveis ​​em um ambiente ativo a cada Sprint. Quando você começa do zero no primeiro dia de qualquer tipo de projeto, o valor real de qualquer tipo de funcionalidade que você pode oferecer no Sprint 1 é bem pequeno. Isso ocorre porque cada coisa minúscula precisa de toneladas e toneladas de infraestrutura criadas para fazê-lo funcionar. Mas o ponto é que você constrói apenas infraestrutura suficiente para fazer com que cada recurso funcione. E então você o constrói à medida que adiciona mais recursos.

A idéia é que você NÃO passe meses e meses construindo infraestrutura que não tem como ser detectada de fora do sistema. Por quê? Porque até você criar as coisas que realmente fazem as coisas, você não sabe exatamente o que a infraestrutura precisa ser. É isso que você aprende ao criar os recursos reais do sistema. Se você construiu a infraestrutura no início, está construindo quando sabe o mínimo sobre o sistema.

Se você está decidido a escrever histórias de usuários, lembre-se de que os usuários não precisam ser pessoas. Assim, você escreve coisas como "Como manipulador de interrupção do CMOS, preciso detectar o status do sinalizador de modulação da pilha de bingle whozzit quando o compressor fluxotrônico sinaliza uma carga de derivação passiva". Absolutamente não escreva "Como desenvolvedor ..." histórias de usuários.

Dave
fonte
3
Boa resposta, exceto a última declaração. Os desenvolvedores também podem ser usuários e, às vezes, você precisa trabalhar para oferecer suporte a outros desenvolvedores da equipe.
Bryan Oakley
"Se você constrói a infraestrutura no início, está construindo quando sabe o mínimo sobre o sistema". - não se segue que um desenvolvedor experiente não tenha idéia do que a infraestrutura básica precisa fazer. Se você construiu todas as infraestruturas (que por definição suportam muitas funções) apenas para lidar com o problema imediato e sem qualquer tentativa de previsão, você pode acabar reescrevendo-o infinitamente, e talvez precise reescrever os recursos finalizados para reintegrá-los com infra-estrutura que é mais tarde reescrito para acomodar algum outro recurso
Steve
1

Você usa o Scrum em uma área muito específica e viola o suposto processo em cada etapa. Sua pergunta provavelmente deve ser: Existe outra metodologia ágil que se encaixe melhor ao meu ambiente? Simplesmente, é muito difícil ajudá-lo a melhorar o Scrum se o seu ambiente não permitir. Os problemas que vejo na sua descrição:

  • Nenhuma tarefa demonstrável que possa ser considerada como tarefa de infraestrutura. Se você precisar de vários sprints para fazer algo que não é considerado valor comercial, é provável que suas histórias de usuários estejam mal definidas. Se você precisar criar uma ferramenta ou qualquer outra coisa para poder agregar valor ao negócio, o produto poderá ser dividido em duas partes / liberações - construindo uma ferramenta e construindo um valor comercial. Nesse caso, suas histórias de usuário "Como desenvolvedor ..." serão completamente válidas, porque uma ferramenta é criada para desenvolvedores.

    O problema aqui é como comunicar isso com o cliente, porque seu envolvimento no primeiro release é zero. Se não houver valor comercial para os clientes, como eles podem participar? Como o proprietário do produto pode definir a prioridade do negócio?

    Eu acho que o principal problema aqui é que isso não é algo que se encaixa no Scrum. O Scrum tenta entregar os recursos comerciais mais importantes primeiro, mas você precisa de dois meses para entregar o primeiro. O Scrum e todo o ágil adotam a mudança - o que acontecerá se, depois de fornecer os primeiros recursos, o cliente exigir alguma alteração que remonta a todos os seus sprints iniciais?

  • Teste. Outra falha, porque uma equipe no Scrum é considerada como um grupo de membros multifuncionais. Isso significa que todo mundo faz desenvolvimento e teste e, por isso, não há situações descritas em seu ponto final (ou pelo menos cinco dias). Isso não significa que não pode haver controle de qualidade separado para realizar alguns testes mais complexos e sofisticados, mas a equipe deve fornecer um recurso já testado / verificado. No seu caso, parece realmente que o Scrum não é o que você precisa. Você precisa desenvolver separadamente, testar e passar recursos entre eles.
Ladislav Mrnka
fonte