《黑客与画家》读书笔记

黑客与画家

0. 译者序

《黑客:计算机革命的英雄》中提出的6条黑客价值观

  1. 使用计算机以及所有有助于了解这个世界本质的事物都不应受到任何限制。任何事情都应该亲手尝试。
  2. 信息应该全部免费。
  3. 不信任权威,提倡去中心化。
  4. 判断一名黑客的水平应该看他的技术能力,而不是看他的学历、年龄或地位等其他标准。
  5. 你可以用计算机创造美和艺术。
  6. 计算机使生活更美好。

根据这六条“黑客伦理”,黑客价值观的核心原则可以概括成这样几点:分享、开放、民主、计算机的自由使用、进步

1. 为什么书呆子不受欢迎

  1. 高智商的人不一定受欢迎,原因更多是他们不想让自己受欢迎

    我后来认识很多人,读书的时候都被称为书呆子。从他们身上我发现,“书呆子”与“高智商”有强烈的正相关关系。而这些人在中学里都是不受欢迎的学生,你越喜欢读书,就越不受别人的欢迎,因此“书呆子”和“受欢迎”之间,有一种更强烈的负相关关系。这样看来,“髙智商”似乎导致了你不受欢迎。如果智力本身与“受欢迎”无关,为什么聪明的小孩一直不受同龄人的欢迎呢?我认为,答案就是他们真的不想让自己受欢迎。

2. 黑客与画家

  1. 黑客是去创造规格,而不仅仅是实现某种规格

    当然,“做什么”和“怎么做”不应该分得太开。如果你决定做一件事,却不知道怎么做,你就是在自找麻烦。但是,只是单纯地决定如何实现某种规格,那肯定不是黑客。黑客的最髙境界是创造规格。虽然看起来,做到这一点的最好方法就是先做出一个样品把规格实现了。

  2. 创造优美的事物更多的是改造旧有的事物,而其成败与否需要相当长时间的考验

    创造优美事物的方式往往不是从头做起,而是在现有成果的基础上做一些小小的调整,或者将已有的观点用比较新的方式组合起来。这种类型的工作很难用研究性的论文表达。

    唯一有效的外部考核就是时间。经过岁月的洗礼,优美的东西生存发展的机会更大,丑陋的东西往往会被淘汰。不幸的是,这种考核需要的时间可能比一个人的生命还要长。塞缪尔·约翰逊说过,人们对一个作家的评价,需要100年才能达成一致。你必须先等他的那些有影响力的朋友都死了,然后再等他的追随者都死了,才能对他有一个公正的评价。

  3. 黑客应该使用一种可以随时涂抹的动态语言

    明白这一点对软件设计有重大影响。它意味着,编程语言首要的特性应该是允许动态扩展(malleable)。编程语言是用来帮助思考程序的,而不是用来表达你已经想好的程序。它应该是一支铅笔,而不是一支钢笔。如果大家都像学校教的那样编程,那么静态类型(static typing)是一个不错的槪念。但是,我认识的黑客,没有一个人喜欢用静态类型语言编程。我们需要的是一种可以随意涂抹、擦擦改改的语言,我们不想正襟危坐,把一个盛满各种变量类型的茶杯,小心翼翼放在自己的膝盖上,为了与一丝不苟的编译器大婶交谈,努力地挑选词语,确保变量类型匹配,好让自己显得礼貌又周到。

  4. 不要有对数学家的心存妒忌,其实自己从事的是同数学不相干的事

    如果黑客认识到自己与其他创作者——比如作家和画家——是一类人,这种诱惑对他就不起作用。作家和画家没有“对数学家的妒忌”,他们认为自己在从事与数学完全不相关的事情。我认为,黑客也是如此。

  5. 大公司不会将软件设计的工作交给黑客

    这似乎是大公司的普遍情况。大公司这样安排的原因是为了减少结果的标准差。因为实际上只有很少一部分黑客懂得如何正确设计软件,公司的管理层很难正确识别到底应该把设计软件的任务交给谁。所以,大部分公司不把设计软件的职责交给一个优秀的黑客,而是交给一个委员会,黑客的作用仅仅是实现那个委员会的设计。

  6. 小公司通过在新兴领域的突破战胜大公司

    真正竞争软件设计的战场是新兴领域的市场,这里还没有人建立过防御工事。只要你能做出大胆的设计,由一个人或一批人同时负责设计和实现产品,你就能在这里战胜大公司。微软公司自己一开始就是这样走向成功的,苹果公司和惠普公司也是如此。我觉得几乎所有的创业公司都是这样取得成功的。

  7. 一名黑客应该有赚钱工作和爱好工作

    黑客如何才能做自己喜欢的事情?我认为这个问题的解决方法是一个几乎所有创作者都知道的方法:找一份养家糊口的“白天工作”(day job)。这个词是从音乐家身上来的,他们晚上表演音乐,所以白天可以找一份其他工作。更一般地说,“白天工作”的意思是,你有一份为了赚钱的工作,还有一份为了爱好的工作。

  8. 定期重新开始才会不断得到洗礼

    也许对于黑客来说,采取像画家这样的做法很有好处:应该定期地从头开始,而不要长年累月地在一个项目上不断工作,并且试图把所有的最新想法都以修订版的形式包括进去。

  9. 类似画家临摹,黑客也需要通过实践和模仿学习编程

    黑客通过实践学习编程,这又是一个标志,说明黑客与科学家的区别有多大。科学家就不会通过干活来学习科学,而是通过做>实验和解题来学习。科学家研究的基础都是现有的很完美的成果,在这个意义上,他们的第一步只是在复制别人已经做过的工作。最后,他们才会从某一个点开始,进行自己的原创性工作。但是,黑客就不一样,从一幵始做的就是原创性工作,根本没有他人完美的成果可以依靠。所以,黑客的出发点是原创,最终得到一个优美的结果;而科学家的出发点是别人优美的结果,最终得到原创性。

    同样地,黑客可以通过观看优秀的程序学会编程,不是看它们的执行结果,而是看它们的源代码。开源运动最鲜为人知的优点之一,就是使得学习编程变得更容易了。

  10. 不要过早设计,先实现功能再逐步优化

    我认为黑客也应该这样工作。你不能盼望先有一个完美的规格设计,然后再动手编程,这样想是不现实的。如果你预先承认规格设计是不完美的,在编程的时候,就可以根据需要当场修改规格,最终会有一个更好的结果。眼下想必每个人都知道,过早优化(premature optimization)是一件危险的事情。我认为,我们应该对“过早设计”(premature design)也抱有同样的担忧,不要太早决定一个程序应该怎么做。

  11. 黑客代码的每一个细节都是精心制作的

    同样地,优秀的软件也要求对美的狂热追求。如果你查看优秀软件的内部,就会发现那些预料中没有人会看见的部分也是优美的。

  12. 工作都有工作周期,应当适时调整

    黑客就像画家,工作起来是有心理周期的。有时候,你有了一个令人兴奋的新项目,你会愿意为它一天工作16个小时。等过了这一阵,你又会觉得百无聊赖,对所有事情都提不起兴趣。

  13. 合作也要分工明确

    我认为,这也是多人共同开发一个软件的正确模式。需要合作,但是不要“合”得过头。如果一个代码块由三四个人共同开发,就没有人真正“拥有”这块代码。最终,它就会变得像一个公用杂物间,没人管理,又脏又乱,到处堆满了冗余代码。正确的合作方法是将项目分割成严格定义的模块,每一个模块由一个人明确负责。模块与模块之间的接口经过精心设计,如果可能的话,最好把文档说明写得像编程语言规范那样清晰。

  14. 站在用户的角度设计

    就像绘画作品一样,大多数软件是为人类用户准备的。所以,黑客必须像画家一样,时刻考虑到用户的人性需要,这样才能做出伟大的产品。你必须能够站在用户的角度思考问题,也就是说你必须学会“换位思考”。

5.另一条路(互联网应用是大势所趋)

  1. 互联网应用比桌面应用更为便捷

    现在,可以有另一种方法发布软件,用户再也不会被迫当上系统管理员了。互联网软件运行在服务器上,用户界面就是网页。对于普通用户来说,使用这种新型软件将更容易、更便宜、更机动、更可靠,通常也比桌面软件更强大。

  2. 数据应该保存在服务器上

    终端设备不应该存储数据,它们应该像电话那样。事实上,终端设备最后可能就会变成电话,或者反过来,电话变成终端设备。终端越做越小后,你可以每天把它带在身上,就更没理由把数据存储在上面了,万一遗失或者被窃就很麻烦。

  3. 服务器可以自由配置硬件和选择编程语言

    只要你控制了硬件,就能为用户提供更多的功能。如果你的产品是桌面软件,你就只能规定硬件的最低配置,无法为了某一个功能而要求用户增加硬件。但是,如果你控制了服务器,你就能轻而易举地增加功能,使用户可以发出寻呼、发送传真、通过电话操作网站、使用信用卡付款等。你所需要做的只是安装相关的硬件。

    对于互联网软件,没人规定只能使用某些语言开发,因为所有的硬件都控制在你手里,你想要用什么语言,就能用什么语言。不同的语言适合不同的任务,你应该根据不同场合,挑选最合适的工具。尤其是在竞争者存在的情况下,“可以这样做”就变成了“必须这样做”,因为如果你不利用语言的优势,那就会听任对手超过你。

  4. 互联网软件可以及时更新

    对于互联网软件来说,大部分的变化都是细微和渐进的,所以引入bug的机会比较小。而且,在发布前测试的时候,你知道应该最仔细地测试哪个部分——显然就是你修改过的部分。

    互联网软件的发布规则是:它运行不了,你就无法发布;一且它能运行了,你就可以立刻发布。

  5. 自动侦测错误并快速解决

    互联网软件的另一个技术优势在于,你能再现大部分的bug。用户的数据都在你的硬盘上。如果某个用户使用软件时出错了,你就不必像开发桌面软件那样苦苦猜测到底发生了什么事情。一般来说,只要用户通过电话向你描述一番,你就能把问题再现出来。如果你的程序中有自动侦测错误的代码,那么不用等到用户找上门,你可能已经知道哪里出错了。

    早一点发现bug就不容易形成复合式bug,也就是互相影响的两个bug。举例来说,一个bug是楼梯很滑,另一个bug是扶手松了,那么只有当这两个bug互相作用时,才会导致你从楼梯上摔下来。在软件中,复合式bug是最难发现的bug,往往也会导致最大的损失^。传统的方法是:“把软件彻底拆开,将所有bug统统清理干净。”这样做难免产生一大堆的复合式bug。如果软件是经常性发布,每次只有小幅度的变化,那么就不容易产生复合式bug。

  6. 互联网软件可以及时获得客户的反馈

    Viaweb不是这样。我们的客户支持是免费的,因为我们希望知道用户的反应。如果他们使用时遇到困难,我们希望立刻知道,这样就能再现错误、解决问题、发布新版本。

  7. 全身心投入

    如果软件的新版本要等到一年后才能发布,我就会把大部分新构思束之高阁,至少过上一段时间再来考虑。但是,构思这种东西有一个特点,那就是它会导致更多的构思。你有没有注意过,坐下来写东西的时候,一半的构思是写作时产生的?软件也是这样。实现某个构思,会带来更多的构思。所以,将一个构思束之高阁,不仅意味着延迟它的实现,还意味着延迟所有在实现过程中激发的构思。事实上,将一个构思束之高阁,甚至会限制新构思的产生。因为你看一眼堆放在一边、还没有实现的构思,就会想“我已经为下一个版本准备了很多新东西要实现了”,你就懒得再思考更多的新功能了。

  8. 逆向《人月神话》

    《人月神话》(The Mythical Man-Month)是布鲁克斯(Frederick Brooks)所写的一本软件项目管理名著。所谓“人月”就是一个人在一个月内所能完成的工作量。假如某个项目预估需要12个人月,那么派4个人处理这个项目,理论上需要3个月,派6个人则只需要2个月。但是,布鲁克斯认为这种换算机制在软件业行不通,是一个神话,因为软件项目是交互关系复杂的工作,需要大量的沟通成本,人力的增加会使沟通成本急剧上升,反而无法达到缩短工期的目的。在本质上,软件项目的人力与工期是无法互换的,当项目进度落后时,光靠增加人力到该项目中,并不会加快进度,反而有可能使进度更加延后。

    开发软件需要的程序员人数减少,不仅意味着省下更多的钱。正如《人月神话》一书中所指出的,向一个项目增加人手,往往会拖慢项目进程。随着参与人数的增加,人与人之间需要的沟通呈现指数式增长。人数越来越多,开会讨论各个部分如何协同工作所需的时间越来越长,无法预见的互相影响越多越大,产生的bug也越多越多。幸运的是,这个过程的逆向也成立:人数越来越少,软件开发的效率将指数式增长。我不记得我们在Viaweb开过讨论如何编程的会议。步行去吃午饭的路上,我们就能把该说的话说完,从来没有例外。

  9. 关注用户

    因为你能得到用户数据,所以就不用依赖基准测试了。基准测试不过是在模拟用户,而你现在能看到真实的用户。你想知道应该优化什么地方,那就登录到服务器,看看什么程序最消耗CPU。

    最后,通过关注用户,你可以知道他们在使用软件的过程中什么时候遇到了麻烦。因为顾客总是对的,所以这表明你需要修正软件。

  10. 应该使用订阅的方式来收费,并且盗版也不一定是一种坏处

    20世纪90年代早期,我读过一篇文章,它称应该让用户像订报纸那样按照使用时间长短订购软件的使用权。第一眼看上去,这种说话好像很滑稽。但是后来,我意识到这个观点是对的,因为它反映了软件开发的现实:软件开发不是静态的,而是一个持续不断的动态过程。按照传统的软件销售模式,厂商每推出一个新版本,就会强迫现有用户重新出钱购买,然后安装升级,只有这样厂商才能持续不断获得收入。我认为,如果公开收取软件的订阅费,而不是让用户购买软件的所有权,操作起来会更自然、更简便。“订报纸模式”正是互联网软件天然的收费模式。互联网软件不可能用自由软件的模式经营,只能由商业性公司来经营。因为经营互联网软件要承担很大的风险,会产生大量支出,没有人会免费做这件事情的。

    没有盗版是一种“优势”,但也是一个问题。一定数量的盗版对软件公司是有好处的。不管你的软件定价多少,有些用户永远都不会购买。如果这样的用户使用盗版,你并没有任何损失。事实上,你反而赚到了,因为你的软件现在多了一个用户,市场影响力就更大了一些,而这个用户可能毕业以后就会出钱购买你的软件。

6. 如何创造财富

  1. 创造的财富越多,所受的痛苦也会越多

    从经济学观点看,你可以把创业想象成一个压缩过程,你的所有工作年份被压缩成了短短几年。你不再是低强度地工作四十年,而是以极限强度工作四年。在高技术领域,这种压缩的回报尤其丰厚,工作效率越高,额外报酬就越高。

    创业公司不是变魔术。它们无法改变创造财富的法则,它们只是代表了财富创造曲线远端上的一点。这里有一个守恒定律:如果你想赚100万美元,就不得不忍受相当于100万美元的痛苦。

  2. 运气的成分

    任何公司的成功历程中,运气都是一个很大的随机因素。那些你在报纸上读到的成功人士固然很聪明,很努力,但是他们的运气也不坏。

  3. 金钱不等于财富

    创造有价值的东西就是创造财富。你最好先搞清楚什么是财富。财富与金钱并不是同义词。财富存在的时间与人类历史一样长久,甚至更长久,事实上蚂蚁也拥有财富。金钱是一种历史相对较短的发明。

    金钱是专业化的副产品。在一个高度分工的社会,你需要的大部分产品无法自己制造。你需要土豆、铅笔、住房以及别的东西,你不得不让别人来提供。

  4. 大饼谬论

    这里令人混淆的地方就是金钱有其抽象含义的一面。金钱不是财富,而只是我们用来转移财富所有权的东西。所以,虽然在某些特定的情况下(比如某个家庭当月的收入),你能用来与他人交换的金钱数量是固定不变的,但是大多数情况下,世界上可供交换的财富不是一个恒定不变的量。人类历史上的财富一直在不停地增长和毁灭(总体上看是净增长)。假设你拥有一辆老爷车,你可以不去管它,在家中悠闲度日,也可以自己动手把它修葺一新。这样做的话,你就创造了财富。世界上因为多了一辆修葺一新的车,财富就变得更多了一点,对你尤其是如此。这可不是隐喻的用法,如果你把车卖了,你得到的卖车款就比以前更多。

  5. 手工艺人是创造财富的人

    最可能明白财富能被创造出来的人就是那些善于制作东西的人,也就是手工艺人。他们做出来的东西直接放在商店里卖。但是,随着工业化时代的来临,手工艺人越来越少。目前还存在的最大的手工艺人群体就是程序员。

    创造出来的财富不一定非要通过出售实现价值。至少直到最近,科学家一直在把他们创造的财富真正地捐献给社会。青霉素的发现使得我们所有人都变得更富有,因为从此我们死于细菌感染的可能性变小了。人们需要的东西就是财富,治愈疾病肯定就是人们需要的东西。黑客经常开发开源软件让所有人免费使用,以此把自己的工作捐献给社会。FreeBSD操作系统使我变得更富有。我自己的电脑就在使用FreeBSD,雅虎公司所有的服务器都是如此。

  6. 工作就是在一个组织中,与许多人共同合作,做出某种人们需要的东西。

    公司一切行为的目的都是盈利,从而生存下去。创造财富是大多数公司盈利的手段。公司的业务高度专业化,掩盖了它们都是在创造财富的这种相似性,你不要觉得只有制造业公司在创造财富。

    对于大多数人来说,最好的选择可能是为某个现存的公司打工。但是,理解这种行为的真正含义对你没有什么坏处。工作就是在一个组织中,与许多人共同合作,做出某种人们需要的东西。

  7. 在人员众多的大公司里,更努力地工作很难突出你的价值

    但公司不可能对每个人都像销售员那样付薪。销售员是单独工作的,大多数雇员则是集体工作。假设有一家公司制造某种消费品,工程师为它实现各种功能,设计师为它设计一个漂亮的外壳,营销人员让顾客相信这是值得拥有的商品。请问如何评价每个人对这个商品销售额的贡献?还有,上一代产品的工作人员为这个公司树立了质量可靠的形象,请问最新产品的销售额有多少应该归功于他们?根本没有办法把所有人的贡献一一分解清楚。如果你能读懂消费者心理,你会发现消费者把所有上面这些因素放在一起看待。

    你想更努力地工作,但是你的工作与其他许多人的工作混杂在一起,这样就产生了问题。在大公司中,个人的表现无法单独测量,公司里其他人会拖累你。

  8. 要致富,需要可测量性和可放大性

    要致富,你需要两样东西:可测量性和可放大性。你的职位产生的业绩,应该是可测量的,否则你做得再多,也不会得到更多的报酬。此外,你还必须有可放大性,也就是说你做出的决定能够产生巨大的效应。

    因为收入和风险是对称的,所以如果有巨大的获利可能,就必然存在巨大的失败可能。CEO、电影明星、基金经理、运动员的头顶都悬着一把宝剑,随时可能掉下来。一旦他们搞砸了,他们就完了。如果你有一个令你感到安全的工作,你是不会致富的,因为没有危险,就几乎等于没有可放大性。

  9. 小团体=可测量性

    大公司就像巨型的古罗马战舰,一千个划船手共同划桨,推动它前进。但是,两个因素使得它快不起来。一个因素是,每个划船手看不到自己更努力划桨有何不同;另一个因素是,一千人的团队使得任何个人的努力都被大大地平均化了。

    理想情况下,你与其他愿意更努力工作的人一起组成一个团队,共同谋取更高的回报(相比他们为大公司工作的情况)。因为创业公司的团队往往是自发形成的,许多有抱负的创始人彼此之间早就相识(至少听说过对方),所以他们对彼此贡献的评估要比一般的小团体更准确。

    乔布斯曾经说过,创业的成败取决于最早加入公司的那十个人。我基本同意这个观点,虽然我觉得真正决定成败的其实只是前五人。小团队的优势不在于它本身的小,而在于你可以选择成员。我们不需要小村庄的那种“小”,而需要全明星第一阵容的那种“小”。

  10. 高科技=可放大性

    小团队天生就适合解决技术难题。技术的发展是非常快的,今天很有价值的技术,几年后可能就会丧失价值。小团队在如今这个时代可谓如鱼得水,因为他们不受官僚主义和繁琐管理制度的拖累。而且,技术的突破往往来自非常规的方法,小团队就较少受到常规方法的约束。

    大公司也能开发出新技术,就是开发得比较慢而已。大公司的规模决定了它们无法快速行动,也无法测量并奖励表现优异的员工。所以在现实中,大公司开发出来的新技术只出现在那些需要大规模资本投入的领域,比如微处理器、电厂、大型民用飞机等,因为在这些领域内创业公司没有能力与之竞争。不过,即使在这些领域,大公司还是依仗创业公司提供零部件和构思。

    设置“进入壁垒”的方法之一就是申请专利。但是专利的保护程度可能不高。竞争对手通常能找到绕过专利的方法。如果找不到,它们可能就不找了,直接侵犯你的专利,等着你去起诉它们。大公司不害怕打官司,这对它们是家常便饭。

  11. 创业的潜规则

    但创业是有一些潜规则的,其中一条就是很多事情由不得你。比如,你无法决定到底付出多少。你只想更勤奋工作2到3倍,从而得到相应的回报。但是,真正创业以后,你的竞争对手决定了你到底要有多辛苦,而他们做出的决定都是一样的:你能吃多少苦,我们就能吃多少苦。

    另一条潜规则是,创业的付出与回报虽然总体上是成比例的,但是在个体上是不成比例的。我在前面说过,对于个人来说,付出与回报之间存在一个很随机的放大因子。你努力30倍,最后得到的回报在现实中并不是30倍,而是0到1000倍之间的一个随机数。假定所有创业者都努力30倍,最后他们得到的总体平均回报是30倍,伹中位数却是0。

    创业公司如同蚊子,往往只有两种结局,要么赢得一切,要么彻底消失。你通常不知道自己会是哪一个结局,只有等到最后一刻才会明了。

    保险的做法就是在早期卖掉自己的创业公司,放弃未来发展壮大(但风险也随之增大)的机会,只求数量较少但是更有把握的回报。

  12. 用户数量决定你的公司的价值

    你以为买家在收购前会做很多研究,搞清楚你的公司到底值多少钱,其实根本不是这么回事。他们真正在意的只是你拥有的用户数量。

7. 关注贫富分化

  1. 积累财富并非我们曾经想的那样

    我认为有三个原因使得我们对赚钱另眼相看。第一,我们从小被误导的对财富的看法;第二,历史上积累财富的方式大多名声不好;第三,担心收入差距拉大将对社会产生不利影响。就我所知,第一点是错的,第二点已经过时了,第三点通不过现实的检验。有没有可能,在现代社会中,收入差距拉大实际上是一种健康的信号?

  2. 财富和钱是两个概念

    事实上,财富与金钱是两个概念。金钱只是用来交易财富的一种手段,财富才是有价值的东西,我们购买的商品和服务都属于财富。你到海外旅行时,不用看当地人的银行账户就会知道你来到的是富国还是穷国。你只要看看他们的财富就行了:建筑、街道、服装、健康状况等。

  3. 人类的历史上常见的积累财富方式是偷窃

    很多人对贫富分化不满意的第二个原因就是,在大部分的人类历史中,积累财富最常见的方法其实是偷窃。游牧社会是偷别人的牲口,农业社会是征税(和平时期)和直接掠夺(战争时期)。

    巴尔扎克说过:“每一笔巨大财富的背后,都隐藏着罪行。”这句话被广泛引用,但是他其实说的是另一个意思,如果巨大财富没有明显的来源,那可能就来源于精心安排的犯罪活动,由于掩盖得太好,使得罪行被人遗忘了。如果我们正在谈论11世纪的欧洲,那么这样的误读反而是正确的。但是,巴尔扎克生活在19世纪的法国,那里的工业革命当时已经很发达了。巴尔扎克很清楚,你不用偷窃也可以发财。起码他自己就是这样做的,他写出受欢迎的小说,从而赚到了钱。

  4. 技术的其实缩小了贫富差距

    技术的发展是否加剧了贫富分化?首先,技术肯定加剧了有技术者与无技术者之间的生产效率差异,毕竟这就是技术进步的目的。一个勤劳的农民使用拖拉机比使用马可以多耕六倍的田。但是,前提条件是他必须掌握如何使用新技术。

    汽车就是一个很好的例子。如果富人不购买普通汽车,而是购买全手工制作、售价高达几十万美元一辆的豪华车,对他反而不利。因为对于汽车公司来说,生产那些销量很大的普通汽车要比生产那些销量很小的豪华车更有利可图,所以汽车公司会在普通车辆上投入更大的精力和资金,进行设计和制造。如果你购买专为你一个人定制的汽车,质量反而不可靠,某个部件肯定会出问题。这样做的唯一意义就是告诉别人你有能力这样做。

  5. 贫富差距不一定是坏事

    实际情况是,在工业化的民主国家,这种观点更可能是错误的。在农奴和贵族组成的社会,收入差距的加大肯定是社会问题加剧的信号,收入更多地从农奴流向了贵族。但是,抢夺他人的财富已经不再是收入的唯一来源了。波音747飞机驾驶员的收入大概是商场收银员的40倍,但是前者不是贵族,后者也不是奴隶,这种收入差距只是因为前者的技能比后者的要值钱得多。

    但是,只要你压制收入差距的扩大,不管是用偷窃私人财产的做法(封建社会),还是用高额税收的做法(某些现代政府),最终结果看来都是一样的,那就是社会作为一个整体变得更贫穷了。

    一个社会需要有富人,这主要不是因为你需要富人的支出创造就业机会,而是因为他们在致富过程做出的事情。我在这里谈的不是财富从富人流向穷人的那种扩散效应(trickle-down effect),也不是说如果你让亨利·福特致富,他就会在下一场宴会雇用你当服务员,而是说如果你让他致富,他就会造出一台拖拉机,使你不再需要使用马匹耕田了。

9. 设计者的品味

  1. 好设计是简单的设计。当你被迫把东西做得很简单时,你就被迫直接面对真正的问题。当你不能用表面的装饰交差时,你就不得不做好真正的本质部分。
  2. 好设计是永不过时的设计。只要没有错误,每一个数学证明都是永不过时的。所以,数学家哈代才会说:“丑陋的数学在世界上无法生存。”他的意思与飞机设计师凯利·约翰逊的观点是一样的:如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已。
  3. 好设计是解决主要问题的设计。答案可以不断改进,同样,问题本身也可以不断改进。软件的难题通常可以被改成等价的较易解决的形式。历史上,物理学的主要难题曾经一度是如何诠释经典著作,后来遂渐变成对可观测到的行为进行预测,这种转变使得物理学的发展速度大大加快。
  4. 好设计是启发性的设计。英国女作家简·奥斯汀的作品几乎不带有任何描述。她不告诉读者每件东西看上去是什么样子,只是把故事讲得非常生动,让读者自己把一切都想象出来。同样,绘画作品也分为描述性绘画和启发性绘画,后者往往比前者更引人入胜。每个人看到《蒙娜丽莎》都有自己的理解。
  5. 好设计通常是有点趣味性的设计。这条原则可能不是所有情况下都成立。但是,丢勒的雕刻、芬兰设计师沙里宁(Saarinen)的子宫椅(Womb Chair)、意大利罗马的万神殿(Pantheon)、保时捷911型汽车的原型设计,在我看来都很有趣。逻辑学家哥德尔(Gödel)的不完备定理就好像一个玩笑那样有意思。
  6. 好设计是艰苦的设计。在绘画上,肖像画通常占据最高地位。这不是偶然的,原因不仅是面部肖像比其他题材更能打动人,还因为我们太擅长观察脸,所以肖像画家不得不加倍努力才能达到我们的要求。如果画的是树,树枝画偏了五度也不会有人发现。但是,如果你把别人的眼睛画偏了五度,人们一眼就能看出来。
  7. 好设计是看似容易的设计。优秀运动员比赛时,让人觉得他轻轻松松就获胜了,优秀设计师也是如此,他们的工作看上去很容易。大多数时候,这是一种错觉。作家的文章读起来流畅自如,但是背后其实经过了反复修改。
  8. 好设计是对称的设计。对称也许只是简洁性的一种表现,但是它十分重要,值得单独列为一点。自然界的对称大量存在,这就说明了对称的重要性。
  9. 好设计是模仿大自然的设计。我不是说模仿大自然这种行为本身有多么好,而是说大自然在长期的演化中已经解决了很多设计问题。所以,如果你的设计与大自然很接近,那么它基本上不会很差。
  10. 好设计是一种再设计。很少有人一次就把事情做对。专家的做法是先完成一个早期原型,然后提出修改计划,最后把早期原型扔掉。
  11. 好设计是能够复制的设计。我们对待复制的态度经常是一个否定之否定的过程。刚入门的新手不知不觉地模仿他人,遂渐熟练之后才开始创作原创性作品。最后他会意识到,把事情做对比原创更重要。
  12. 好设计常常是奇特的设计。我在前文提到的好设计的大多数特点都是可以培育出来的,但是我觉得“奇特”这个特点是无法培育的。你最多就是在它开始显现时不要把它扼杀掉。爱因斯坦并不想让相对论变得很奇特,他只想找出真理,是真理本身显得很奇特。
  13. 好设计是成批出现的。推动人才成批涌现的最大因素就是,让有天赋的人聚在一起,共同解决某个难题。互相激励比天赋更重要,达·芬奇之所以成为达·芬奇,主要原因不仅仅是他的天赋,更重要的是他生活在当时的佛罗伦萨,而不是米兰。今天,人类生活的流动性高得多,但是伟大的项目依然不成比例地集中在少数几
    个热点上:德国包豪斯建筑学院、曼哈顿计划、《纽约人》杂志、洛克希德公司的臭鼬工作室、施乐公司的帕洛阿尔托研究中心。
  14. 好设计常常是大胆的设计。在任何一段历史中,人们都会把某些荒谬的东西当作正确的,并且深信不疑,以至于一旦你出言质疑,就有被排挤或者被暴力伤害的危险。

推荐阅读更多精彩内容