O palavrão acima significa: You ain’t gonna need it. Em bom português: Você não vai precisar disto.
A idéia é que você só implemente o código estritamente necessário para o que o requisito de negócios seja satisfeito. Nem uma linha de código a mais.
Como já falei em outras ocasiões, soa bonito, mas não me convence. Você quer simplicidade? Fique com o KISS. Você não quer desperdício? Fique com o Eliminate waste do Lean. Para que você precisa de mais um conceito te dizendo para não complicar as coisas?
Mas porque eu implico tanto com o YAGNI?
Vamos pegar outro conceito, o DRY, e fazer um teste do absurdo nele: Se você conseguisse uma forma de escrever uma linha código somente uma vez e SEMPRE reaproveitá-la, seria bom? E se você conseguisse fazer isto com cada trecho da linha? Seria ótimo, minimizaria o código-fonte, facilitaria manutenção, etc.
Agora vamos fazer o mesmo teste com o YAGNI: O seu cliente pediu explicitamente para você que o software seja independente do banco de dados? Não, então você não precisa desta camada de acesso a dados. Você precisa reaproveitar esta regra de negócio agora? Não, então você não precisa encapsulá-la. E assim vai até você chegar ao bom e velho código espaguete, ou sopão ASP.
Mas é lógico que você não vai fazer isto, porque você vai usar o bom senso. O problema é que se começo a precisar de muito bom senso para aplicar um conceito então começo a achar que este conceito não está me ajudando muito, pode estar até atrapalhando, entendeu?