Pelo que entendi, a idéia com metodologias ágeis é que você entrega algo funcional e o entrega com frequência. O aplicativo entra em seu incremento de forma final após incremento.
Mas nas iterações iniciais, você pode criar a estrutura ou os fundamentos sobre os quais o aplicativo permanecerá, para que seja algo importante, mas não visível para os usuários.
O que é entregue ao cliente nessas primeiras iterações? Como você mostra o progresso na direção certa quando cria código de andaimes?
Respostas:
É típico ter 2 semanas de corrida.
Para mim, o primeiro sprint ou o 2 provavelmente terão menos recursos "visíveis" do que os sprints posteriores por esse motivo exato (por alguma descrição tênue de "less").
Dito isto, certamente não deve demorar duas semanas para criar todo o seu andaime e não há nada visível na interface do usuário para mostrar isso.
Talvez você não elimine todos os itens do andaime no primeiro sprint ou 2. Talvez as peças possam esperar e serem adicionadas mais tarde.
Talvez seu primeiro sprint tenha "Criar página da Web X com dados fictícios" para que você possa obter algo brilhante para mostrar ao seu cliente. E o próximo sprint tem "Alterar página da web X para usar dados do banco de dados".
fonte
O Manifesto Agile sugere que o Software de Trabalho é mais valioso do que a documentação abrangente, e a estrutura do Scrum adota essa noção para sugerir que o fornecimento de software de trabalho testado e com valor comercial seja um requisito a cada sprint.
Por quê? Bem, entre outras coisas, designers e desenvolvedores frequentemente são vítimas de gastar muito tempo com itens YNNI (você nunca precisará dele). Infelizmente, essas estruturas de que você está falando geralmente são uma grande responsabilidade nessa área. Os desenvolvedores começam a desenvolver todas as coisas que a estrutura PODE ter para oferecer suporte e, de repente, você tem três meses e não tem nada de valor comercial para mostrar. Acontece que a estrutura nem suporta realmente o que eles acabam precisando.
Portanto, a abordagem sugerida é criar apenas o que é realmente necessário agora e entregá-lo agora.
Isso NÃO significa que você não pode construir peças reutilizáveis e similares, mas sempre o faz para apoiar a construção de uma necessidade atual. Além disso, isso não significa que você precise usar completamente antolhos para o que está por vir - não construa coisas para que seja impossível alterá-las / melhorá-las mais tarde. Mas a chave é sempre oferecer valor comercial.
Geralmente, existem algumas coisas importantes que precisam ser estabelecidas antes que qualquer coisa possa ser entregue, como a configuração de ambientes e similares. Para isso, muitas equipes acham útil ter um "Sprint 0" no qual as bases são estabelecidas. O Sprint 0 pode demorar um pouco mais do que os outros sprints, pois não é aplicado ao backlog ou queima do seu produto, mas ainda deve ter um prazo de duração razoável.
fonte
O que tem maior valor comercial para o usuário. Por exemplo, se os aplicativos tiverem regras de negócios complexas, a (s) primeira (s) iteração (ões) conterão apenas aquelas regras de negócios codificadas na forma de código. O cliente deve estar satisfeito desde que você tenha um código para essas regras de negócios. (O problema de convencer o cliente a aceitar uma coisa dessas é uma questão completamente diferente.) Por exemplo, você pode mostrar aos especialistas em negócios do cliente seus testes de unidade / aceitação que expressam o que o domínio deve fazer e que o código passa com um resultado verde. Ou melhor ainda, faça com que os especialistas em negócios ajudem a criar esses testes.
Há também a questão de
O que acredito ser muito mais importante do que realmente é entregue. O Design Evolucionário tem algo importante , que diz que você deve criar a arquitetura ao longo do tempo, em vez de tentar criá-la no começo. Quanto à fundação, isso geralmente significa algum tipo de banco de dados ou estrutura da interface do usuário. Nesse caso, existe a idéia de " boa arquitetura é aquela que permite adiar decisões importantes ". E escolher banco de dados ou interface do usuário é uma decisão importante. Por exemplo, você pode se dar bem apenas com armazenamento na memória de dados, em vez de tentar usar o DB desde a primeira iteração.
fonte
O que tentamos fazer é entregar nas primeiras iterações o aplicativo mais simples possível (uma versão hello world do que estamos entregando). Vemos três benefícios importantes nisso:
fonte
Isso está errado, já que você não precisa criar uma estrutura que possa usar no futuro. A idéia é construir apenas o necessário (veja também YAGNI ).
No sprint zero, você precisa se preparar para o trabalho real. Muitas pessoas discutem o que deve ser feito neste sprint, mas, na minha opinião, está concluído quando você pode começar a trabalhar nos itens do backlog. Esta etapa inclui configurar PCs, definir o processo de criação, escolher estruturas etc.
Quando você terminar o sprint zero (ou a iteração zero), poderá começar a trabalhar no seu aplicativo. Pegue os itens da lista de pendências e termine-os um por um. Depois de concluir a iteração 1, você terá algo útil. A primeira iteração geralmente inclui alguns dos recursos mais importantes.
Após a iteração zero, obviamente você não tem mais nada para entregar. A entrega ocorre após a iteração 1. Ele contém recursos que você definiu para a iteração.
Se sua pergunta for "como escolher o que entra na iteração X?", Dê uma olhada nesses videocasts (vídeos para a iteração 0 A e parte de B).
fonte
Você pode entregar praticamente o que quiser. A construção da ideia de infraestrutura é simplesmente errada / não é ágil / insustentável.
Por exemplo: a criação de um aplicativo Hello World totalmente funcional pode ser criada em horas. A criação de um servidor (mesmo que temporariamente) na nuvem ou como uma VM pode ser feita em horas.
Estes são suficientes para começar a se desenvolver . Então, se você precisar de IC, poderá adicionar uma história de IC; se você precisar de um servidor físico, com certeza, adicione uma história para isso.
Mas comece a entregar no primeiro dia e nunca pare!
fonte
As iterações iniciais, especialmente a 1ª, conterão ou devem pelo menos planejar picos de arquitetura, que incluem uma certa quantidade de tempo de descoberta e talvez alguma prototipagem de arquitetura.
Como você disse, geralmente, existem requisitos estruturais que podem não significar muito para a parte interessada / cliente, mas são necessários para formar uma forte plataforma ou orientação de padrão. Você não pode contornar isso, pois não pode começar a construir B até que A esteja completo.
Parte da abordagem do Agile é fechar o cliente para que a documentação não seja necessária, pois tudo o que você precisa fazer é pegar o telefone / enviar e-mail, e isso é esperado. As expectativas dos clientes devem ser definidas adequadamente e qualquer trabalho concluído deve ser muito conciso e NECESSÁRIO . Sem revestimento de ouro, sem "Você pode precisar", etc. Construa o que você precisa em A para passar para B.
Dependendo de como você está atacando o projeto, você só pode criar a base necessária para concluir um determinado módulo; portanto, durante a reunião de planejamento do sprint, você deve definir os planos para o sprint atual com base nas prioridades definidas pelo cliente, dependendo do que for necessário para esse sprint, pode haver alguns requisitos básicos, e é isso que entra no sprint 1. Depois que o 1º sprint estiver concluído e A tiver sido construído, planeje concluir B.
Se você concordou com uma linha do tempo com o cliente, desde que cumpra esse contrato, o cliente provavelmente não se importará com o que você faz primeiro ou segundo. Você sempre pode mostrar a eles os resultados do teste de unidade, mas se você disser que teremos algo para você ver após o sprint 2 (ou 3) e entregar, ele estabelecerá uma forte precedência. Espera-se que os clientes sejam razoáveis tanto quanto os desenvolvedores e ambos estão trabalhando para o mesmo objetivo. Um projeto concluído que atenda às necessidades do cliente e funcione conforme o esperado. Tão preocupante que não haja nada para ver após o sprint 1 é um ponto discutível, porque o cliente só quer ter certeza de que, após o sprint 20, o projeto será concluído (-ish).
fonte