YAGNIとは、物事が完了する前にではなく、完了する必要があるときに物事が完了することを意味します。それは、彼らが決して必要とされない限りではなく、彼らが決して終わらないことを意味しません。つまり、顧客に即時のビジネス価値をもたらすものだけを行うということです。即時のビジネス価値が意味するものは、すべての顧客とすべてのプロジェクトにとって主観的です。
どちらの場合でも、YAGNIで何も失うことはありません。
もう1つの場合、使用されないコードの作成、使用されないコードのテストの作成、使用されないコードのドキュメントの作成、使用されないコードのメンテナンスなど、このコードが何をしているのか疑問に思う人は時間を無駄にします、それが使用された場合は、吐き気。
例
プロトタイプ/概念実証またはアプリケーションの1.0バージョンで作業している場合、Facebookのレベルに合わせて拡張するデザインは必要ありません。地獄私は、Facebookのレベルに合わせて拡張するためのデザインは必要ありません。そのようなトラフィックがあることがわかるまでは。
ZuckerbergがFacebookの最初のバージョンを設計して、5億人のユーザーに拡張できると思いますか?いいえ、彼はそれを設計し、それを行うために必要なだけでそれ以上のことをしないように構築しました。彼が初日から5億人のユーザーのためにデザインをウォーターフォールしようとした場合、Facebookはおそらくリリースされなかったでしょう。
物事を行うための実用的な方法は、彼がそれをやった方法です。彼はPHPとMySQLから始め、ビジネス価値に基づいて必要に応じて再設計および書き直し、数百万人のユーザーに拡大することは大きなビジネス価値でしたが、0日目ではなく、何かを立ち上げるだけで大きなビジネス価値がありました。
彼は再設計と書き直しを計画していました。これは、キッチンシンクの計画とは異なる考え方であり、完全な有用なものを実際に開発または提供することはありません。
コードベースの寿命の終わりと書き換えを計画することはアジャイルであり、将来の証拠です。「柔軟な」という未定義の目標を考え出そうとすると、毎回失敗に終わります。使用する必要のない機能について希望的観測をするのではなく、ビジネス上の価値のあるものを開発するために、必要なく設計し、時間を浪費しています。