Galera,
Ao meu ver, realmente acho que temos que partir para soluções mais ágeis, mesmo porque o tempo é escasso na maioria dos projetos. Porém ainda sou contra eliminar toda a documentação, muitas vezes, em um projeto, e mesmo depois da entrega aparecem discussões sobre as funcionalidades que um produto deveria contemplar ou não… Ou mesmo quando se necessita realizar um retrabalho para correção, ou implementação de novas funcionalidades, ou até mesmo numa migração do sistema para uma outra plataforma. Nessas ocasiões, poder abrir uma documentação clara, organizada e atualizada é o melhor dos mundos. Ou seja, é aquela velha história, melhor gastar mais tempo no desenvolvimento e ser mais ágil na solução de problemas futuros durante uma correção de erros, problemas ou situações mais críticas com o cliente.
A seguinte situação sempre acaba ocorrendo, você se depara com uma solicitação do cliente, dizendo que uma funcionalidade deveria estar contemplada em um produto que já foi entregue, testado, e em produção, porém a funcionalidade não existe. O cara que desenvolveu o produto não está mais na empresa, o cara que trabalhou junto ao cliente pegando os requisitos está em outro projeto e não pode (nem quer) te ajudar, você só tem a documentação do projeto a recorrer, uma especificação qualquer daquele produto, por mais simples que seja (UML, texto, Wiki, papel de pão), se estiver completa e atualizada te salva a pele e te dá uma agilidade maior para atender ou negar o pedido do cliente.
Trabalhei em poucos projetos organizados com um processo de desenvolvimento, mais com certeza a qualidade é diferenciada. Porém a maioria dos projetos é no heroísmo… cada um faz o seu, o mais rápido possível, mesmo que esteja dando pau, pelo menos entregue algo, tudo mascarado com planilhas e gantts mostrando um “falso controle”… zero de documentação de especificação ou escopo, e quando der pau, reze para não cair na sua mão… Acho uma abordagem horrível mais é o que mais se faz por aí…