กฎหมายของ Jamie Zawinski หมายถึงอะไร


24

ฉันต้องการคำอธิบายที่ถูกต้องเกี่ยวกับกฎหมายการห่อซอฟท์แวร์ของJamie Zawinski :

ทุกโปรแกรมพยายามขยายจนกว่าจะสามารถอ่านจดหมายได้ โปรแกรมที่ไม่สามารถขยายได้จะถูกแทนที่ด้วยโปรแกรมที่สามารถทำได้



2
@YannisRizos: ดูเพิ่มเติมที่: en.wikipedia.org/wiki/Feature_creep
FrustratedWithFormsDesigner

คำตอบ:


39

คำตอบทั้งหมด (และความคิดเห็น) จนถึงตอนนี้ดูเหมือนจะมุ่งเน้นไปที่คำแถลงครึ่งแรกของทั้งหมดทำให้กลายเป็นความคิดเห็นเกี่ยวกับ "การขยายตัว" เมื่อครึ่งที่สำคัญคือครึ่งหลัง: โปรแกรมเหล่านั้นที่ไม่สามารถขยายได้ ซึ่งสามารถ.

นี่ไม่เกี่ยวกับการขยายตัวของซอฟต์แวร์ แต่เป็นเรื่องของความเป็นจริงของตลาด ผู้คนอาจพูดว่าพวกเขาต้องการผลิตภัณฑ์ที่เรียบง่าย แต่เมื่อคุณดูการใช้งานจริงสิ่งต่าง ๆ ที่นำมาใช้เป็นสิ่งที่ทำให้ผู้ใช้ทำมากขึ้นและพวกเขาก็เปลี่ยนเครื่องมือที่มีความสามารถน้อยลง

ส่วนหนึ่งของปัญหาคือ "ง่าย" เป็นคำที่สับสน เช่นเดียวกับ "เชื่อมั่น" อาจหมายถึงสองสิ่งที่ตรงกันข้ามกันเกือบทั้งหมด สิ่งที่ผู้คนต้องการคือสิ่งที่ลดความซับซ้อนของงานที่ซับซ้อน นั่นคือ "ความเรียบง่ายที่ดี" และมันต้องการความซับซ้อนอย่างมากในการทำสิ่งที่ถูกต้อง แม้ว่าบางคนตีความว่าเป็นคนต้องการสิ่งที่ง่ายหรือเรียบง่าย แนวคิดนี้อาจมีช่องดึงดูดใจ แต่โดยรวมแล้วมันเป็นเรื่องที่ "ผิดปกติ" ที่จะมุ่งเน้นไปที่การออกแบบผลิตภัณฑ์ ไม่ว่างานของคุณจะดีเพียงใดคุณสมบัติใหม่นี้ก็ยังคงมีอยู่

เพื่อยกตัวอย่างมีโปรแกรมที่ฉันทำงานในที่ทำงาน คุณอาจไม่เคยได้ยินเรื่องนี้มาก่อน แต่เราเป็นผู้นำตลาดในอุตสาหกรรมเฉพาะด้าน: การควบคุมสื่อ โปรแกรมของเรามักจะใช้งานโทรทัศน์และ / หรือสถานีวิทยุที่คุณชื่นชอบ ลูกค้ารักมันพวกเขาบอกว่ามันเป็นอย่างนั้นดีกว่าสิ่งอื่นใดที่พวกเขาได้ทำงานร่วมกับ

มันใหญ่หลวงเช่นกัน EXE มีขนาดเกิน 65 MB พร้อมรหัสประมาณ 4 ล้านบรรทัดซึ่งได้รับการสนับสนุนจากฐานข้อมูลที่มีมากกว่า 150 ตารางสร้างขึ้นในช่วงระยะเวลากว่าทศวรรษของการทำงาน และดูเหมือนว่าทุกครั้งที่เราพยายามติดตั้งลงในสถานีหรือเครือข่ายใหม่มีสิ่งหนึ่งหรือสองอย่างที่จำเป็นอย่างยิ่งต่อเวิร์กโฟลว์ของพวกเขานั่นคือเราไม่ได้รับการสนับสนุนใด ๆ ดังนั้นเราจึงเพิ่มคุณสมบัติใหม่เพราะลูกค้าไม่ต้องการเปลี่ยนจากระบบที่พวกเขาคุ้นเคยอยู่แล้ว และให้ฉันทำซ้ำลูกค้าที่รักมัน


20
และในที่สุดซอฟต์แวร์ป่องจะถูกแทนที่ด้วยคู่แข่งใหม่ซึ่งก็คือ "ลีนและหมายถึง" และที่จะเพิ่มคุณสมบัติที่จำเป็นในช่วงเวลาหนึ่งจนกว่าจะมีคุณลักษณะทั้งหมดที่บรรพบุรุษของมันมี ...
jhonkola

หืมฉันคิดว่าส่วนหนึ่งถูกกล่าวถึงโดยคำสั่งของ Zawinski: "ต่อไปฉันออกแบบและ Terry Weissman และฉันใช้งานลูกค้าของ Netscape Mail และ News รุ่น 2.0 ถึง 3.0 นี่คือการสนับสนุนของเราในการพิสูจน์กฎหมายซอฟท์แวร์ซอฟแวร์ "แต่ตอนนี้ฉันว่าฉันได้อ่านอีกครั้งมันไม่ชัดเจน
yannis

1
@ jhonkola หากรหัสทำในสิ่งที่ลูกค้าต้องการและไม่มากไปกว่านั้นไม่ใช่ป่อง

1
@ ThorbjørnRavnAndersenฉันเห็นด้วยประเด็นของฉันคือยิ่งเมื่อซอฟต์แวร์ได้รับความนิยม (และเช่นผู้ใช้ / ลูกค้า) จำนวนคุณสมบัติที่ผู้ใช้ต้องการและในที่สุดก็จะเพิ่มขึ้น
jhonkola

1
หากการตีความของคุณถูกต้องความคิดเห็นของ Zawinski นั้นโอ้อวดไม่ใช่เป็นการปฏิเสธตนเอง ฉันพบว่ามันยากที่จะเชื่อ
กล่อง

12

คุณต้องเข้าใจว่าเรื่องนี้เกิดขึ้นอีกนานและในเวลานั้นยังไม่เป็นที่นิยมสำหรับคอมพิวเตอร์ที่จะสามารถเรียกใช้มากกว่าหนึ่งโปรแกรมในเวลาเดียวกันสำหรับผู้ใช้ที่ได้รับ DOS สำหรับคอมพิวเตอร์ส่วนบุคคล (และอาจเป็น Windows 3 อยู่ด้านบน) และเทอร์มินัลที่อ้างอิงอักขระสำหรับผู้ใช้ Unix (มีเพียงไม่กี่คนเท่านั้นที่มี X11)

นี่หมายความว่าในการตรวจสอบว่าคุณได้รับอีเมลหรือไม่คุณต้องออกจากสิ่งที่คุณกำลังทำอยู่เริ่มโปรแกรมจดหมายอ่านจดหมายออกจากโปรแกรมจดหมายแล้วเริ่มโปรแกรมเก่าของคุณใหม่ ฉันเดาว่าคุณจะเห็นว่าหากโปรแกรมปัจจุบันของคุณสามารถให้คุณอ่านอีเมลของคุณได้คุณสามารถหลีกเลี่ยงได้ทั้งหมด

ดังนั้นหากโปรแกรมปัจจุบันของคุณไม่สามารถอ่านอีเมลของคุณคุณมีแนวโน้มที่จะทำเช่นนั้น (จำไว้ว่านี่คือนักเรียน MIT) หรือเปลี่ยนไปใช้โปรแกรมอื่นที่ทำได้

วันนี้เป็นเรื่องยากที่จะจินตนาการ แต่คุณสามารถได้รับความเฉลียวของวิธีการโดย จำกัด ตัวเองในหน้าต่างเบราว์เซอร์เดียว - ไม่มีแท็บไม่มีหน้าต่างพิเศษ - และบางทีอาจไม่ได้ใช้ที่คั่นหน้า


9

ดังที่คนอื่น ๆ พูดถึง "กฎหมาย" คือการสังเกตอย่างขบขันเกี่ยวกับการขยายตัวของซอฟต์แวร์และการคืบคะแนนและมันคล้ายกับกฎข้อที่สิบของ Greenspun :

โปรแกรม C หรือ Fortran ที่ซับซ้อนเพียงพอใด ๆ มี ad hoc ที่ระบุอย่างไม่เป็นทางการระบุข้อผิดพลาดและการใช้งานช้าของครึ่งหนึ่งของ Common LISP

กฎหมายดังกล่าวสะท้อนให้เห็นถึงการทำงานของ Zawinski กับเบราว์เซอร์ Netscape และต่อมากับ Netscape Mail & News ดังที่อธิบายไว้ที่นี่โดยตัวเอง:

ต่อไปฉันออกแบบและ Terry Weissman และฉันใช้งานไคลเอนต์ Netscape Mail และ News เวอร์ชัน 2.0 ถึง 3.0 นี่คือการมีส่วนร่วมของเราในการพิสูจน์กฎหมายห่อหุ้มซอฟต์แวร์ :

"ทุกโปรแกรมพยายามขยายจนกว่าจะสามารถอ่านจดหมายได้โปรแกรมที่ไม่สามารถขยายได้จะถูกแทนที่ด้วยโปรแกรมที่สามารถขยายได้"

เบราว์เซอร์ Netscape ในขณะที่เบราว์เซอร์ที่นิยมที่สุดมักถูกวิพากษ์วิจารณ์ว่ามีคุณสมบัติมากเกินไปสำหรับตัวมันเองถ้าฉันไม่เข้าใจผิดอย่างน่ากลัวมันเป็นเบราว์เซอร์ที่ได้รับความนิยมตัวล่าสุด ตัวอย่างเช่นBen Goodgerระบุว่าBloggerของ Netscape เป็นหนึ่งในเหตุผล (หลาย ๆ ข้อ) ที่นำไปสู่การสร้าง Firefox 1 :

UI ผิดปกติของ Mozilla

เนื่องจากการออกแบบส่วนต่อประสานผู้ใช้ส่วนใหญ่สำหรับผลิตภัณฑ์ Netscape นั้นทำโดยเจ้าหน้าที่ของ Netscape ที่ทำงานตามข้อกำหนดของ Netcenter ส่วนต่อประสานผู้ใช้ Mozilla จึงได้รับความเดือดร้อน แทนที่จะเป็นแกนหลักที่สะอาดซึ่ง Netscape สามารถสร้างผลิตภัณฑ์ให้เหมาะกับความต้องการชุด Mozilla ไม่เคยรู้สึกค่อนข้างถูกต้อง มันเต็มไปด้วยการสร้าง UI ที่น่าอึดอัดใจที่มีอยู่เท่านั้นที่จะเต็มไปด้วยการซ้อนทับในแหล่งเก็บข้อมูลส่วนตัวของ Netscape - "ต้นไม้เชิงพาณิชย์"

การรวมความผิดปกตินี้ในเวลาที่โครงการได้รับการพัฒนาโดยวิศวกรกว่าร้อยคนในแผนกที่แตกต่างกันบางครั้งก็มีการเชื่อมต่อที่ไม่ดีใน CPD Netscape เติบโตอย่างรวดเร็วในปีก่อนหน้าและด้วยวิศวกรบาร์ที่มีความสามารถที่จะแนะนำว่าพวกเขาต้องการความช่วยเหลือเพิ่มเติมจากผู้อื่นทำให้มีอิสระในการออกแบบและการใช้งานมากเกินไป ความช่วยเหลือประสบการณ์ผู้ใช้กระจัดกระจายและเป็นผลให้แอปพลิเคชันป่องอย่างรวดเร็ว

1จากบล็อกที่หมดอายุแล้วของ Ben Goodger รุ่นเก่า


5
อ่า ... นั่นอธิบาย Emacs :-)
jwernerny

9
@jwernerny ไม่มีอะไรอธิบาย Emacs ...
yannis

4
@MichaelKohne - ด้วยเหตุผลเดียวกันฉันคิดว่า Emacs เป็นการใช้งานแบบไม่ใช่กราฟิกในช่วงต้นของเมทริกซ์
Martin Beckett

2
นอกจากนี้ฉันได้สรุปกฎที่สิบของ Greenspuns คือการสังเกตว่าคุณพบในโปรแกรมที่ซับซ้อนเพียงพอซึ่งคุณต้องมีความสามารถในการให้รหัสที่รันไทม์

2
@jwernerny ผมเชื่อว่ามีทั้งหน้าซึ่งพูดเกี่ยวกับเรื่องนี้: jwz.org/doc/lemacs.html
ไมเคิล

4

มันไม่ใช่กฎหมายที่แท้จริงมันเป็นความเห็นเหน็บแนมว่าโครงการซอฟต์แวร์ (หากไม่ได้รับการจัดการอย่างเหมาะสม) สามารถเติบโตได้ขนาดใหญ่และซับซ้อนในที่สุดพวกเขาก็รวมโปรแกรมอ่านอีเมล (แม้ว่าจะไม่เกี่ยวข้องกับวัตถุประสงค์ดั้งเดิมของโครงการ) . ผู้จัดการที่ฉันเคยชอบวลีที่คล้ายกัน "ระบบที่ซับซ้อนใด ๆ ที่เพียงพอมีการใช้ LISP แบบครึ่งทางภายใน"


2
อาคา "กฎข้อที่สิบของ Greenspun"
Jerry Coffin

1
@JerryCoffin: ขอบคุณฉันไม่รู้ชื่อของมันเลย! en.wikipedia.org/wiki/Greenspun%27s_tenth_rule
FrustratedWithFormsDesigner

3

มันเป็นความเห็นเกี่ยวกับว่าบางโครงการซอฟต์แวร์ดูเหมือนจะขยายตัวและเพิ่มคุณสมบัติมากขึ้นเรื่อย ๆ

ดูเหมือนว่าหลายโครงการจะไม่สามารถต้านทานคุณสมบัติเพิ่มเติมได้ไม่ว่าจะจำเป็นหรือไม่ก็ตาม

ข้อสรุปเชิงตรรกะคือซอฟต์แวร์ทุกชิ้นจะจบลงด้วยการส่งจดหมาย

ยังเห็นการคืบขอบเขต


การสื่อสารด้วยเมลเป็น / วิธี / เพื่อส่งการแจ้งเตือนไปยังมนุษย์จากซอฟต์แวร์ในบางสถานที่
พอลนาธาน

การส่งเมลนั้นสมเหตุสมผลกว่าการอ่าน เราเตอร์ของฉันสามารถส่งบันทึกให้ฉันทุก ๆ ครั้ง แต่ไม่มีเหตุผลที่จะรับจดหมาย ในทำนองเดียวกันโปรแกรม Android จำนวนมากจะส่งอีเมลรูปภาพและเพื่อวัตถุประสงค์ในการแบ่งปัน
Jeanne Pindar

-1

ฉันเห็นอย่างน้อยสามวิธีในการดู

สิ่งหนึ่งคือละเว้นการอ่านอีเมลและดูว่าเป็นคำสั่งที่คนดูเหมือนจะชอบผลิตภัณฑ์ที่มีความยืดหยุ่นที่จะหันไปทำงานได้เกือบทุกประเภท หากเรามองด้วยวิธีนี้ผลิตภัณฑ์อย่าง Photoshop ที่ไม่รองรับการอ่านเมลไม่ใช่ความผิดปกติเพราะสถาปัตยกรรมปลั๊กอินนั้นมีความยืดหยุ่นเพียงพอที่จะรองรับการอ่านจดหมายได้แม้ว่า (เท่าที่ฉันรู้) ไม่ มีปลั๊กอินดังกล่าว มุมมองนี้อาจสรุปได้อย่างละเอียดมากขึ้น แต่น้อยกว่าเดิมในฐานะ "ความเชี่ยวชาญเฉพาะด้านความยืดหยุ่นเต้น"

วิธีที่สองในการดูก็คือ Jamie Zawinski มีจุดโฟกัสแคบ ๆ ที่เขาไม่สนใจผลิตภัณฑ์เช่น Photoshop, PowerPoint, เกมส่วนใหญ่ ฯลฯ ที่อยู่มานานหลายปีไม่สนับสนุนการอ่านจดหมายและไม่ต้องทำเช่นนั้น ดูเหมือนจะไม่ได้รับการแทนที่ด้วยสิ่งอื่นใดที่ทำเช่นกัน

ประการที่สามจะเป็นข้อแตกต่างเล็กน้อยไปยังข้อที่สองกล่าวโดยสรุปแล้วการบูรณาการระหว่างผลิตภัณฑ์เกิดขึ้นในระดับที่การอ่านจดหมายได้อย่างมีประสิทธิภาพถูกรวมเข้ากับทุกสิ่งเพราะคนส่วนใหญ่ตอนนี้มีโปรแกรมอ่านจดหมายที่ทำงานอยู่เบื้องหลัง เวลาและสามารถสลับไปมาได้อย่างรวดเร็ว / ง่ายดายเพียงพอตัดและวางกับสิ่งอื่น ๆ เป็นต้นว่ารายละเอียดเล็กน้อยที่โปรแกรมอ่านเมลจะถูกบรรจุเป็นแอปพลิเคชันแยกต่างหากกลายเป็นสิ่งที่ไม่เกี่ยวข้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.