Trabalho como programador em um projeto desenvolvido para software genérico para postos de gasolina (a ser redistribuído para muitos clientes) há 18 meses. O projeto é grande. Hoje temos cerca de 150 mesas. Não usamos uma abordagem específica, ela não foi bem gerenciada.
Hoje, a tabela de pessoas tem cerca de 70 colunas, mas há 15 meses tinha cerca de 30 colunas. Esses novos campos surgiram para integrar outros módulos, como vendas, financeiro e contabilidade. Também muitos campos foram criados e excluídos.
Como resultado, tivemos muitas refatorações e retrabalhos. O projeto nunca fica pronto porque sempre há novos requisitos emergentes.
Aqui está minha dúvida: se tivéssemos usado uma abordagem usual de especificação, teríamos entrevistas, um documento de requisitos, diagramas de atividade, sequência e classe, para sabermos desde o início que a tabela "pessoa" precisaria de 70 campos, então tinha evitado muita refatoração.
O scrum poderia ajudar nesse projeto? Tenho a sensação de que, nesse caso, o scrum também acabaria sendo refatorado.
Sou apenas um programador, não um gerente de projetos. Estou me perguntando como deveria ter sido feito: com scrum ou com um design grande na frente.
Editar
Apenas para complementar o final desta história. Oito meses depois, fiz essa pergunta, depois de colocar o projeto em produção em alguns "clientes de teste", o projeto falhou oficialmente. O proprietário do produto decidiu abandonar o projeto. Ficou difícil corrigir problemas e muitos problemas de desempenho ocorreram.