是计算机科学界经典的议论文,作者是Lisp和Emacs圈子里的名人Richard Gabriel,他也是ACM Fellow。正是起源于此,它的主要思想是:编程语言或者软件系统的简洁性(Worse,功能少+简单+实现容易)往往会比那些大而全、功能复杂的要好(Better)。
作者指出,软件设计中存在两种设计哲学:
- MIT/Stanford Style,做科学研究的风格,do the right things,完美大而全、一次正确,代表作品:Emacs、Common Lisp。
- New Jersey Style,做工程技术的风格,worse is better,先保持实现简单推出部分功能,而后在发展中迭代进化出更好更多的功能,代表作品:Unix和C语言。
这两种设计哲学之间的区别本质是学院派与实践派之争。
在讲二者的区别之前,先来看下作者提到的软件设计的四大原则:
- 简单性,Simplicity,软件设计必须简单,包括实现与接口。
- 正确性,Correctness,在解决问题的各个方面,软件设计必须正确。
- 一致性,Consistency,软件设计不能前后矛盾不一致。
- 完备性,Completeness,软件设计必须要尽可能多地覆盖事件中的重要场景。
MIT Style与New Jersey Style设计风格的区别仅在于对待这四项原则的优先级与重要程度不同。
- MIT Style:正确性/一致性 》 完整性 》简单(接口》实现)。
- New Jersey Style:简单(实现》接口)》正确性 》完整性 》一致性。
Worse is Better 哲学(New Jersey Style)中:实现简单具有最高优先级。 开始只有简单才有利于其快速传播,传播开来后逐渐优化并增加更多功能。要做到『Win』,总结起来可以分为下面三个步骤
- First:获得用户认可接受
- Second:让用户保持少的期待
- Third:持续改进接近the right thing
正如原文所言:
The lesson to be learned from this is that it is often undesirable to go for the right thing first. It is better to get half of the right thing available so that it spreads like a virus. Once people area hooked on it, take the time to improve it to 90% of the right thing.
注:由于用词(Worse)比较激进(按照作者的话说来,他采用worse一词是夸张的手法,为的是引起人们对这种观点的重视,但『话糙理不糙』),这篇论文在当时引起了业界不少反对的声音,也激起了关于更好地的软件设计风格的讨论。
后续:由于这篇论文在当时影响甚广,已经出现了很多对作者本意有误解、曲解(不要觉得外媒就不会有标题党。。)的评论,同时人的想法也不是一成不变的,都在不断的学习、进步,观点也在不断修正,作者对待worse is better思想的看法也渐渐发生了一些改变(本质上是优化了),所以讨论一直存在。下一篇将介绍下:Worse Is Better思想的发展史,这里先占个位。