Vi várias postagens recentemente dizendo que uma das principais razões pelas quais o Agile é usado é porque os clientes geralmente alteram os requisitos.
No entanto, digamos que os clientes não alterem os requisitos com frequência . De fato, os clientes têm requisitos firmes, embora possam ser um pouco vagos (mas nada excessivamente vago), mas eu uso o Agile de qualquer maneira.
A razão pela qual emprego o Agile é porque o software é complexo o suficiente para haver detalhes, problemas que eu não reconheceria até os enfrentar. Eu poderia fazer uma abordagem de planejamento pesado em grande escala, como cascata, mas levaria alguns meses para finalizar todo o design de alto nível e assinaturas de codificação de baixo nível. Existe um projeto arquitetônico fixo muito específico para o sistema.
Minha pergunta é: isso seria considerado ruim, codificação de cowboy, anti-padrão etc.? Devemos empregar a cascata e planejar o máximo possível em grandes detalhes antes de começarmos a codificar quando os requisitos são estáveis, em vez dessa mentalidade de 'vamos fazer' no Agile?
EDIT: O ponto principal aqui é o seguinte: NÃO PODEMOS culpar os clientes por mudanças nos requisitos. Suponha que os clientes nos apontaram um problema muito concreto, nos dê uma lista de desejos com detalhes razoáveis e nos deixem em paz (ou seja, os clientes têm suas próprias coisas produtivas para fazer, não os incomode mais. Apenas faça uma demonstração para eles perto do terminar quando você tiver um protótipo de trabalho mínimo). Seria errado usar o Agile nesse cenário?