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:没错它是动画片。。

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

(完)

 

WD_20161111

 

从大川西回来的第一周,事情不是很多,基本上运营一些线上问题。十分值得欣慰的是,终于趁着这个迭代和CX同学把创意模块重构了,算是把以前的坑给补上了。写代码这件事情上,完全符合『勿以善小而不为,勿以恶小而为之』的道理。一个人一小点的欠考虑,则会让整个团队后期来为此买单。关于如何写『好』代码这件事,一千个码农可以写上一千本代码大全,但至少一点:把代码写的整洁是每个程序员应该追求的,这才无愧于『创造』二字。

这几天恢复了湾区日报的阅读,打印出来纸质上阅读,思考时瞬间产生的想法可以用碳素笔随时记录下来,再配上有道词典的陌生单词归档,这种『左手手机、右手笔』体验很赞,线上、线下完美打通。而且,早晨的时光适合读一些积极且富有深度的文章,这可以为充实高效的一天开一个好头。

哦,对了,这周还有一件大事发生:川普出乎所谓的大众主流观念,胜过希拉里,当选第45任美国总统。我想所有看过邮件门之后的旁观者大多都是会支持川普,原因则是:两害相权取其轻。至于我为什么突然关心起政治来,只能说有些东西虽然你不关心它,但是它会随时『关心』你。政治,科技,经济亦如此。

(完)