A aplicação excessivamente zelosa do YAGNI (que é denominado Design por Enumeração em Armadilhas do Desenvolvimento Orientado a Objetos ) em um ambiente em que qualquer pessoa sensata poderia dizer que os requisitos definitivamente mudariam. E mude repetidamente.
Se você codificou tudo ( exatamente ) exatamente para os requisitos atuais - enquanto reprimia alguém que dissesse "isso não poderia ser mais genérico?" com seu martelo YAGNI - e os requisitos mudam drasticamente (mas de uma maneira que poderia ter sido razoavelmente antecipada), essa pode ser a diferença entre levar duas semanas para se adaptar e levar 20 minutos.
ATUALIZAÇÃO: Para esclarecer, aqui está um exemplo fictício que não está muito longe do que aconteceu. O Stack Overflow foi projetado para oferecer suporte a emblemas, mas suponha que eles só pensassem em quatro emblemas no início. Apenas quatro, um número tão pequeno, então eles codificaram o suporte para exatamente quatro emblemas em toda a lógica do site. No banco de dados, nas informações do usuário, em todo o código de exibição. Porque "Você não vai precisar" de nenhum crachá que você não consegue pensar, certo? Suponha que o site seja publicado e as pessoas comecem a sugerir novos crachás. Cada cracháleva até duas semanas para adicionar, porque há muito código para ajustar em todo o lugar. Ainda assim, "Você não precisará" de mais crachás do que a lista de hoje, portanto, nunca há refatoração para oferecer suporte a uma coleção genérica de crachás. Uma coleção tão genérica levaria mais tempo com antecedência? Não muito, se houver.
O YAGNI é um princípio valioso, mas não deve ser (ab) usado para desculpar design inadequado e codificação incorreta. Existe um equilíbrio e, com a experiência, acredito que estou me aproximando.