Apa arti Hukum Jamie Zawinski?

Jawaban:

39

Semua jawaban (dan komentar) sejauh ini tampaknya berfokus sepenuhnya pada bagian pertama dari pernyataan, menjadikannya sebagai komentar tentang "mengasapi," ketika bagian penting adalah bagian kedua: Program-program yang tidak dapat berkembang digantikan digantikan oleh yang yang dapat.

Ini bukan tentang mengasapi perangkat lunak, ini tentang realitas pasar. Orang-orang mungkin mengatakan mereka menginginkan produk sederhana, tetapi ketika Anda melihat penggunaan yang sebenarnya, hal-hal yang digunakan adalah hal-hal yang memungkinkan pengguna melakukan lebih banyak, dan mereka akhirnya mengganti alat yang kurang mampu.

Bagian dari masalahnya adalah bahwa "sederhana" adalah kata yang membingungkan. Seperti "cleave," itu bisa berarti dua hal yang hampir sepenuhnya berlawanan. Apa yang diinginkan orang adalah sesuatu yang menyederhanakan tugas-tugas kompleks. Itu "yang baik sederhana," dan itu membutuhkan banyak kerumitan untuk melakukan yang benar. Namun, apa yang ditafsirkan oleh beberapa orang adalah bahwa orang menginginkan sesuatu yang sederhana , atau minimalis. Konsep ini mungkin memiliki beberapa daya tarik niche, tetapi secara keseluruhan itu adalah jenis "sederhana" yang salah untuk fokus ketika merancang suatu produk. Tidak peduli sebagus apa pun pekerjaan Anda, permintaan fitur baru tetap masuk.

Sebagai contoh, ada program yang saya kerjakan di tempat kerja. Anda mungkin belum pernah mendengarnya, tetapi kami adalah pemimpin pasar dalam industri khusus: kontrol media. Program kami kemungkinan besar menjalankan stasiun TV dan / atau radio favorit Anda. Pelanggan menyukainya, mereka mengatakan itu begitu jauh lebih baik dari apa pun yang mereka telah bekerja dengan.

Ini juga luar biasa . EXE berukuran lebih dari 65 MB, dengan sekitar 4 juta baris kode, didukung oleh database dengan lebih dari 150 tabel, dibangun selama lebih dari satu dekade kerja. Namun sepertinya setiap kali kami mencoba untuk menginstalnya di beberapa stasiun atau jaringan baru, ada satu atau dua hal yang sangat penting untuk alur kerja mereka, yang kami tidak memiliki dukungan untuk itu. Jadi kami akhirnya menambahkan fitur-fitur baru karena jika tidak para pelanggan tidak ingin beralih dari sistem yang sudah mereka gunakan. Dan saya ulangi, pelanggan menyukainya.

Mason Wheeler
sumber
20
Dan akhirnya perangkat lunak yang bengkak ini digantikan oleh pesaing baru, yang "ramping dan kejam", dan yang akan menambahkan fitur yang diperlukan satu per satu sampai memiliki semua fitur yang dimiliki pendahulunya ...
jhonkola
Hm, saya pikir bagian itu dicakup oleh pernyataan Zawinski: "Selanjutnya, saya mendesain, dan Terry Weissman dan saya menerapkan, klien Netscape Mail dan News, versi 2.0 hingga 3.0. Ini adalah kontribusi kami terhadap bukti Hukum Pengembangan Perangkat Lunak ", tetapi sekarang saya bahwa saya telah membaca kembali itu tidak jelas.
yannis
1
@ jhonkola jika kode melakukan apa yang pelanggan butuhkan dan tidak lebih dari itu tidak membengkak.
1
@ ThorbjørnRavnAndersen Saya setuju, maksud saya lebih dari itu ketika perangkat lunak mendapatkan popularitas (dan dengan demikian juga pengguna / pelanggan), jumlah fitur yang dibutuhkan oleh pengguna, dan akhirnya diimplementasikan, akan tumbuh.
jhonkola
1
Jika interpretasi Anda benar, komentar Zawinski adalah sombong, tidak mencela diri sendiri. Saya merasa sulit untuk percaya.
ctn
12

Anda harus memahami bahwa ini terjadi cukup lama, dan pada saat itu belum menjadi arus utama bagi komputer untuk dapat menjalankan lebih dari satu program sekaligus untuk pengguna tertentu. DOS untuk Komputer Pribadi (dan mungkin Windows 3 di atas) dan terminal berbasis karakter untuk pengguna Unix (hanya beberapa yang memiliki X11).

Ini berarti bahwa untuk memeriksa apakah Anda mendapatkan email, Anda harus keluar dari apa yang sedang Anda lakukan, memulai program surat, membaca surat, keluar dari program surat dan memulai kembali program lama Anda. Saya kira Anda dapat melihat bahwa jika program Anda saat ini memungkinkan Anda membaca email Anda, Anda dapat menghindari semua itu.

Karenanya jika program Anda saat ini tidak dapat membaca email Anda, Anda cenderung membuatnya melakukannya (ingat ini adalah mahasiswa MIT) atau beralih ke yang lain yang bisa.

Hari-hari ini sulit dibayangkan, tetapi Anda bisa mengetahui bagaimana hal itu dengan membatasi diri Anda pada satu jendela browser - tanpa tab, tanpa jendela tambahan - dan bahkan mungkin tidak menggunakan bookmark.


sumber
9

Seperti yang semua orang sudah sebutkan, "hukum" adalah sebuah pengamatan lucu pada perangkat lunak mengasapi dan skor creep , dan itu sangat mirip dengan aturan kesepuluh Greenspun :

Setiap program C atau Fortran yang cukup rumit berisi implementasi ad hoc, dispesifikasikan secara informal, ditanggulangi, lambat dari separuh Common Lisp.

Hukum mencerminkan pekerjaan Zawinski dengan browser Netscape dan kemudian dengan Netscape Mail & News, seperti yang dijelaskan di sini oleh, yah, dirinya sendiri:

Selanjutnya, saya merancang, dan Terry Weissman dan saya mengimplementasikan, klien Netscape Mail and News, versi 2.0 hingga 3.0. Ini adalah kontribusi kami terhadap bukti Hukum Pengembangan Perangkat Lunak :

"Setiap program mencoba untuk memperluas hingga dapat membaca email. Program-program yang tidak dapat berkembang digantikan oleh yang bisa."

Peramban Netscape, pada saat itu peramban paling populer, sering dikritik karena memiliki terlalu banyak fitur untuk kebaikannya sendiri, jika saya tidak salah mengira itu peramban (populer) terakhir yang mendukung dua mesin rendering, Gecko dan Trident. Misalnya, Ben Goodger mengidentifikasi kesalahan Netscape sebagai salah satu (banyak) alasan yang mengarah pada penciptaan Firefox 1 :

Disfungsi UI Mozilla

Karena sebagian besar desain antarmuka pengguna untuk produk Netscape dilakukan oleh staf Netscape yang bekerja dengan persyaratan Netcenter, antarmuka pengguna Mozilla mengalami penurunan. Alih-alih menjadi inti bersih tempat Netscape dapat membangun suatu produk sesuai dengan kebutuhannya, rangkaian Mozilla tidak pernah terasa tepat; itu penuh dengan konstruksi UI canggung yang hanya ada untuk diisi oleh overlay di repositori sumber pribadi Netscape - "pohon komersial."

Memperkuat disfungsi ini, pada saat proyek sedang dikembangkan oleh lebih dari seratus insinyur di berbagai departemen, kadang-kadang kurang terhubung dalam CPD. Netscape telah berkembang pesat pada tahun-tahun sebelumnya, dan dengan mempekerjakan bar insinyur yang tidak merata dengan kemampuan yang akan menyarankan mereka membutuhkan lebih banyak bantuan dari orang lain memiliki otonomi yang terlalu banyak dalam desain dan implementasi fitur. Bantuan pengalaman pengguna jarang, dan akibatnya aplikasi cepat membengkak.

1 Dari versi arsip blog Ben Goodger yang sekarang sudah tidak aktif.

yannis
sumber
5
Ahh ... Itu menjelaskan Emacs :-)
jwernerny
9
@jwernerny tidak ada yang menjelaskan Emacs ...
yannis
4
@MichaelKohne - Untuk alasan yang sama saya pikir Emacs adalah implementasi awal non-grafis dari Matrix.
Martin Beckett
2
Juga saya telah menyimpulkan aturan kesepuluh Greenspuns adalah pengamatan yang pada dasarnya Anda temukan dalam program yang cukup kompleks bahwa Anda harus memiliki kemampuan untuk memberikan kode saat runtime.
2
@jwernerny Saya percaya ada seluruh halaman yang membahas tentang ini: jwz.org/doc/lemacs.html
Michael
4

Ini bukan hukum yang sebenarnya , ini adalah komentar yang menyindir tentang bagaimana proyek perangkat lunak (jika tidak dikelola dengan baik) dapat tumbuh begitu besar dan rumit, mereka entah bagaimana akhirnya menyertakan pembaca email (bahkan jika itu tidak ada hubungannya dengan tujuan asli proyek) . Seorang manajer yang pernah saya miliki menyukai ungkapan yang sama "Setiap sistem yang cukup rumit berisi implementasi LISP setengah-berpantas di dalamnya".

FrustratedWithFormsDesigner
sumber
2
alias "aturan kesepuluh Greenspun."
Jerry Coffin
1
@ JerryCoffin: Terima kasih, saya tidak tahu nama itu! en.wikipedia.org/wiki/Greenspun%27s_tenth_rule
FrustratedWithFormsDesigner
3

Ini adalah komentar tentang bagaimana beberapa proyek perangkat lunak tampaknya terus berkembang dan menambahkan lebih banyak fitur.

Banyak proyek tampaknya tidak dapat menolak penambahan fitur, baik diperlukan atau tidak.

Kesimpulan logisnya adalah bahwa setiap perangkat lunak pada akhirnya akan mengirim surat.

Juga lihat Scope Creep .

Oded
sumber
Komunikasi surat adalah / cara / untuk mengirim pemberitahuan kepada manusia dari perangkat lunak di beberapa tempat.
Paul Nathan
Mengirim surat lebih masuk akal daripada membacanya. Router saya dapat mengirimkan saya log-nya begitu sering tetapi tidak memiliki alasan untuk menerima email. Demikian juga, banyak program Android akan mengirim email gambar dan semacamnya untuk tujuan berbagi.
Jeanne Pindar
-1

Saya melihat setidaknya tiga cara untuk melihatnya.

Salah satunya adalah mengabaikan pembacaan surat sendiri, dan melihatnya sebagai pernyataan bahwa orang tampaknya menyukai produk dengan fleksibilitas untuk dialihkan ke hampir semua tugas, terlepas dari seberapa kecil hubungannya dengan maksud asli alat tersebut. Jika kita melihatnya dengan cara ini, produk seperti Photoshop yang tidak mendukung pembacaan surat bukan merupakan anomali karena arsitektur plug-in-nya cukup fleksibel sehingga dapat mendukung pembacaan surat, meskipun (sejauh yang saya tahu) tidak plug-in semacam itu ada. Sudut pandang ini bisa diringkas lebih bersih, tetapi pada awalnya kurang, karena "fleksibilitas mengalahkan spesialisasi".

Cara kedua untuk melihatnya adalah bahwa Jamie Zawinski memiliki fokus yang sangat sempit sehingga ia mengabaikan produk-produk seperti Photoshop, PowerPoint, sebagian besar game, dll., Yang telah ada selama bertahun-tahun, tidak mendukung membaca surat, dan jangan ' t tampaknya akan digantikan oleh hal lain yang melakukan keduanya.

Yang ketiga akan menjadi sedikit berlawanan dengan yang kedua, mengatakan bahwa, pada dasarnya, integrasi antara produk telah terjadi sedemikian rupa sehingga secara efektif membaca surat diintegrasikan ke dalam segala sesuatu karena kebanyakan orang sekarang memiliki pembaca surat yang berjalan di latar belakang, semua waktu dan dapat beralih ke itu dengan cepat / cukup mudah, potong dan rekatkan dengan hal lain, dll., bahwa detail kecil yang pembaca surat dikemas sebagai aplikasi terpisah telah menjadi tidak relevan.

Jerry Coffin
sumber