web-dev-qa-db-ja.com

ジェイミー・ザウィンスキーの法則とはどういう意味ですか?

ジェイミー・ザウィンスキーのソフトウェア包絡の法則 の適切な説明が必要です:

すべてのプログラムは、メールを読み取ることができるようになるまで拡張を試みます。それほど拡張できないプログラムは、拡張できるプログラムに置き換えられます。

24
Mohsen

これまでのすべての回答(およびコメント)は、ステートメントの前半に完全に焦点を当てており、重要な後半が後半である場合、「膨張」に関するコメントになっているようです。それほど拡張できないプログラム)可能なものに置き換えられます。

これはソフトウェアの膨張についてではなく、市場の現実についてです。人々は言うシンプルな製品を望んでいるかもしれませんが、実際の使用状況を見ると、ユーザーがより多くのことを実行できるようになっています。そして、それらは結局、能力の低いツールに取って代わります。

問題の一部は、「シンプル」は混乱するWordであるということです。 「クリーブ」と同様に、ほぼ完全に反対の2つのことを意味します。人々が望んでいるのは、複雑なタスクを簡略化するものです。それは「良いシンプル」であり、正しく行うにはかなりの複雑さが必要です。一部の人々がそれをそれと解釈するのは、人々が何か単純な、またはミニマリストを望んでいるということです。このコンセプトにはニッチな魅力があるかもしれませんが、製品を設計するときに焦点を合わせるのは、全体として間違った「単純な」方法です。あなたの仕事がどれほど優れていても、新機能のリクエストは引き続き寄せられます。

例を挙げれば、私が職場で取り組んでいるプログラムがあります。おそらく聞いたことはないでしょうが、私たちはメディア制御という専門業界のマーケットリーダーです。私たちのプログラムは、おそらくあなたのお気に入りのテレビやラジオ局を実行しています。顧客はそれを気に入っており、soは他のどの製品よりもはるかに優れていると言っています。

また、巨大です。 EXEのサイズは65 MBを超え、約400万行のコードがあり、10年以上の作業の過程で構築された150以上のテーブルを備えたデータベースに支えられています。それでも、新しいステーションやネットワークにインストールしようとするたびに、ワークフローに絶対に不可欠なものが1つまたは2つあり、サポートはありません。そのため、お客様はすでに慣れているシステムからの切り替えを望まないため、新しい機能を追加することになります。繰り返しますが、お客様はそれを気に入っています。

40
Mason Wheeler

これはずっと前に起こったことを理解する必要があります。その当時、コンピュータが特定のユーザーに対して一度に複数のプログラムを実行できるようになることはまだ主流ではありませんでした。パーソナルコンピュータ用のDOS(およびおそらくWindows 3が上位)と、Unixユーザー用の文字ベースのターミナル(ごく一部のみX11を搭載).

これは、メールを受け取ったかどうかを確認するためにexit現在行っていること、メールプログラムを起動してメールを読む、-exitメールプログラムと古いプログラムを再起動します。もしあなたの現在のプログラムがあなたの電子メールを読ませることができれば、あなたはそれをすべて回避できることがわかると思います。

したがって、現在のプログラムが電子メールを読み取ることができなかった場合は、そのようにする(MIT学生だった)ことを思い出してください)か、それを可能にする別のプログラムに切り替える傾向があります。

最近では想像するのが難しいですが、singleブラウザーウィンドウ-タブなし、余分なウィンドウなし-ブックマークを使用しないように制限することで、それがどのようであったかを知ることができます。

12
user1249

他の誰もがすでに述べたように、「法則」は software bloat および score creep に関するユーモラスな観察であり、これは Greenspunの10番目のルール に非常に似ています。

十分に複雑なCまたはFortranプログラムには、Common LISPの半分のアドホックで非公式に指定された、バグが多く、遅い実装が含まれています。

法律は、ZawinskiのNetscapeブラウザ、および後でNetscape Mail&Newsでの作業を反映しています。説明は here です。

次に、Terry Weissmanと私は、Netscape MailおよびNewsクライアントのバージョン2.0〜3.0を設計して実装しました。これは、ソフトウェア包絡法の証明への貢献です。

「すべてのプログラムは、メールを読み取ることができるまで拡張を試みます。拡張できないプログラムは、拡張可能なプログラムに置き換えられます。」

当時最も人気のあるブラウザーであるNetscapeブラウザーは、多くの機能がそれ自体のために多すぎると批判されることがよくあります。恐らく誤解しない限り、2つのレンダリングエンジン、GeckoとTridentをサポートする最後の(人気のある)ブラウザーでした。たとえば、 Ben Goodger は、Firefoxの作成につながる(多くの)理由の1つとしてNetscapeの膨張を識別します1

MozillaのUI機能不全

Netscape製品のユーザーインターフェイスの設計のほとんどは、Netscapeの要件に取り組んでいるNetscapeのスタッフによって行われたため、Mozillaユーザーインターフェイスは影響を受けました。 Mozillaスイートは、Netscapeがニーズに合わせて製品を構築できるクリーンなコアではなく、完全に適切であるとは感じていませんでした。 Netscapeのプライベートソースリポジトリ(「商用ツリー」)でオーバーレイによって埋められるためだけに存在していた、厄介なUI構造が豊富でした。

この機能不全をさらに悪化させているのは、プロジェクトがCPD内のさまざまな、時には接続が不十分な部門の100人を超えるエンジニアによって開発されていたときです。 Netscapeは過去数年間で急速に成長し、他の人からのより多くの支援が必要であることを示唆する能力を持つ不規則な採用バーエンジニアにより、機能の設計と実装の自律性が高すぎました。ユーザーエクスペリエンスの支援はまばらで、その結果、アプリケーションはすぐに肥大化しました。

1アーカイブされたバージョン のBen Goodgerの、現在は使用されていないブログから。

9
yannis

これは本当の法則ではなく、ソフトウェアプロジェクト(適切に管理されていない場合)が非常に大きく複雑になる可能性があるという風刺的なコメントです。電子メールリーダー(プロジェクトの元の目的に関係なく何もない場合でも)。私がかつて持っていたマネージャは、「十分に複雑なシステムには、その中にハーフアッシュされたLISP実装が含まれている」という同様のフレーズが好きでした。

これは、一部のソフトウェアプロジェクトが機能を拡張および追加し続けているように見える方法に関するコメントです。

多くのプロジェクトは、必要かどうかにかかわらず、機能の追加に抵抗できないようです。

論理的な結論は、すべてのソフトウェアがメールを送信することになるということです。

Scope Creep も参照してください。

3
Oded