미래는 예측하기 어렵다. 필요할 때 만들어도 늦지 않은 기능부터 미리 만들지 않는다.
YAGNI는 You Aren’t Gonna Need It의 줄임말이다. ‘그게 필요하지 않을 것이다’라는 뜻이다. 익스트림 프로그래밍에서 유래한 원칙이다. 미래에 필요할지도 모른다는 이유로 지금 당장 필요하지 않은 기능을 미리 만들지 말라는 것이 핵심이다. 불필요한 기능은 코드를 복잡하게 만들고, 유지 보수 비용을 증가시키며, 실제로 필요할 때 요구사항이 달라져 결국 다시 만들게 되는 경우가 많다. 미리 만드는 비용뿐 아니라, 그 기능을 만드는 동안 지금 필요한 일을 미루는 비용도 따져야 한다. 설계를 고치기 쉽게 다듬는 리팩토링까지 미루라는 뜻은 아니다. (마틴 파울러의 설명)