Temos um projeto que todo mundo diz que faremos de maneira ágil, mas duvido que tenhamos entendido claramente o que é ágil.
Em projetos anteriores, tínhamos reuniões de planejamento, depois definíamos o backlog do produto e alocávamos o trabalho aos desenvolvedores em sprints de 2 a 3 semanas. Todas as manhãs, tínhamos reuniões de scrum (que pareciam durar meia hora por hora) e cada desenvolvedor continuava com isso depois disso. Quase ninguém escreveu nenhum teste até o final do sprint e o trabalho que não foi concluído foi adicionado ao próximo sprint.
Os desenvolvedores dificilmente conversaram entre si e não havia TDD envolvido no desenvolvimento. De fato, a maioria dos desenvolvedores tinha uma especificação no início e apenas a seguiu pelas 2 ou 3 semanas em que o sprint foi organizado. Quase não houve comunicação com o cliente / interessado.
O controle de qualidade se envolveu normalmente alguns meses depois e, a essa altura, encontramos requisitos ausentes que aumentavam ainda mais a quantidade de trabalho que tínhamos que fazer. Claramente, não havia loop de feedback.
Portanto, minha pergunta é: onde erramos e como posso impedir que a equipe cometa os mesmos erros.
Respostas:
O que você está descrevendo não é Agile por definição (Manifesto Agile) , é o Waterfall com reuniões diárias de status. Agile significa adaptar-se facilmente às mudanças, se não houver um loop de feedback interativo com o proprietário do produto e, portanto, com os clientes, que mudança está ocorrendo?
O Agile trata de falhas rápidas, através da comunicação constante com o proprietário / clientes do produto. É melhor falhar mais cedo ou mais tarde, menos trabalho é feito e menos é "perdido". E você não fica preso ao argumento de que "não temos tempo para fazê-lo corretamente, pois passamos muito tempo fazendo isso errado, só precisamos continuar no mesmo caminho, mesmo que isso leve ao fracasso "
Parece que seu gerenciamento está fazendo "SCRUM, mas ...", onde o "mas" é onde eles jogam todas as coisas de SCRUM com as quais não entendem ou não concordam e apenas fazem as coisas da mesma maneira aleatória como sempre, mas com novos nomes brilhantes de chavão para tudo.
No SCRUM, o apoio diário NÃO se refere à entrega de status para a gerência, é para forçar a interação com o desenvolvedor, para que você saiba o que seus colegas estão fazendo e possa ajudar um ao outro e não duplicar o trabalho. Se demorar mais de 45 segundos por pessoa, você estará fazendo errado. Trata-se de transparência para a equipe, se uma pessoa está dando o mesmo status vários dias em algo que deve ter um único dia de trabalho, a equipe pode resolver o problema da pessoa mais cedo ou mais tarde.
Se você não está testando o código um do outro, como está escrito, também não está fazendo isso corretamente. Os testes devem ser incorporados ao processo e não um pensamento posterior. O controle de qualidade deve ser incluído nas sessões de planejamento e fornecer estimativas sobre quanto tempo as coisas levarão para testar.
Se você não está cumprindo os compromissos da Sprint e rolando as coisas, não está fazendo isso corretamente. Os sprints são sobre compromissos se você está se comprometendo com muito trabalho, pare de fazer isso, não há como introduzir previsibilidade ou repetibilidade se você não puder se comprometer com precisão com as entregas.
fonte
Jarrod forneceu uma boa resposta (+1 a isso) e eu gostaria de estender um pouco isso.
Agile não se trata apenas de falhas rápidas e feedback entre o proprietário do produto (cliente) e a equipe; trata-se de feedback rápido entre todas as partes interessadas envolvidas. Ser verdadeiramente ágil (e isso é diretamente do manifesto ) é reconhecer que o processo existe apenas para ajudar os desenvolvedores a oferecer um produto melhor. As pessoas acima do processo significa que, assim que a equipe reconhecer que seu processo existente não funciona, você o altera e o faz funcionar.
"Scrum, mas ..." também é um problema, mas há dois lados nessa moeda. Se você olhar para o manifesto, verá que é sobre a equipe e faz com que ferramentas / processos funcionem para você. Não há duas equipes iguais e, portanto, cada uma delas funcionará de maneira um pouco diferente, e tudo bem. Você poderia, certamente, pegar toda a metodologia Scrum e tentar segui-la à risca e ver se isso funciona para sua equipe.
Outra alternativa é em vez de empurrar outro processo para a equipe e fazer com que todos sigam o que o Scrum diz para você fazer, tente a abordagem ágil : Comunique-se com a equipe e veja se juntos você pode identificar áreas e soluções de problemas para cada uma. Em seguida, introduza mudanças gradualmente na maneira como você trabalha, para que os problemas sejam resolvidos.
Pode demorar um pouco, mas ...
Se traçarmos uma analogia entre Scrum e um padrão de design, trabalhar da maneira que propus seria semelhante à codificação em um padrão, onde você mantém o código o mais simples possível e converge para um padrão de design apenas quando necessário. Ao contrário de apenas escolher um padrão de design e seguir com ele (ou seja, selecionar cegamente o Scrum e todos os seus processos como um conjunto), o que às vezes torna o código mais complexo e mais difícil de manter do que poderia ter sido.
A chave para entender é que o ágil não é criar um novo processo para fazer as coisas; trata-se de mudança contínua e ajuste constante aos processos / práticas existentes.
fonte
se a equipe (e sua gerência) realmente deseja "ser ágil", deve começar lendo e discutindo em equipe o Manifesto Ágil e seus diretores. Em seguida, escolha uma das metodologias ágeis que foram criadas ( Scrum , por exemplo), receba algum treinamento e comece a seguir. Eu recomendo segui-lo de perto por um tempo antes de modificá-lo, mas isso sou só eu.
Eles também devem examinar profundamente as práticas de engenharia usadas para apoiar a metodologia de projeto ágil específica escolhida.
fonte