Eu sinto sua dor....
A má notícia é: dependendo exatamente de que tipo de clientes você está lidando, isso pode ser normal.
Um problema geral comum é basicamente que os clientes não sabem o que querem . Eles geralmente sabem o que desejam ser alcançados, em termos de uma meta de negócios, mas geralmente não têm idéia de como deve ser a aparência da solução de software. Portanto, em muitos casos, você se encontrará nesse ciclo iterativo, em que um projeto alterna cinco vezes mais do que a estimativa inicial, porque o cliente continua mudando de idéia e deseja que a solução seja alterada e alterada novamente. E sim, não é incomum o resultado final se transformar em algo completamente diferente do que o objetivo inicial parecia.
Eu tive um exemplo épico disso acontecer alguns anos atrás - um projeto que inicialmente levou 10 semanas para codificar se transformou em uma rotina de re-iteração de 15 meses. Nesse caso, era principalmente porque diferentes gerentes e departamentos da empresa cliente queriam coisas diferentes, então eles continuavam enviando o trabalho de volta, para serem aprimorados e aprimorados (nosso software é baseado em assinatura e esse era um cliente importante, não havia uma pele financeira nas nossas costas - apenas um grande aborrecimento técnico).
Então, basicamente, meu conselho é este:
Se é assim que o seu setor em particular e esses clientes são (esse é um grande FI), basta se acostumar. Pense nisso como um trabalho ágil, orientado à manutenção (é assim que meu show atual é, mais ou menos). :)
Se não é assim que as coisas devem ser feitas, e você está sendo responsabilizado pelas longas reviravoltas, fale com seus chefes. Explique a eles que existem problemas de comunicação e que as especificações que chegam dos clientes não são claras o suficiente para você implementar a solução desejada. Você não quer se encontrar na situação em que está culpando por não dar aos clientes o que eles querem, se você não estiver obtendo todas as informações necessárias para dar o que eles querem.