Estou lendo o Scrum - um guia de bolso de Gunther Verheyen e ele diz:
O relatório Chaos de 2011 do Standish Group marca um ponto de virada. Foi realizada uma extensa pesquisa na comparação de projetos tradicionais com projetos que usavam métodos ágeis. O relatório mostra que uma abordagem ágil para o desenvolvimento de software resulta em um rendimento muito maior, mesmo contra as antigas expectativas de que o software deve ser entregue dentro do prazo, do orçamento e com todo o escopo prometido. O relatório mostra que os projetos Agile foram três vezes mais bem-sucedidos e houve três vezes menos projetos Agile com falha em comparação com os projetos tradicionais.
Então, eu tenho uma discussão com um dos meus colegas que diz que, para alguns projetos (como medicina / militar, onde os requisitos não mudam), o Agile (e, principalmente, o Scrum) está sobrecarregado com todas as reuniões etc. e é mais lógico para usar cascata, por exemplo.
Meu ponto de vista é que o Scrum deve ser adotado em tais projetos, pois isso tornará o processo mais transparente e aumentará a produtividade de uma equipe. Também acho que os eventos do Scrum não levarão muito tempo se não forem necessários, porque não precisamos ficar oito horas inteiras no Sprint Planning por um mês de sprint. Podemos poupar 5 minutos apenas para ter certeza de que estamos todos na mesma página e começamos a trabalhar.
Então, o Scrum criará custos adicionais para um projeto em que os requisitos não mudam?
fonte
Respostas:
Acredito que é uma suposição incorreta dizer que existem projetos em que os requisitos não mudam. Tendo trabalhado tanto na indústria de defesa quanto na indústria farmacêutica, posso dizer que, uma vez que o software acaba nas mãos de especialistas no assunto (interno ou externo), há feedback. Às vezes, esse feedback é sobre como o requisito foi atendido e, em outros casos, é sobre os próprios requisitos estarem errados ou incompletos.
Agilidade é reduzir esse ciclo de feedback e colocar o software em funcionamento nas mãos de alguém mais rapidamente, obter esse feedback e decidir qual será o próximo passo para garantir que o que é entregue agrega valor quando o cliente decide aceitar o software. Mesmo em regiões como sistemas embarcados com hardware personalizado (como você pode encontrar em domínios como dispositivos aeroespaciais, automotivos ou médicos), fornecer pequenas fatias de funcionalidade rapidamente para integrar e criar protótipo pode ajudar a garantir que o sistema de software e hardware funcione funcione conforme planejado e de maneira a ajudar o usuário final.
A redução na duração do ciclo de feedback é um fator enorme na redução de risco. Da perspectiva do gerenciamento de projetos, se você financia um projeto por 2 a 4 semanas e obtém visibilidade regular do progresso, isso garante que você esteja no caminho certo. Ao poder oferecer fatias finas de funcionalidade, você trabalha incrementalmente para o estado de destino e pode começar a prever quando chegará lá. Se o tempo se tornar uma restrição, você poderá descartar as funções de valor mais baixo, pois o trabalho realizado primeiro deve ser uma função de alto valor ou um facilitador para uma função de alto valor. A qualquer momento, você pode decidir se vale a pena continuar financiando o esforço ou seguir uma direção diferente e interromper um projeto antes que seja tarde demais.
fonte
A resposta muito curta é que sim, o Scrum tem por design uma abordagem mais cara, mas se você o chama de projeto, quase certamente não importa e, no final, quase sempre resultará em um ROI melhor.
A resposta mais completa é esta:
De um modo geral, existem três formas de controle de processo: Controle de Processo Definido, Controle Estatístico de Processo e Controle de Processo Empírico. O Controle de Processo Definido é de longe o mais barato. Isso é possível com o trabalho repetitivo frequente que foi aprimorado ao longo do tempo para encontrar a "melhor" maneira de fazer o trabalho. O IC / CD no desenvolvimento de software se enquadra nessa categoria. Você não deseja variação no seu processo de construção, para padronizá-lo, ajustá-lo até ficar satisfeito com ele e automatizá-lo. Esse processo automatizado é obviamente muito mais barato de executar do que lutar manualmente por uma implantação.
O Controle Estatístico de Processo é o próximo menos caro, mas é responsável por variações em um processo conhecido. Os procedimentos médicos que seguem o plano se enquadram nessa categoria. Eu não quero reinventar uma cirurgia de derivação de cada vez. Sigo o processo básico e ajusto a variação. Isso tem uma carga cognitiva relativamente baixa e uma taxa de sucesso bastante alta.
Em seguida, é o Controle Empírico do Processo, que é de longe o mais caro, porque você precisa descobrir o processo à medida que avança. O aprendizado é incrivelmente alto, mas ao preço de produtividade e eficiência. No entanto, quase todo o trabalho do projeto exige isso, porque poucos projetos foram realizados antes. Existem, é lógico, exceções. A configuração de um ambiente grande do diretório ativo é mais Estatística porque você trabalha com algumas instruções testadas e verdadeiras das quais se desvia um pouco, conforme as circunstâncias o exigirem. Mas, a menos que o seu projeto seja o trabalho exato que foi feito antes, é quase certo que ele exige controle de processos empíricos.
Para trazê-lo de volta ao Scrum, o Scrum foi projetado para resolver problemas com o controle de processos empíricos. Portanto, sim, ele tem mais sobrecarga do que outras abordagens. No entanto, como a maioria dos projetos exige essa abordagem, é um argumento discutível.
Para o contraponto sobre medicina e projetos militares, parece uma lógica defeituosa. Se você está cumprindo um pedido de 500 aviões, sim, está recriando algo exatamente e o Scrum provavelmente não é benéfico. Se você está construindo um novo avião e seus requisitos nunca mudam, eu não pilotaria esse avião.
fonte
Claro, se você tem um projeto no qual possui requisitos claros, pode despejá-los em cascata na frente dos desenvolvedores e voltar dois anos depois para conhecer o software dos seus sonhos.
Mas a grande maioria dos projetos de software não é assim.
Geralmente, o cliente não sabe do que precisa. Eles são incapazes de fornecer requisitos completos e específicos. As abordagens iterativas ajudam aqui: crie uma coisa pequena e peça feedback ao cliente. Sim, isso "desperdiça" tempo em demonstrações e planejando a próxima iteração. Mas construir a coisa errada para um sprint e depois corrigir rapidamente os requisitos é muito melhor do que construir a coisa errada para a totalidade do projeto. Ou seja, enquanto os requisitos iniciais podem permitir um desenvolvimento mais eficiente , as abordagens iterativas serão mais eficazes .
Os desenvolvedores devem entender os requisitos corretamente se quiserem criar software útil. Qual é uma boa maneira de descobrir mal-entendidos antes que seja tarde demais? Novamente, abordagens iterativas podem ajudar. Mas também é importante que os próprios desenvolvedores colaborem com o cliente em vez de apenas obter informações filtradas através do autor do documento de requisitos.
Finalmente, o mundo não fica parado durante o projeto. Sistemas externos mudam, prioridades mudam, pessoas mudam. Fingir que os requisitos de um projeto de software não mudam é uma má idéia, exceto para projetos curtos.
Todos esses benefícios em nível de processo perdem a grande vantagem cotidiana das abordagens ágeis: se feitas corretamente, o ágil deixa todo mundo mais feliz. O maior deles é que as técnicas ágeis se concentram em fornecer valor real em curtos períodos de tempo. Isso traz visibilidade ao processo de desenvolvimento, dá às partes interessadas um nível razoável de controle sobre o projeto e é muito mais motivador do que trabalhar em direção a uma meta distante. Relacionada a isso, está a idéia de que as equipes ágeis serão em grande parte auto-organizadas. Sentir o controle do trabalho diário faz as pessoas se sentirem valorizadas e, portanto, mais propensas a dar o melhor de si.
Seu colega não está errado ao saber que os projetos no estilo cascata podem ter seu lugar. E você não está errado ao saber que algumas práticas ágeis podem ser rituais que desperdiçam tempo. Mas é completamente tolo ignorar os benefícios de abordagens ágeis e iterativas, especialmente melhor gerenciamento de riscos e respeito pelos indivíduos. São coisas que você deseja em todo projeto. Se necessário, uma equipe pode tentar implementar parte disso internamente, mas os processos funcionam melhor quando todos estão a bordo.
fonte
Eu acho que isso pode estar parafraseando o que o @Cort Ammon está dizendo, mas aqui está a minha opinião:
Os requisitos externos (descrevendo as "entregas") não são os únicos requisitos em um projeto. Mesmo que os requisitos externos não sejam alterados, os requisitos "internos" serão alterados ou precisarão ser alterados enquanto você trabalha. Os desenvolvedores descobrirão obstáculos ou problemas com uma abordagem, e isso afetará o trabalho das outras pessoas da equipe. Um stand-up diário manterá todos atualizados com essas mudanças internas.
fonte
Considere isso:
Mesmo com requisitos funcionais fixos, você precisa transformá-los em requisitos técnicos. E isso pode ser melhor feito por iterações. Você pode descobrir maneiras melhores de resolver o problema no meio do projeto.
Alguns requisitos podem ser muito genéricos ou ambíguos: "seja fácil de usar", "seja seguro". É difícil analisar a segurança ou usabilidade de um sistema que não está concluído. Alguns podem ter implicações ocultas ou podem não ser bem compreendidos.
Alguns requisitos podem ser aprimorados. Responder em 200 ms pode ser bom, mas 100 pode ser melhor. Você pode atingir o melhor resultado possível, mas sacrifique-o se necessário durante o projeto.
Você pode descobrir algum requisito oculto que não será escrito no contrato, mas poderá alterar o projeto de falha para êxito. Mesmo se você entregar o projeto, o cliente pode não estar feliz. Talvez eles precisem alterar o contrato para adicionar (e cobrar) por novos recursos que você pode criar no projeto mais barato nos estágios iniciais.
Você pode descobrir que não pode cumprir seus requisitos no tempo determinado. Não é como se os projetos de software nunca chegassem atrasados. Portanto, entregar o melhor valor permitirá renegociar quais recursos serão descartados.
Entregar algo mais cedo ajudará na integração e mostrará que este projeto pode gerar resultados.
fonte
Pode-se argumentar que, se todos os requisitos forem definidos com perfeição, existe uma abordagem de cima para baixo que atinge esses requisitos o mais rápido possível. No entanto, se esses são bons requisitos, eles dizem o que fazer, não como fazê-lo. Se eles lhe disserem como fazê-lo, eu escolheria chamá-lo de "instruções de trabalho" em vez de "requisitos" e estaríamos discutindo um tipo diferente de problema.
Por conseguinte, sempre existe um processo de desenvolvimento do "como" interno à empresa ou equipe que implementa os requisitos. Empiricamente falando, contamos fortemente com uma abordagem hierárquica na qual uma equipe de projetistas projeta o sistema de alto nível para atender a esses requisitos e, em seguida, usa as especificidades desse sistema de alto nível para fornecer "requisitos" a equipes menores que detalham os detalhes.
No processo em cascata, isso pode ser visto na seta unidirecional entre design e implementação. No entanto, esses requisitos não são definidos como os fornecidos pelo cliente. Eles são definidos internamente e têm espaço para o processo iterativo. Na prática, descobrimos que os designers colocam uma margem considerável no processo para explicar essa falta de iteração ou procuram um processo iterativo.
O SCRUM e muitos outros métodos ágeis relacionados, simplesmente fornecem uma estrutura rigorosa dentro da qual esse processo iterativo é executado. Uma marca registrada das abordagens ágeis é que elas consideram a otimização desse padrão iterativo o núcleo do processo, em vez de se concentrar na camada externa de requisitos rígidos. Como outros já mencionaram, os requisitos fixos reais são raros, mas mesmo na presença deles, o SCRUM usa a abordagem iterativa como uma metodologia para controlar a abordagem contratual na qual ela se encaixa.
Se conseguir fazer isso é uma questão de debate aberto. Outros forneceram muitas métricas para esse fim. Observarei apenas que cabe à força da liderança garantir que as iterações que ocorrem abaixo delas se encaixem corretamente no sistema contratual acima. Isso é verdade em qualquer abordagem de desenvolvimento, mas é mais visível em abordagens ágeis, porque fomos criados para assumir que a abordagem mais descendente é "normal" e líderes treinados como tais.
fonte