Worse Is Better思想的发展史

从历史的发展的角度看问题才能接近问题的真相。

本文主要翻译自Richard P. Gabriel对于Worse is Better思想发展的自述。

原文链接:http://www.dreamsongs.com/WorseIsBetter.html

下面基本为原文的翻译,只是根据时间节点选取了较为关键的节点。文中的『我』皆指作者Richard本人。如果是本文的观点则会添加上『译者注』字样。

1984-1994年我经营了一家叫做Lucid的Lisp公司。(译者注:Lisp是一门函数式编程语言,著名的Hacknews网站就是用它编写的)

1989年,很明显的是Lisp的生意并不是很成功,部分原因是很多AI(译者注:全称Artificial Intelligence,人工智能)公司举步维艰,其他则是因为那些AI公司开始将他们的失败归咎于Lisp及其实现。

1989年春,我和一群黑客坐在Lucid的拱门处闲聊,有人问我为什么我认为人们相信C和Unix比Lisp更好,我开玩笑的说到:因为Worse is Better呀。当时大家哄堂大笑,然后我试着关于『为什么一些蹩脚的事情可能是好的』做出了一些解释。

1989年夏(几个月后),一场小型的欧洲Lisp应用程序大会邀请我做一个演讲,可能是因为Lucid是当时优秀的Lisp公司。当时的演讲题目是:Lisp:Good News,Bad News,How to win Big。其中第二部分第一小结的主题便是:the rise of worse is better

1990年3月,我在剑桥大学也做了一场这样的演讲,当时会场引起了一些批评之声。那时的互联网还是刚刚起步,传播速度还比较慢,所以并没有引起什么轩然大波。

1991年,公司雇了一个叫做Jamie Zawinski的年轻男孩,不到20岁的他被Scott Fahlman(译者注:Scott Fahlman是Lucid联合创始人,卡内基梅隆大学计算机科学家,被公认为Common Lisp业内领袖)高度赞扬,我们都叫他小孩。他当时并无恶意,只是查阅一些相关同事的资料,然后看到了我的EuroPAL会议的论文,然后他把Worse is Better的这些想法发送给了Richard Stallman(译者注:Richard Stallman是GNU工程的发起者以及自由软件基金会的创立者,著名黑客,神一样的人物…)。而且JWZ还将论文的Worse is Better部分加密发送给了他在CMU的朋友,而他们又将它发给了他们在贝尔实验室的朋友,后者有发给了他们的朋友….(译者注:如果那会儿有朋友圈,那绝对是「爆款」的典范)

不久后,我收到了十几封请求论文稿件的邮件。有几家大公司(其中有DEC、HP和IBM)要求我授权这篇论文作为他们软件工程思想的一部分。

1991年7月,AI Expert杂志重新出版了我的论文,在美国获得了大量的订阅。

1991年冬,我用化名(Nicolas Bourbaki)写了一篇名为Worse Is Better Is Worse的论文,这篇论文是以模仿我的发小和同事的口吻写的,在文章中批评了我自己的观点,并试图站在朋友道义的角度上,纠正自己的思想。

1992年秋,我在面向对象编程期刊(JOOP)出版了一篇反驳性社论文章:Is Worse Really Better,改编自我的Worse Is Better Is Worse论文。由于之前我让公司同事review过初稿,所以他们有点担心来自业界的非议,其中有一位同事非常不安,深怕我患上了精神病….

九十年代中期,我成为了一名管理咨询顾问,开始对worse is better为什么有效果很感兴趣,于是我阅读了很多经济学与生物学书籍,试着去理解经济系统中发生的进化。后来,将大部分学习到的这方面知识汇集到了一次presentation的keynote上,名字叫做:Software Acceptance:How Winners Win。另外一部分则加到了我的论文书籍,Patterns of Software: Tales from the Software Community,作为其中一个章节:Money Through Innovation Reconsiderd

你可能会想,经过十年的思考与讲演,不断的推到重来不断的更新进化,我对worse is better的观点已经毋庸置疑了(译者注:作者写这篇文章是2000年)。其实不然…,在2000年的OOPSLA(面向对象技术的高峰会议)年度会议上,我安排在一个名为『Back to the Future: Is Worse (still) Better ?』的专门小组(panel),准备期间,panel的组织者Martine Devos让我起草一篇意见书(position paper),于是我写了一篇公然反对的worse is better思想的短文:Back to the Future: Is Worse (still) Better

但是几个月后,我又写了一篇:Back to the Future:Worse (still) is Better!用于支持worse is better的观点。是的,我仍无法决定。于是Martine把这两篇短文合成了一份,作为panel的意见书。按照例行,panel的讨论期间出席者通常会从worse is better的支持方转向会议桌的另一侧:反对方。那天早上我坐在观众席上,几乎也是声嘶力竭的和他们撕逼。我想正是因为大家对于『Worse is Better』的冒险精神、开明以及反驳的态度,才使得优秀成为可能(译者注:此句翻译较为笨拙,为不丢失原意,这里给出原文:risk-taking and a willingness to open one’s eyes to new possibilities and a rejection of worse-is-better make an environment where excellence is possible)。

翻译完。

看完这些你可能会觉得作者Richard作为一名技术圈内名人,思想竟是如此摇摆不定。但我却深深地被他对于技术的严谨与对真理的孜孜追求所感动。其实每一次思想的转变不是对上一次的否定,而是经过思考、学习之后的更新优化,是更进一步。为了更加接近真理,他丝毫不顾所谓的「面子」,毫不犹豫的反对自己过去的观点,如此做学问的心态值得学习。

(完)

The Rise of Worse Is Better 论文-学习笔记

《The Rise of Worse Is Better》是计算机科学界经典的议论文,作者是Lisp和Emacs圈子里的名人Richard Gabriel,他也是ACM Fellow。Worse Is Better软件思想正是起源于此,它的主要思想是:编程语言或者软件系统的简洁性(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.

这是不是与YC创投公司的理念如出一辙?

:由于用词(Worse)比较激进(按照作者的话说来,他采用worse一词是夸张的手法,为的是引起人们对这种观点的重视,但『话糙理不糙』),这篇论文在当时引起了业界不少反对的声音,也激起了关于更好地的软件设计风格的讨论。

后续:由于这篇论文在当时影响甚广,已经出现了很多对作者本意有误解、曲解(不要觉得外媒就不会有标题党。。)的评论,同时人的想法也不是一成不变的,都在不断的学习、进步,观点也在不断修正,作者对待worse is better思想的看法也发送了一些改变(本质上是优化了),所以讨论一直存在。详细内容可见:Worse Is Better思想的发展史 一文。

(完)

 

勿以恶小而为之,勿以善小而不为

我也知道这是老生常谈了。然则谈是一回事,行又是一回事。按照王阳明的说法『知而不行不知也』。如何把这些至理名言根植于自己的日常行动中用于提高自己才是值得做的。如果把人比作一台智能机器,那么这些准则就是计算机的输入,依照准则的行动即是输出。

1 勿以恶小而为之

一些不好的思想、行为,哪怕只是一点点不好,都应该毫无理由地摒弃。若已为恶,则应该尽可能地减少这种『恶』。

虽然都是迟到,但迟到5分钟总比迟到10分钟要好。

虽然都是不及格,但50分总比40分要好。

虽然做了对不起的事,但道歉总比不道歉要好。

虽然都是熬夜晚睡,但11点40分总比11点50分要好。

虽然都是玩手机,但是坐着玩总比躺着玩要好….

……

2 勿以善小而不为

一些好的思想、行动,哪怕只是一点点善,都应该义无反顾的坚持。若已为善,则应该尽可能地增加这种『善』

如果比昨天多早起1分钟,那么总的学习时间总是会多1分钟。

如果比昨天多写一行代码,那么总的代码数总是会多那么一行。

如果比昨天多微笑一点,那么过去总的快乐时光总是多那么一点。

如果比昨天多学一个单词,那么总的单词量总会多那么一个。

如果比昨天多读一页书,那么总的阅读量总会多那么一页。

……

不和别人比,只和过去的自己比,每天进步一点点,足矣。

如此正反两个方面持之以恒,则朽木借可雕也。

(完)

思考之锚

锚,对每个人来说并不陌生,是一种铁制的停船器具,用铁链连在船上,抛在水底或岸上,可以使船停稳。即锚使得水上漂浮不定的船只可以有个着力点,从而稳定下来,所以船只靠岸时均需要抛锚。

如果将漂泊的船寻找稳定的停靠比作是思考问题寻求解决方案,即可知:思考问题也一样,在找到最终的答案之前,必须有个清晰明确的着力处 – 锚。而后一切的思考内容、判断依据、决策制定、行动方针均是围绕这个『锚』为中心来展开,它是中心目标,指明方向。

随着一个人的不断成长、学习、经历,环境会潜移默化地在他心中抛下一个『锚』。这是他思想的武器,是他行动的指南。

有的人的思考之锚是道德,那么每当遇到问题时,他则会占领道德的制高点,然后据此居高临下开始道德判决:一切符合道德观念的都是正确的或应该的;一切有悖道德的都是错误的或不应该的。此类的极端表现便是道德婊。

有的人的思考之锚是理性,客观规律与科学依据是他思考的唯一武器,任何事情须以事实为基础,以数据为支撑,如果有个数学公式的证明那就再好不过了。他们仿佛没有情感亦无需情感,赛先生是唯一的信仰,他们始终相信自己掌握着绝对真理,一切违反于此的皆愚昧之不可救药。

还有的人的思考之锚是利益,唯利是图是他最大的动力。小孩子才分对错,他们只讲利益,在他们看来,没有永远的朋友只有永远的利益。当获利成为唯一目标,其他任何必要时皆可成为一种手段。与道德婊比起来,利益婊们通常讲究的是『闷声发大财』。虽然可能为他人所不屑,甚至会遭遇误解,但是现实中他们似乎总能赢。

当然,以上三种类型都是人性的极端表现,我们每个人或多或少三者皆有之,只是程度不一。如果把这三种思考之锚比作是三角形的三个顶点的话,那么人的思考范围即为三角形的面积之和,而实际的思考之锚终将抛向何处,不同的场景不同的人可能有不同的回答。

(完)

解决问题的两种方法

开门见山,先给论点。

解决问题无外乎两种途径:真正解决与治愈人心。

任何理性存在的客观事物一旦融入了人的因素即会变得不再客观或者说不再纯粹的客观。我们每天遇到的亟需解决的问题归根结底还是与人有关的问题。所以,在遇到问题寻求解决办法的时候大体有两个方向可寻:一真正地解决问题 – 治本,二让人们感受到解决了问题 – 治标。前者是彻底把问题解决,理论上该问题不会再出现了,“解决”二子受之无愧;后者表现效果上看似解决了问题,本质上并没有解决问题只是暂时将问题缓解,让遇到问题的人情绪上得到宽慰,并以为问题得到了解决,但其实问题还在,这类似于心灵鸡汤式的治愈。

虽然治愈式的处理问题并没有真正解决问题的根源,但是它可以让抚慰人心,让人们遇到问题需要解决的时候,有所寄托,所以其不失为一种有效的解决问题的方法。有些问题可以解决有些问题却只能治愈。因为现实生活中并不是所有的问题都能得到解决,也并不是所有问题都需要得到解决,这时候就需要治愈,不高明但有效。

这里可以举两颗栗子:

场景1:当女朋友向你抱怨她所遇到的问题时,你第一时间千万别想着怎么解决她的问题,而是耐心认真地倾听,然后再温柔地抚慰,这应该她所需要的。因为女生很多时候要的是情绪的表达,而并不是解决问题,所以作为木讷的理工男,此处需要时刻牢记务必将平日里『解决问题式的』思维方式切换成『治愈式』模式。想想网上那些拥有太多逻辑漏洞、思维陷进、三观不正的文章为什么还能成为热文,让大家竞相追捧,实乃情感共鸣引起的心灵治愈(如逻辑思维、咪蒙等),这其实是一种治愈式解决问题的极端:它甚至对问题没有起到缓解作用,完全是情感的宣泄。固然人们需要给内心深处积蓄的情感一个出口,但本质上是这会让懒于思考的我们陷入一种幻觉或落入一种人性的思维陷进。不可长久,属于下下策,长远看来,无益于进步而有害。这里仅用于说明治愈对于人心的巨大作用。

场景2:作为一名码农,每天需要编程解决各种各样的业务问题。所以必然有某些问题无法及时得到解决,这会不妨采用治愈式的解决办法,至少达到一种解决的效果,为真正解决问题赢取更多的时间(具体例子详见:解决问题的另一种方法)。

当然,治愈式地解决问题,也有其明显的缺点:容易本末倒置。

比如,很多创业公司一旦上市,极大可能地转变为完全KPI驱动的商业公司,从而丧失成为一家伟大公司的可能性,美其名曰:市场经济。其实是一种短视。这会让创业过程中积累起来的解决问题的激情、提供美好服务的愿景慢慢消磨殆尽。不可否认,资本市场,逐利是第一要义。但利是结果,不是原因,更不是初衷。哦对了,不排除一心只为赚钱的『创业』,只是我会把这类活动叫做是做买卖而不是创业。

试想,公司为什么能赚钱?必然是满足了人们某种需求向人们提供了某种服务归根结底是解决了人们遇到的某种问题。所以想要继续赚钱或赚更多的钱那么怎么办向用户提供更好的服务而不是完成KPI,增加收入这个治愈性的目的。当一家公司向用户提供了更加优质的服务,其必然会获得丰厚的盈利。这类似于一个人如果一味地追求成功那么他则难以大成;『如果他始终追求卓越,那么成功自然会追随者他』。

总结一下,解决问题大致可以诉诸于两种途径:真正解决当前问题和治愈当前遇到问题的人心。当遇到问题时,可以采取前者,可以采取后者,也可以二者并用之(一般是先治愈后解决),至于采用何种策略,具体场景具体分析。策略的灵活之处便在于可以因时、因地制宜。

(完)

 

解决问题的另一种方法

通常遇到问题要探究其原因找到原因后对症下药即可药到病除。

不过今天get到了另一种解决问题的思路从目标效果出发可寻找达到同一效果的其他解决方法当满足了效果时把整个问题系统看成是黑盒的话也即是解决了问题。这种技能特别适用于短时间无法定位到问题的真正原因的情况不妨称之为有损解决方案。不高明但是有效果。

举个?

比如你要看个好莱坞大片但是电脑里的百度影音找不到匹配的字幕网上搜了一圈后仍未果。此时不妨换个播放器下载一个QQ影音自动匹配在线匹配字幕完美解决。

当然如果你对百度影音为什么找不到你想要的字幕或者对字幕查找感兴趣完全可以在看片这个紧急需求之后再详细研究。

再来一颗?

如何让运动的物体静止下来

至少有三种方法

1.让它的速度为零

2.让它的运动频率超过你眼睛的最大分辨率

3.让它和你保持同样的速度

此文写于2015年5月26日。当时苦于一业务问题无法找到解决办法,而后受到Bug同学的启发所著。今天又思考到与此相关的问题,所以有必要记录一下,方便链接与查阅。

(完)

执念的心

分崩离析的碎片

外界纷杂

内心欲波澜不惊

重复的亏欠

却不停的复现

时间的流

西去东又来

过往的线

有始却无终

明日犹可恋

明日何其多

明日如昨日

不再见

(完)

 

 

WD_20161120

工作

流量漏斗:一个N久木有被关注的项目,这周突然『诈尸』了。好几个老大和产品经理都开始关注了起来。原来是高层Boss:SY问到了有关漏斗损耗率偏高的问题。流量漏斗是工作后接手的第一个项目,一直陆陆续续维护到现在。由于在我之前已经经过好几任码农前辈了,最早的代码更新可追溯到2013年。一个软件系统的生命周期也就3-5年,可想而知,每一次的需求变更,都放佛是一次『戴着镣铐起舞』。中途由于实在无法忍受,后端逻辑局部重构过一次。现在想想,多亏了那一次的重构,否则这次的改动便又是一次『刻骨铭心』。通过这次的经历更加佐证了以前的观点:面对丑陋的代码,要嫉恶如仇,需除之而后快。所谓『出来混,迟早是要还的』,在项目迭代的过程中,尽量远离Technology debt。否则日积月累,如履薄冰。

ACE:由于这周有一半的时间花在了突如其来的流量漏斗上,ACE这周的进度算是拉下了一小点,所幸在可控范围内。待下周的改单需求一并开发完毕之后,后期的迭代则可以专注于网站运营。坚信:只要大家一起如此认真地思考需求、产品与开发之道,事情只会越来越好。

阳明心学

钱穆的《阳明学述要》已读3/4,第一次读钱穆大师的作品,如沐春风。在第一章里简短的一两句话就把整个宋学讨论的问题概括了出来:『大体扼要地说来,宋代学者所热烈讨论的问题,不外两部:一部是属于本体论(万物一体),一部属于修养论(变化气质)』,关于『万物一体』,又总结到『说要万物一体,只有三种说法,一是惟神论,一是惟物论,意识惟心论』,最后把这三种又对应到三个学科:宗教、科学与哲学。这种既能通晓细节又有宏观大局之人真乃大师也。读大师的作品思路十分清晰,不一定是书的内容本身,大多数时候受益最多的是那些内容反映出来的大师的分析、归纳、思考问题的方式和角度。见贤思齐,关于钱穆本人的求学史,也是有必要读一读。

《梁启超讲阳明心学》,已读1/4,又是一部大师的作品,这是一位敢言的大师。书中,梁启超对于朱子的评价是:『一是泛滥无归宿;而是空伪无实著』,即不着调,假大空。一个读书人敢于对一代圣人如此评价,我想所有未了解朱学的人都会想:这…梁启超未免有些极端。但书中有论点有论据,无不让人信服。在这里也解决了长久以来一个困惑自己很多年的问题,嗯得单独写一篇这种久久寻觅不得苦苦挣扎而后偶然豁然开朗的心里路程:)

董平教授的《传奇王阳明》,利用空闲碎片化时间已基本听完。感觉讲的一般,既无评书般跌宕起伏、惊心动魄,也无史书般事实记述、逻辑因果环环相扣。总之,讲课高中语文老师相当。能上百家讲坛,才学必然是有的,已经不止一次碰到满肚子学问却难以『脱口而出』的人了。像易中天那种才学与口才兼备的是属稀少,但值得追求。

技术学习

HTTP Session短篇陆陆续续写完了前两章,这种需要长时间不被打断的安静环境,也只能放到周末来写,好在这周的效率比上周高,这可能得益于英语的阅读速度的一点点提升。不求日行千里,但求日拱一卒。

(完)

尝试一次有意思的实践

午睡醒来,脑中突然蹦出来一个人名:王阳明。

莫来由。

可能是以前在群里被安利太多,也可能是长久之来之焦虑而迫切需要一个解决之道。

CC聊到最近学习的人格心理学,便与我安利之。

而我对那种一板一眼的学术著作并无太多兴趣,于是我信誓旦旦说道:我要读王阳明。

这次与以往读书不同,计划实践一下垂直阅读法,看看效果。

所谓垂直阅读法:即同一个时间段内只专注阅读某一主题(如阳明心学)。

全面收集该主题资料如下

  • 书:钱穆之《阳明学述要》,日本宋明理学大师冈田武彦之《王阳明大传:知行合一的心学智慧(全三册)》,杜维明之《青年王阳明:行动中的儒家思想》,《梁启超讲阳明心学》。
  • 有声小说:百家讲坛之《传奇王阳明》By 董平教授。
  • 动画片:《少年王阳明》,ps:没错它是动画片。。

粮草已备齐,剩下的就是很简单了:读之,听之,复述之。

(完)