どのソフトウェアも最初はシンプルです。いくつかのファイル、明確な目的、小さな表面積。その後、機能が追加され、特殊なケースが処理され、やがて、理解するために図が必要なものが見えてきます。これは避けられないことではありませんが、防ぐには規律が必要です。
シンプルさの難しい部分は、最初のデザインではありません。それは複雑化に対する継続的な抵抗です。すべての機能リクエスト、すべてのバグ修正、すべてのリファクタリングは、複雑さを増す機会となります。 「ノー」と言うのは最も重要なデザインスキルですが、最も評価されていません。
機能として削除する
製品の最良のバージョンには、以前のバージョンよりも機能が少ないことがよくあります。機能が欠けていたからではなく、誰かが、利益を生んでいないものを削除する勇気を持っていたからです。すべての機能には、メンテナンス、認知負荷、インターフェイスの重量などのコストがかかります。
シンプルであることは目標ではなく実践です。シンプルには決して到達しません。あなたはただ「これは必要ですか?」と尋ね続けるだけです。これはもっと分かりやすいでしょうか?何かを追加するのではなく、何かを削除することでこの問題を解決する方法はありますか?答えは「はい」です。