O que significa ser ágil?

17

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.

JD01
fonte
4
Parece ser uma duplicata de programmers.stackexchange.com/questions/15928/... soa como vocês realmente não sabia o que fazer e não tinham administração de bens para reforçar o processo
Sylvanaar
1
Sim, eu concordo com você 100%. Meu gerente leu um livro sobre ágil e acabou com ele (embora muito mal). Eu usei o TDD no lado do servidor do projeto, mas os outros não quiseram aprender ou ver os benefícios dele. Tínhamos uma estrutura (no lado do cliente) que levava uma eternidade e o desenvolvedor continuava argumentando que ele só precisava continuar com ela (sem interferência).
JD01 21/08
3
Embora o título pareça duplicado, acho que essa pergunta é útil por si só, porque muitas equipes leem explicações "genéricas" sobre o que é ágil (e até fazem aulas de treinamento e contratam consultores) e depois enfrentam exatamente os mesmos problemas que os de JD01. equipe de qualquer maneira. Portanto, para colocar a questão no contexto dessa equipe específica, poderá esclarecer problemas e soluções específicos que outras questões mais gerais das postagens não abordariam.
DXM

Respostas:

27

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
1
Obrigado Jarrod pela sua resposta. O TDD deve ser além do ágil? Foi difícil fazer os desenvolvedores pensarem dessa maneira. No final, como mencionei, eles fizeram alguns testes no final (se lembraram) e disseram que era TDD. Concordo com tudo o que você disse. O ciclo de feedback era praticamente inexistente, porque meu gerente sentiu que estava interferindo na "estrutura" que levava meses e meses para a direita. Até então, estávamos presos à implementação de funcionalidades que não atendiam aos requisitos do cliente.
JD01 21/08
3
O TDD é um arenque vermelho, não concordo pessoalmente como religião, de que servem os testes de código que não atendem às necessidades dos clientes. E como o teste deve ser incorporado e nada entregue e demonstrado que não seja testado, o TDD como um mantra é bastante inútil. Se não funcionar, você não o demo. Se você não fizer a demonstração, o proprietário / cliente do produto não poderá aceitá-lo.
2
Comecei fazendo muito TDD, mas agora mudei para o BDD, que está mais alinhado com as necessidades dos clientes como testes de aceitação. Embora eu ache que o TDD tenha ajudado a criar projetos, eu não teria visto o contrário, além de fornecer testes.
JD01 21/08
1
O principal motivo do TDD é permitir a refatoração contínua, reduzindo a taxa de acumulação de dívida técnica. Se houver um código que você tem medo de alterar porque o novo teste seria muito caro, o projeto terá um final prematuro.
kevin Cline
Já ouvi muitas pessoas pregando TDD, mas nunca vi isso na prática. Pessoalmente, meu cérebro não funciona dessa maneira. Costumo ter uma boa idéia geral do que estou escrevendo, mas, enquanto escrevo, estou reequilibrando e movendo as coisas. Escrever os testes primeiro não é possível para mim. Eu escrevo testes de unidade, geralmente como parte da escrita do código, mas eles são escritos como eu escrevo o código, não com antecedência.
DaveG 19/02
9

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 ...

  1. Primeiro, você solucionará os maiores problemas que terão o maior impacto na capacidade de suas equipes de fornecer produtos
  2. Ao identificar problemas imediatos e participar da criação de soluções, os membros da sua equipe entenderão por que certas práticas são importantes e não as farão simplesmente porque são instruídas a fazê-las.

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.

DXM
fonte
1
para o downvoter: cuidado para elaborar? Eu agitei algumas penas porque eu disse que não adotasse cegamente o Scrum ou era outra coisa?
DXM
2
sim bobo. Marcarei +1 com informações detalhadas.
Michael Durrant
1
+1 para " A chave para entender é que o ágil não é criar um novo processo para fazer as coisas; trata-se de mudanças contínuas e constante ajuste aos processos / práticas existentes. "
David 'o careca'
-2

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.

StevenV
fonte
2
Fiz voto negativo porque acho que isso não responde à pergunta original.
Bryan Oakley
1
justo o suficiente, suponho. Eu estava abordando a premissa inicial do OP: "Temos um projeto que todo mundo diz que faremos de maneira ágil, mas duvido que tenhamos entendido claramente o que é ágil". Muitas pessoas dizem que são, ou que querem, "são ágeis" ou "são ágeis" sem entender o que realmente são a filosofia ágil ou as metodologias que a apóiam.
StevenV
3
Eu discordo de seguir cegamente uma metodologia específica completamente. Ser "verdadeiramente" ágil significa que você não se prende a nenhuma tendência ou metodologia específica, a menos que se ajuste à sua empresa e equipe. É melhor usar uma metodologia como ponto de partida e, depois que você tiver um pouco de treinamento e uma experiência ainda melhor, ajuste-o para atender às suas necessidades particulares. Ainda mais importante, se o próximo projeto e cliente exigirem algo um pouco diferente, ajuste a metodologia para se adequar. não que seja verdadeiramente ágil.
S.Robins 6/02/2012
1
Ao visitar novamente minha resposta, concordo com a S.Robins acima e modifiquei minha resposta para refletir isso.
StevenV 19/02