YAGNIは”You aren’t gonna need it”の略でコーディングの方針になる原則です。コーディングの原則にはDRY(Don’t repeat yourself)、KISS(Keep it simple, stupid)、の様に言い聞かせるような言い方がたびたび現れます。YAGNIの、それは必要にならないだろう、という言葉は転じて、必要になるまで書かないという意味です。YAGNIの原則の目的は、余分なものを作る資源(時間、PCの容量など)は無駄だから必要なものがわかるまでその周りを作らない、そうすることで消費されるはずだった資源を節約する、という点にあります。
YAGNIの原則を用いた場合のデメリットは完成像が歪なものになりがちということです。これは完成像をあまり予想しないまま突き進むコーディングになるからです。このデメリットは多くのタイミングでコードの修正が容易な場合、歪さが許容できる場合、総じて規模の小さなプログラムを作る際に最小限になります。またYAGNIの原則は必要なものが何度も突然現れる際に、必要になってから作るという方針がキレイに当てはまります。YAGNIの原則が特に上手く働く場合は規模が小さく、要望が流動的なものを作る場合です。一方で、規模が大きなものを作る際にYAGNIの原則用いた場合、デメリットは膨れ上がり見事なスパゲティコードの山ができあがるでしょう。