Jamie Zawinski의 법칙은 무엇을 의미합니까?


24

Jamie Zawinski의 소프트웨어 엔벨로프 법칙에 대한 적절한 설명이 필요합니다 .

모든 프로그램은 메일을 읽을 수있을 때까지 확장을 시도합니다. 그렇게 확장 할 수없는 프로그램은 가능한 프로그램으로 대체됩니다.



답변:


39

지금까지의 모든 답변 (및 의견)은 전반부의 전반에 초점을두고있는 것으로 보이며, 중요한 절반이 후반 인 경우 "부풀림"에 대한 의견 이됩니다. 할 수 있습니다.

이것은 소프트웨어 팽창에 관한 것이 아니라 시장의 현실에 관한 것입니다. 사람들은 간단한 제품을 원한다고 말할 수도 있지만 실제 사용량을 살펴보면 사용되는 것이 사용자가 더 많은 일을 할 수있게되며 결국에는 기능이 부족한 도구를 대체하게됩니다.

문제의 일부는 "간단한"이 혼란스러운 단어라는 것입니다. "절단"과 같이, 그것은 거의 완전히 반대되는 두 가지를 의미 할 수 있습니다. 사람들이 원하는 것은 복잡한 작업 을 단순화하는 것입니다 . 그것은 "좋은 단순함"이며, 제대로하려면 많은 복잡성이 필요합니다. 하지만 사람들이 해석하는 것은 사람들이 단순 하거나 미니멀 한 것을 원한다는 것 입니다. 이 개념은 틈새 시장에 호소력을 발휘할 수 있지만, 제품을 설계 할 때 초점을 맞추는 것은 "간단한"종류가 아닙니다. 업무가 아무리 훌륭하더라도 새로운 기능 요청이 계속 제공됩니다.

예를 들어 직장에서 일하는 프로그램이 있습니다. 당신은 아마 들어 본 적이 없지만, 우리는 미디어 산업과 같은 전문 산업의 시장 리더입니다. 우리의 프로그램은 가장 좋아하는 TV 및 / 또는 라디오 방송국을 운영합니다. 고객이 그것을 사랑, 그들은 말할 그래서 훨씬 더 그들과 함께 작업 한 다른 것보다는.

또한 거대 합니다. EXE는 크기가 65MB 이상이며 약 4 백만 줄의 코드가 있으며 150 개가 넘는 테이블이있는 데이터베이스를 기반으로하며 10 년이 넘는 작업을 통해 구축되었습니다. 그러나 새로운 스테이션이나 네트워크에 설치하려고 할 때마다 워크 플로에 절대적으로 필요한 하나 또는 두 가지가 있으며 지원하지 않습니다. 따라서 고객은 이미 익숙한 시스템에서 전환하고 싶지 않기 때문에 새로운 기능을 추가하게됩니다. 그리고 반복하겠습니다. 고객은 그것을 좋아합니다.


20
그리고 결국 부풀린 소프트웨어는 "가벼워지고 의미가있는"새로운 경쟁자로 대체되고, 이전의 기능이 모두
갖추어

흠, 나는 그 부분이 Zawinski의 진술에 포함되었다고 생각했다. "다음으로 Netscape Mail and News 클라이언트, 버전 2.0에서 3.0까지 테리 웨이스만을 디자인하고 구현했습니다. 이것이 소프트웨어 엔벨로프의 법칙 증명에 기여한 것입니다. ", 그러나 나는 그것을 다시 읽은 것이 분명하지 않습니다.
yannis

1
@jhonkola 코드가 고객이 필요로하는 것을 수행하고 부풀어 오르지 않는 것 이상은 아닙니다.

1
@ ThorbjørnRavnAndersen 나는 소프트웨어가 인기를 얻고 (따라서 사용자 / 고객), 사용자가 필요로하는 기능의 수가 늘어나고 결국 구현 될 것이라는 점에 더 동의한다.
jhonkola

1
귀하의 해석이 정확하다면 Zawinski의 의견은 자만하지 않고 자랑 스럽습니다. 나는 그것을 믿기가 어렵다.
ctn

12

이 문제는 오래 전부터 발생했다는 점을 이해해야합니다. 그 당시에는 컴퓨터가 특정 사용자에 대해 한 번에 둘 이상의 프로그램을 실행할 수 없었습니다. 개인용 컴퓨터 용 DOS (및 Windows 3 이상) 및 Unix 사용자 용 문자 기반 터미널 (몇몇 X11).

즉, 이메일을 받았는지 확인하려면 현재 수행중인 작업 을 종료 하고, 메일 프로그램을 시작하고, 메일을 읽고, 메일 프로그램을 종료 하고 , 기존 프로그램을 다시 시작해야합니다. 현재 프로그램에서 전자 메일을 읽을 수 있다면 모든 것을 피할 수 있음을 알 수 있습니다.

따라서 현재 프로그램에서 전자 메일을 읽을 수없는 경우 전자 메일을 보내거나 (MIT 학생임을 기억하십시오) 다른 전자 메일로 전환하십시오.

요즘은 상상하기 어렵지만 탭이나 추가 창없이 북마크를 사용하지 않는 단일 브라우저 창으로 자신을 제한함으로써 그 방식을 쉽게 알 수 있습니다 .


9

다른 사람들이 이미 언급했듯이 "법칙"은 소프트웨어 팽창점수 크립 에 대한 유머러스 한 관찰 이며 Greenspun의 10 번째 규칙 과 매우 유사합니다 .

충분히 복잡한 C 또는 Fortran 프로그램에는 Common Lisp의 절반을 임시로, 비공식적으로 지정하고, 버그를 해결하며, 느리게 구현 한 임시 프로그램이 포함되어 있습니다.

설명이 법은, 넷스케이프 브라우저 나중에 넷스케이프 메일 & 뉴스와 Zawinski의 작품을 반영 여기 에 의해 아니라, 자신 :

다음으로 Netscape Mail and News 클라이언트 버전 2.0에서 3.0까지 Terry Weissman을 설계하고 구현했습니다. 이것이 소프트웨어 엔벨로프 법의 증거에 대한 우리의 공헌이었습니다 .

"모든 프로그램은 메일을 읽을 수있을 때까지 확장을 시도합니다. 확장 할 수없는 프로그램은 가능한 프로그램으로 대체됩니다."

당시 가장 인기있는 브라우저 인 넷스케이프 브라우저는 종종 자신의 이익을 위해 너무 많은 기능을 가지고 있다고 비난을 받아 왔습니다. 예를 들어 Ben Goodger 는 Netscape의 부풀림을 Firefox 1을 생성하는 여러 가지 이유 중 하나로 식별합니다 .

모질라의 UI 기능 장애

Netscape 제품에 대한 대부분의 사용자 인터페이스 디자인은 Netscape 요구 사항을 처리하는 Netscape 직원이 수행했기 때문에 Mozilla 사용자 인터페이스에 어려움이있었습니다. 넷스케이프가 요구에 맞는 제품을 개발할 수있는 깨끗한 핵심이 아니라 모질라 제품군은 결코 옳지 않다고 생각했다. Netscape의 개인 소스 리포지토리 ( "상업 트리")의 오버레이로만 채워진 어색한 UI 구성으로 가득했습니다.

이 기능 장애를 복합화 한이 프로젝트는 CPD 내에서 서로 연결이 잘되지 않은 서로 다른 부서의 수백 명의 엔지니어가 프로젝트를 개발할 당시였습니다. Netscape는 이전 몇 년 동안 빠르게 성장했으며, 고르지 않은 채용 바 엔지니어와 함께 다른 사람들의 도움이 더 필요하다고 제안 할 수있는 기능 설계 및 구현에 너무 많은 자율권이있었습니다. 사용자 경험 지원이 부족하여 결과적으로 응용 프로그램이 급증했습니다.

1 에서 보관 된 버전 벤 구 저는의 지금은 없어져 버린 블로그입니다.


5
Ahh ... 이맥스를 설명합니다 :-)
jwernerny

9
@jwernerny 는 Emacs를 설명 하지 않습니다 ...
yannis

4
@MichaelKohne-같은 이유로 저는 이멕스가 초기 비 그래픽 매트릭스의 구현이라고 생각했습니다.
Martin Beckett

2
또한 Greenspuns 열 번째 규칙은 본질적으로 런타임에 코드를 제공 할 수 있어야하는 복잡한 프로그램에서 본질적으로 발견된다는 결론입니다.

2
@jwernerny 나는 이것에 대해 이야기하는 전체 페이지가 있다고 생각합니다. jwz.org/doc/lemacs.html
Michael

4

그것은 아니에요 진짜 ,이 (제대로 관리하지 않은 경우) 그들은 어떻게 든 결국 (가없는 경우에도 전자 메일 프로그램을 포함, 너무 크고 복잡하게 성장할 수있는 방법을 소프트웨어 프로젝트에 대한 풍자적 인 코멘트 법칙 아무것도 프로젝트의 원래 목적과는 상관을) . 한때 내가 한 관리자는 비슷한 용어로 "충분히 복잡한 시스템에는 절반의 LISP 구현이 포함되어 있습니다"라는 문구를 좋아했습니다.


2
일명 "그린스펀의 10 번째 규칙."
Jerry Coffin

1
@JerryCoffin : 고마워요, 그 이름을 몰랐어요! en.wikipedia.org/wiki/Greenspun%27s_tenth_rule
FrustratedWithFormsDesigner

3

일부 소프트웨어 프로젝트가 계속 확장되고 점점 더 많은 기능을 추가하는 것처럼 보이는 것에 대한 의견입니다.

많은 프로젝트가 필요한지 여부에 관계없이 기능 추가에 저항 할 수없는 것 같습니다.

논리적 결론은 모든 소프트웨어가 결국 메일을 보낸다는 것입니다.

Scope Creep 도 참조하십시오 .


메일 통신은 어떤 곳에서 소프트웨어를 통해 사람에게 알림을 보내는 방법입니다.
Paul Nathan

메일을 보내는 것이 읽는 것보다 합리적입니다. 라우터가 자주 로그를 보낼 수는 있지만 메일을 수락 할 이유가 없습니다. 마찬가지로 많은 Android 프로그램은 공유 목적으로 이미지 등을 이메일로 보냅니다.
Jeanne Pindar 2:26에

-1

적어도 세 가지 방법으로 볼 수 있습니다.

하나는 메일 읽기 자체를 무시하고 사람들이 도구의 원래 의도와 관련이 거의 없더라도 거의 모든 작업으로 전환 할 수있는 유연성을 가진 제품을 좋아하는 것 같다는 진술로 보는 것입니다. 이런 식으로 보면 메일 읽기를 지원하지 않는 Photoshop과 같은 제품은 플러그인 아키텍처가 유연 하지만 메일 읽기를 지원할 있을 정도로 유연하기 때문에 이상 하지 않습니다. 이러한 플러그인이 존재합니다. 이러한 관점은 "유연성이 전문화를 능가하는 것"으로보다 명확하게 요약 될 수 있지만 원래는 덜 요약 될 수 있습니다.

두 번째 방법은 Jamie Zawinski가 Photoshop, PowerPoint, 대부분의 게임 등과 같이 오랫동안 사용되어 왔으며 메일 읽기를 지원하지 않는 제품을 무시하고 초점을 좁히는 것입니다. t 다른 방법으로 대체되고있는 것 같습니다.

세 번째는 두 번째에 대한 약간의 반발 점이 될 것입니다. 본질적으로 제품 간의 통합은 사실상 대부분의 사람들이 메일 리더를 백그라운드에서 실행하고 있기 때문에 메일 읽기가 모든 것에 효과적으로 통합되는 정도까지 이루어졌습니다. 메일 리더가 별도의 응용 프로그램으로 패키지화되는 사소한 세부 사항이 관련이 없다는 시간을 신속하고 쉽게 전환하고 다른 항목으로 잘라 붙여 넣을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.