YAGNI (You Aren’t Gonna Need It) é um princípio da metodologia ágil XP (Extreme Programming) que indica que no processo de desenvolvimento não deve ser adicionado funcionalidades, até que esta seja considerada necessário. Isto é, não implementar coisas que você acredita que irá precisar, mas sim, implementar coisas que você realmente vai precisar.
O princípio do YAGNI foi criado para ser usado em combinação com várias outras técnicas, tais como a refatoração contínua, automação de testes unitários e integração contínua.
Porque o YAGNI é importante?
Embora o conceito do YAGNI pareça um tanto quanto obvio, na prática não é bem assim que isto funciona. Até por uma questão de proatividade por parte dos desenvolvedores, algumas funções acabam por ser adicionados, seja para prevenir problemas futuros, complementar uma função a qual o desenvolvedor acredita ser mais prática para utilizador, entre outros casos.
Entretanto o resultado de tais ações, acaba por ocorrer em alguns casos queixas ou questionamentos por parte dos utilizadores, o que gera um retrabalho pela questão de ser necessário atender estes utilizadores, assim como a necessidade de se retirar ou desabilitar tais funcionalidades posteriormente.
Um outro agravante em criar funcionalidades que não estavam previstas e ou que não são necessários para o projeto naquele presente momento, são os atrasos ocasionados pelo desenvolvimento destes, já que muitas vezes o custo do atraso de um projeto pode ser muito mais prejudicial do que uma manutenção evolutiva posterior.
Para um melhor entendimento sobre o tema, recomenda-se a leitura de um artigo e Martin Fowler, a qual pode ser visto.