본문 바로가기
프로그래밍

더 나쁜 것이 더 좋습니다? Worse is better

by bantomak 2025. 1. 13.
반응형

Worse is better

Richard P.Gabriel이 1989년 에세이에서 소프트웨어 수용의 역학을 설명하기 위해 고안한 용어이다. 이는 소프트웨어 품질이 기능성에 따라 반드시 증가하는 것은 아니라는 주장, 즉 실용성과 유용성 측면에서 기능이 적은 것("더 나쁜")이 더 나은 옵션("더 나은")인 지점이 있다는 주장이다. 제한적이지만 사용이 간편한 소프트웨어는 그 반대의 경우보다 사용자와 시장에 더 매력적일 수 있다는 이야기이다.

 

더 나은 옵션이 항상 최선의 선택이 아닐 수 있다는 이야기이다. 즉, 더 나쁜 옵션이 더 나은 경우가 존재한다.

MIT/Standford style (Common Lisp, CLOS)

Simplicity : the design must be simple, both in implementation and interface. It is more important for the interface to be simple than the implementation

Correctness : the design must be correct in all observable aspects. Incorrectness is simplly not allowed

Consistency : the design must not be inconsistent. A design is allowed to be slightly less simple and less complete to avoid inconsistency. Consistency is as important as correctness.

Completeness : the design must cover as many importat situation as is practical. All resonably expected cases must be covered. Simplicity is not allowed to overly reduce completeness.

 

단순성 : 구현과 인터페이스 모두 단순해야 한다. 인터페이스의 단순함이 구현의 단순함보다 중요하다.

정확성 : 디자인은 측정할 수 있는 모든 면에서 옳아야 한다. 비정확성은 허용되지 않는다.

일관성 : 비일관적인 디자인은 무조건 피한다. 단순함과 완전성을 일부분 포기해 일관성을 유지하는 것을 허용한다. 일관성은 올바름 만큼 중요하다.

완전성 : 대부분 상황에 대처할 수 있어야 실용적인 디자인이다. 완전성을 크게 훼손하는 단순함은 허용되지 않는다.

Worse-is-better philosophy(Unix, C) aka. New Jersey style

Simplicity : the design must be simple, both in implementation and interface. Is is more important the implementation to be simple than the interface. Simplicity is the most important consideration in a design.

Correctness : the design must be correct in all observable aspects. It is silghtly better to be simple than correct.

Consistency : the design must not be overly inconsistent. Consistency can be sacrified for simplicity in some cases, but it is better to drop those parts of the design that deal with less common circumstances than to introduce either implementational comlexity or inconsistency.

Completeness : the design must cover as many important sitatuation as is practical. All reasonably expected cases should be covered. Completeness can be sacrificed in favor of any other quality. in fact, completeness must be sacrified whenever implementation simplicity is jeopardized. Consistency can be sacrified to achieve completeness if simplicity is retained; especially worthless is consistency of interface.

 

단순성 : 구현과 인터페이스 모두 단순해야 한다. 구현의 단순함이 인터페이스의 단순함보다 중요하다.

정확성 : 디자인은 측정할 수 있는 모든 면에서 옳아야 한다. 단순한 게 정확성보다 약간 더 중요하다.

일관성 : 비일관적인 디자인은 피한다. 단순함을 위해 일관성을 타협해도 되지만, 구현의 복잡성이나 비일관성을 도입하는 것보다 일반적이지 않은 상황에 대응해야 하는 디자인을 포기하는 것이 더 낫다.

완전성 : 현실적인 상황에 대처할 수 있어야 디자인이 좋다. 완전성은 다른 품질을 위해 희생될 수 있다. 사실, 구현의 단순성이 위태로워질 때마다 완전성을 희생해야 한다. 단순성이 유지되는 경우 완전성을 달성하기 위해 일관성을 희생할 수 있다. 특히 인터페이스의 일관성은 가치가 없다.

 

MIT Style : 올바르고 일관성이 있는 아름다운 디자인. 주어진 문제를 거의 완벽하게 풀어낸다. 단 구현이 어려울 수 있다. (Common Lisp/CLOS)

New Jersey Style : 심플하고 현실적인 디자인. 잘 작동하지 않는 예외 케이스가 많지만, 구현이 쉽다. (Unix/C)

 

가브리엘은 New Jersey Style은 MIT Style보다 생존력이 높아 소프트웨어 개발에 더 적합하다고 말한다. Unix/C는 당대 최고의 언어/운영체제는 아니었지만 구현이 간단해 여러 플랫폼에 포팅할 수 있었다. 대부분의 유저는 그 조합이 주는 기능에 만족했고 이 조합은 바이러스처럼 빠르게 퍼져나갔다.

 

예를 들어, 소프트웨어를 새 기계에 이식하는 것이 이 방법으로 훨씬 쉬워진다. 따라서 MIT 접근 방식을 사용하여 개발된 프로그램이 개발 및 배포될 기회를 갖기 훨씬 전에 그 사용이 빠르게 확산될 것이다. 일단 확산되면 기능을 개선해야 한다는 압력이 있을 것이지만, 사용자들은 이미 "옳은 것"보다는 "더 나쁜 것"을 받아들이도록 길들여졌다. 그래서 옳은 것으로 바꾸기 보다는 더 나쁜 것을 개선하는 방향을 선택할 것이다.

함께 읽으면 좋은 글

 

Rise of Worse Is Better

The Rise of Worse is Better Richard P. Gabriel Lucid, Inc {an excerpt from "Lisp: Good News, Bad News, How to Win Big." [html]} 2.1 The Rise of Worse is Better I and just about every designer of Common Lisp and CLOS has had extreme exposure to the MIT/Stan

www.dreamsongs.com

 

Worse is better - Wikipedia

From Wikipedia, the free encyclopedia Theory of software design Worse is better (also called the New Jersey style[1]) is a term conceived by Richard P. Gabriel in a 1989 essay[2] to describe the dynamics of software acceptance. It refers to the argument th

en.wikipedia.org

 

"Worse Is Better" 25 Years Later – Have We Gotten Lazy?

Worse-is-better only works when you understand the right-thing and can rationally choose a compromise.

spin.atomicobject.com

댓글