Что означает закон Джейми Завински?

24

Мне нужно правильное объяснение закона разработки программного обеспечения Джейми Завински :

Каждая программа пытается развернуться, пока не сможет прочитать почту. Те программы, которые не могут расширяться, заменяются теми, которые могут.

Мохсен
источник
2
@YannisRizos: Смотрите также: en.wikipedia.org/wiki/Feature_creep
FrustratedWithFormsDesigner

Ответы:

39

Все ответы (и комментарии) до сих пор, кажется, полностью сосредоточены на первой половине утверждения, превращая его в комментарий о «раздутии», когда важной половиной является вторая половина: те программы, которые не могут быть расширены, заменяются программами. которые могут.

Речь идет не о раздувании программного обеспечения, а о реалиях рынка. Люди могут сказать, что им нужен простой продукт, но когда вы смотрите на фактическое использование, то, что используется, это то, что позволяет пользователям делать больше, и в итоге они заменяют менее эффективные инструменты.

Отчасти проблема в том, что «простое» - это запутанное слово. Подобно «расщеплению», это может означать две почти совершенно противоположные вещи. Люди хотят чего-то, что упрощает сложные задачи. Это «хорошо, просто», и для того, чтобы поступать правильно, требуется много сложности. Однако некоторые люди интерпретируют это как то, что люди хотят чего-то упрощенного или минималистского. Эта концепция может иметь определенную нишевую привлекательность, но в целом это неправильный вид «простого», на котором нужно сосредоточиться при разработке продукта. Независимо от того, насколько хороша ваша работа, запросы новых функций продолжают поступать.

Например, есть программа, над которой я работаю на работе. Вы, вероятно, никогда не слышали об этом, но мы являемся лидером рынка в специализированной отрасли: контроль над СМИ. Наша программа, скорее всего, запускает ваши любимые теле- и / или радиостанции. Клиентам это нравится, они говорят, что это намного лучше, чем все, с чем они работали.

Это также огромно . Размер EXE-файла превышает 65 МБ, около 4 миллионов строк кода, поддерживаемых базой данных с более чем 150 таблицами, созданной в течение более чем десятилетней работы. И все же кажется, что каждый раз, когда мы пытаемся установить его на какой-то новой станции или в сети, есть одна или две вещи, которые абсолютно необходимы для их рабочего процесса, которые мы не поддерживаем. Таким образом, мы заканчиваем добавлением новых функций, потому что в противном случае клиенты не захотят переключаться с системы, к которой они уже привыкли. И позвольте мне повторить, клиенты любят это.

Мейсон Уилер
источник
20
И в конечном итоге раздутое программное обеспечение заменяется новым конкурентом, который является «худым и подлым» и который будет добавлять необходимые функции по одному, пока не будет иметь все функции, которые были у его предшественника ...
jhonkola
Хм, я думал, что эта часть была охвачена заявлением Завински: «Затем я разработал, и мы с Терри Вайсманом реализовали клиенты Netscape Mail и News, версии 2.0–3.0. Это был наш вклад в доказательство Закона об освоении программного обеспечения. ", но теперь, когда я перечитал это, это не так ясно.
Яннис
1
@jhonkola, если код делает то, что нужно клиентам, и не намного больше, чем тот, который не раздут.
1
@ ThorbjørnRavnAndersen Я согласен, моя точка зрения заключалась в том, что, когда программное обеспечение набирает популярность (и, следовательно, также пользователей / клиентов), количество функций, требуемых пользователями и в конечном итоге реализованных, будет расти.
Джонкола
1
Если ваша интерпретация верна, комментарий Завински был хвастливым, а не самоуничижительным. Я считаю, что трудно поверить.
CTN
12

Вы должны понимать, что это произошло очень давно, и в то время компьютеры еще не могли запускать более одной программы одновременно для данного пользователя. DOS для персональных компьютеров (и, возможно, Windows 3 наверху) и символьные терминалы для пользователей Unix (лишь немногие имели X11).

Это означает, что для того, чтобы проверить, получили ли вы электронное письмо, вам нужно было выйти из того, что вы в данный момент делаете, запустить почтовую программу, прочитать почту, выйти из почтовой программы и перезапустить старую программу. Я полагаю, вы видите, что если ваша текущая программа позволяет вам читать электронную почту, вы можете избежать всего этого.

Следовательно, если ваша текущая программа не может прочитать вашу электронную почту, вы склонны либо сделать это (помните, что это были студенты MIT), либо переключиться на другую, которая может.

В наши дни это трудно представить, но вы можете понять, как это было, ограничившись одним окном браузера - без вкладок, без дополнительных окон - и, возможно, даже без использования закладок.


источник
9

Как все остальные уже упоминали, «закон» - это юмористическое наблюдение за раздутием программного обеспечения и крипом , и оно очень похоже на десятое правило Гринспуна :

Любая достаточно сложная программа на C или Fortran содержит специальную, неформально определенную, медленную реализацию половины Common Lisp.

Закон отражает работу Завински с браузером Netscape, а затем с Netscape Mail & News, как он сам здесь описал :

Затем я разработал, а мы с Терри Вейсманом - клиенты Netscape Mail и News версий 2.0–3.0. Это был наш вклад в доказательство Закона разработки программного обеспечения :

«Каждая программа пытается развернуться, пока не сможет читать почту. Те программы, которые не могут развернуться, заменяются теми, которые могут».

Браузер Netscape, в то время самый популярный браузер, часто подвергался критике за то, что у него слишком много функций для его собственной пользы. Если не ошибаюсь, это был последний (популярный) браузер, который поддерживал два движка рендеринга, Gecko и Trident. Например, Бен Гудджер идентифицирует раздувание Netscape как одну из (многих) причин, которые привели к созданию Firefox 1 :

Дисфункция пользовательского интерфейса Mozilla

Поскольку большая часть дизайна пользовательского интерфейса для продуктов Netscape была выполнена сотрудниками Netscape, работающими в соответствии с требованиями Netcenter, пользовательский интерфейс Mozilla пострадал. Вместо того, чтобы быть чистым ядром, на котором Netscape мог бы создать продукт, отвечающий его потребностям, пакет Mozilla никогда не чувствовал себя совершенно правильным; он был переполнен неуклюжими конструкциями пользовательского интерфейса, которые существовали только для того, чтобы быть заполненными наложениями в хранилище личных источников Netscape - «коммерческое дерево».

Усугубляя эту дисфункцию, в то время, когда проект разрабатывался более чем сотней инженеров в разных, иногда слабо связанных отделах в рамках CPD. Netscape быстро развивался в предыдущие годы, а инженеры, нанимающие на работу неравномерно, обладающие способностями, которые могли бы предполагать, что им нужна дополнительная помощь от других, имели слишком большую автономию в разработке и реализации функций. Помощь в работе с пользователями была редкой, и в результате приложение быстро раздулось.

1 Из архивной версии ныне несуществующего блога Бена Гуджера.

Яннис
источник
5
Ааа ... Это объясняет Emacs :-)
jwernerny
9
@jwernerny Ничто не объясняет Emacs ...
Яннис
4
@MichaelKohne - По той же причине я думал, что Emacs был ранней неграфической реализацией Матрицы.
Мартин Беккет
2
Также я пришел к выводу, что десятое правило Гринспуна - это наблюдение, которое вы, по сути, обнаруживаете в достаточно сложных программах, которые вы должны иметь возможность предоставлять код во время выполнения.
2
@jwernerny Я полагаю, что есть целая страница, которая говорит об этом: jwz.org/doc/lemacs.html
Майкл
4

Это не настоящий закон, это сатирический комментарий о том, как программные проекты (если они не управляются должным образом) могут стать такими большими и сложными, что они каким-то образом включают в себя программу чтения электронной почты (даже если это не имеет ничего общего с первоначальной целью проекта) , Менеджеру, который у меня когда-то был, нравилась похожая фраза: «Любая достаточно сложная система содержит в себе реализацию LISP с половиной оценки».

FrustratedWithFormsDesigner
источник
2
ака "Десятое правило Гринспена".
Джерри Коффин
1
@JerryCoffin: Спасибо, я не знал, как это называется! en.wikipedia.org/wiki/Greenspun%27s_tenth_rule
FrustratedWithFormsDesigner
3

Это комментарий о том, что некоторые программные проекты, похоже, продолжают расширяться и добавлять все больше и больше функций.

Многие проекты не могут противостоять добавлению функций, независимо от того, нужны они или нет.

Логический вывод заключается в том, что каждая часть программного обеспечения будет в конечном итоге отправлять почту.

Также см. Scope Creep .

Одед
источник
Почтовые сообщения - это / / способ отправлять уведомления людям из программного обеспечения в некоторых местах.
Пол Натан
Отправка почты более разумна, чем ее чтение. Мой маршрутизатор может отправлять мне свои журналы время от времени, но у него нет причин принимать почту. Аналогичным образом, многие программы для Android отправляют изображения по электронной почте и т. Д. Для обмена ими.
Жанна Пиндар
-1

Я вижу как минимум три способа его просмотра.

Один из них - игнорировать чтение почты как таковое и рассматривать его как утверждение о том, что людям, похоже, нравятся продукты с гибкостью, позволяющей обращаться практически к любой задаче, независимо от того, насколько мало это может иметь отношение к первоначальным намерениям инструмента. Если мы посмотрим на это так, продукт, такой как Photoshop, который не поддерживает чтение почты, не является аномалией, потому что его архитектура подключаемых модулей достаточно гибкая, чтобы могла поддерживать чтение почты, хотя (насколько я знаю) нет такой плагин существует. Эту точку зрения можно сформулировать более четко, но менее оригинально, поскольку «гибкость превосходит специализацию».

Второй способ увидеть это заключается в том, что Джейми Завински имеет такой узкий фокус, что он просто игнорирует такие продукты, как Photoshop, PowerPoint, большинство игр и т. Д., Которые выпускались годами, не поддерживают чтение почты и не Кажется, он заменяется чем-то еще, что делает.

Третий будет своего рода контрапунктом для второго, говоря, что, по сути, интеграция между продуктами произошла до такой степени, что фактически чтение почты интегрировано во все, потому что у большинства людей теперь есть программа чтения почты, работающая в фоновом режиме, все время и можно переключиться на него достаточно быстро / легко, вырезать и вставлять что-либо еще и т. д., чтобы мелкие детали, которые читатель почты упаковывал как отдельное приложение, стали неактуальными.

Джерри Гроб
источник