Co oznacza Prawo Jamiego Zawińskiego?


24

Potrzebuję odpowiedniego wyjaśnienia prawa Jamiego Zawińskiego do tworzenia oprogramowania :

Każdy program próbuje się rozwinąć, dopóki nie będzie mógł odczytać poczty. Programy, które nie mogą tak rozszerzyć, zostaną zastąpione tymi, które potrafią.



Odpowiedzi:


39

Wszystkie dotychczasowe odpowiedzi (i komentarze) wydają się skupiać całkowicie na pierwszej połowie wypowiedzi, co czyni ją komentarzem o „wzdęciach”, kiedy ważna połowa to druga połowa: te programy, które nie mogą się tak rozwinąć, są zastępowane przez te który może.

Tu nie chodzi o rozdęcie oprogramowania, chodzi o realia rynku. Ludzie mogą powiedzieć, że chcą prostego produktu, ale kiedy spojrzysz na faktyczne użycie, rzeczy, które się wykorzystują, to takie, które pozwalają użytkownikom robić więcej, a w końcu zastępują narzędzia mniej sprawne.

Częścią problemu jest to, że „proste” to mylące słowo. Podobnie jak „rozszczepienie” może oznaczać dwie prawie całkowicie przeciwne rzeczy. Ludzie chcą czegoś, co upraszcza złożone zadania. To „dobre proste” i wymaga dużej złożoności, aby zrobić dobrze. Jednak niektórzy interpretują to jako to, że ludzie chcą czegoś uproszczonego lub minimalistycznego. Ta koncepcja może mieć niszowy urok, ale ogólnie rzecz biorąc, niewłaściwe jest „proste” skupienie się przy projektowaniu produktu. Bez względu na to, jak dobra jest Twoja praca, nowe prośby o nowe funkcje wciąż się pojawiają.

Jako przykład podajemy program, nad którym pracuję w pracy. Prawdopodobnie nigdy o tym nie słyszałeś, ale jesteśmy liderem rynku w wyspecjalizowanej branży: kontrola mediów. Nasz program najprawdopodobniej prowadzi twoją ulubioną stację telewizyjną i / lub radiową. Klienci to uwielbiają, mówią, że jest o wiele lepszy niż cokolwiek innego, z czym współpracowali.

To też jest ogromne . Rozmiar pliku EXE wynosi ponad 65 MB, z około 4 milionami wierszy kodu, wspartymi bazą danych z ponad 150 tabelami, zbudowanymi w ciągu ponad dekady pracy. A jednak wydaje się, że za każdym razem, gdy próbujemy zainstalować go na nowej stacji lub w sieci, jest jedna lub dwie rzeczy, które są absolutnie niezbędne dla ich przepływu pracy, a my nie mamy wsparcia. W rezultacie dodajemy nowe funkcje, ponieważ w przeciwnym razie klienci nie chcieliby przełączyć się z systemu, do którego już byli przyzwyczajeni. Powtarzam, klienci to uwielbiają.


20
I ostatecznie nadęte oprogramowanie zostaje zastąpione przez nowego konkurenta, który jest „szczupły i wredny” i który doda po kolei wymagane funkcje, aż będzie miał wszystkie funkcje, które miał jego poprzednik ...
jhonkola

Hm, myślałem, że ta część została zawarta w oświadczeniu Zawińskiego: „Następnie zaprojektowałem, a Terry Weissman i ja wdrożyliśmy, klientów Netscape Mail i News, wersje od 2.0 do 3.0. To był nasz wkład w potwierdzenie prawa ochrony oprogramowania ", ale teraz, kiedy go ponownie przeczytałem, nie jest to takie jasne.
yannis

1
@jhonkola, jeśli kod robi to, czego potrzebują klienci i niewiele więcej, że nie jest rozdęty.

1
@ ThorbjørnRavnAndersen Zgadzam się, moim celem było bardziej, że gdy oprogramowanie zyska popularność (a więc także użytkowników / klientów), liczba funkcji wymaganych przez użytkowników, a ostatecznie wdrożonych, wzrośnie.
jhonkola

1
Jeśli twoja interpretacja jest prawidłowa, komentarz Zawińskiego był chełpliwy, a nie samoocenny. Trudno mi w to uwierzyć.
ctn

12

Musisz zrozumieć, że stało się to dawno temu, a wtedy nie było jeszcze głównego nurtu, aby komputery mogły uruchamiać więcej niż jeden program na raz dla danego użytkownika. DOS dla komputerów osobistych (i prawdopodobnie Windows 3 na górze) oraz terminale oparte na znakach dla użytkowników Uniksa (tylko nieliczni mieli X11).

Oznacza to, że aby sprawdzić, czy otrzymałeś wiadomość e-mail, musisz wyjść z tego, co aktualnie robisz, uruchomić program pocztowy, odczytać pocztę, wyjść z programu pocztowego i ponownie uruchomić stary program. Wydaje mi się, że widzisz, że gdyby twój obecny program pozwalał ci czytać e-maile, możesz tego uniknąć.

Dlatego jeśli twój obecny program nie mógł odczytać twojego e-maila, byłeś skłonny to zrobić (pamiętaj, że to byli studenci MIT) lub przejść na inny, który mógłby.

Obecnie trudno to sobie wyobrazić, ale można się zorientować, jak to było, ograniczając się do jednego okna przeglądarki - bez kart, bez dodatkowych okien - a może nawet nie używać zakładek.


9

Jak wszyscy inni już wspominali, „prawo” jest dowcipną obserwacją oprogramowania wzdęcia i pełzania wyników , i jest bardzo podobne do dziesiątej zasady Greenspun :

Każdy wystarczająco skomplikowany program C lub Fortran zawiera ad hoc, nieformalnie określone, wolne od błędów, powolne wdrożenie połowy Common Lisp.

Prawo odzwierciedla pracę Zawinski za pomocą przeglądarki Netscape, a później z Netscape Mail & News, jak opisano tutaj przez dobrze, sam:

Następnie zaprojektowałem i wraz z Terry'm Weissmanem zaimplementowałem klientów Netscape Mail i News w wersjach od 2.0 do 3.0. To był nasz wkład w potwierdzenie prawa ochrony oprogramowania :

„Każdy program próbuje się rozwinąć, dopóki nie będzie w stanie odczytać poczty. Programy, które nie mogą tak rozwinąć, zostaną zastąpione tymi, które potrafią”.

Przeglądarka Netscape, wówczas najpopularniejsza przeglądarka, była często krytykowana jako posiadająca zbyt wiele funkcji dla własnego dobra, jeśli się nie mylę, była to ostatnia (popularna) przeglądarka obsługująca dwa silniki renderujące, Gecko i Trident. Na przykład Ben Goodger identyfikuje wzdęcie Netscape'a jako jeden z (wielu) powodów, które doprowadziły do ​​powstania Firefoksa 1 :

Dysfunkcja interfejsu użytkownika Mozilli

Ponieważ większość projektów interfejsu użytkownika dla produktów Netscape została wykonana przez pracowników Netscape pracujących zgodnie z wymaganiami Netcenter, interfejs użytkownika Mozilli ucierpiał. Zamiast być czystym rdzeniem, na którym Netscape mógłby zbudować produkt odpowiadający jego potrzebom, pakiet Mozilla nigdy nie wydawał się słuszny; był pełen niezręcznych konstrukcji interfejsu użytkownika, które istniały tylko po to, by wypełnić je nakładkami w prywatnym repozytorium źródłowym Netscape - „drzewie handlowym”.

W obliczu tej dysfunkcji w czasie, gdy projekt był opracowywany przez ponad stu inżynierów z różnych, czasem słabo powiązanych działów w ramach CPD. Netscape szybko się rozwijał w poprzednich latach, a przy nierównomiernym zatrudnianiu inżynierów barów ze zdolnościami, które sugerowałyby, że potrzebowali więcej pomocy od innych, mieli zbyt dużą autonomię w projektowaniu i wdrażaniu funkcji. Pomoc dla użytkownika była niewielka, w wyniku czego aplikacja szybko się rozdęła.

1 Z archiwalnej wersji nieistniejącego już bloga Bena Goodgera.


5
Ahh ... To wyjaśnia Emacsa :-)
jwernerny

9
@jwernerny nic nie wyjaśnia Emacsa ...
yannis

4
@MichaelKohne - Z tego samego powodu myślałem, że Emacs był wczesną nie graficzną implementacją Matrycy.
Martin Beckett,

2
Doszedłem również do wniosku, że dziesiąta zasada Greenspunsa jest spostrzeżeniem, które zasadniczo znajdujesz w wystarczająco złożonych programach, które musisz mieć możliwość dostarczania kodu w czasie wykonywania.

2
@jwernerny Wierzę, że jest cała strona, która mówi o tym: jwz.org/doc/lemacs.html
Michael

4

To nie jest prawdziwe prawo, to satyryczny komentarz na temat tego, jak projekty oprogramowania (jeśli nie są właściwie zarządzane) mogą stać się tak duże i skomplikowane, że w końcu zawierają czytnik wiadomości e-mail (nawet jeśli nie ma to nic wspólnego z pierwotnym celem projektu) . Menedżer, którego kiedyś miałem, lubił podobne zdanie: „Każdy wystarczająco skomplikowany system zawiera w sobie w połowie zaimplementowaną implementację LISP”.


2
alias „Dziesiąta zasada Greenspun”.
Jerry Coffin

1
@JerryCoffin: Dzięki, nie znałem jego nazwy! en.wikipedia.org/wiki/Greenspun%27s_tenth_rule
FrustratedWithFormsDesigner

3

Jest to komentarz na temat tego, jak niektóre projekty oprogramowania rozwijają się i dodają coraz więcej funkcji.

Wydaje się, że wiele projektów nie jest w stanie oprzeć się dodaniu funkcji, niezależnie od tego, czy są one potrzebne, czy nie.

Logicznym wnioskiem jest to, że każde oprogramowanie ostatecznie wysyła pocztę.

Zobacz także Scree Creep .


Komunikacja pocztowa to / sposób / sposób wysyłania powiadomień do ludzi z oprogramowania w niektórych miejscach.
Paul Nathan

Wysyłanie poczty jest bardziej rozsądne niż czytanie. Mój router może wysyłać mi swoje dzienniki tak często, ale nie ma powodu, aby akceptować pocztę. Podobnie, wiele programów dla Androida wysyła obrazy pocztą e-mail i takie do celów udostępniania.
Jeanne Pindar

-1

Widzę co najmniej trzy sposoby, aby to zobaczyć.

Jednym z nich jest zignorowanie samego czytania poczty i postrzeganie go jako stwierdzenia, że ​​ludzie lubią produkty z elastycznością, którą można wykorzystać do prawie każdego zadania, niezależnie od tego, jak mało może to mieć związek z pierwotną intencją narzędzia. Jeśli spojrzymy na to w ten sposób, produkt taki jak Photoshop, który nie obsługuje odczytu poczty, nie jest anomalią, ponieważ jego architektura wtyczek jest wystarczająco elastyczna, aby mogła obsługiwać poczty czytania, choć (o ile wiem) nie taka wtyczka istnieje. Ten punkt widzenia można by streścić w bardziej przejrzysty sposób, ale mniej oryginalnie, ponieważ „elastyczność pokonuje specjalizację”.

Drugi sposób, by to zobaczyć, polega na tym, że Jamie Zawiński ma tak wąski cel, że po prostu ignoruje produkty, takie jak Photoshop, PowerPoint, większość gier itp., Które istnieją już od lat, nie obsługują czytania poczty i nie wydają się być zastępowane przez cokolwiek innego, co robi.

Trzeci byłby trochę kontrapunktem do drugiego, mówiąc, że w gruncie rzeczy integracja między produktami nastąpiła do tego stopnia, że ​​efektywne czytanie poczty jest zintegrowane ze wszystkim, ponieważ większość ludzi ma teraz czytnik poczty działający w tle, wszystkie czas i można na niego szybko / łatwo przełączyć, wyciąć i wkleić z czymkolwiek innym itp., że drobne szczegóły, że czytnik poczty jest zapakowany jako osobna aplikacja, przestały mieć znaczenie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.