《黑客与画家》摘录

《黑客与画家》是我去年读过感觉很棒的一本书,重新温习了一遍,记录了一些很值得分享的句子和观点。


前言

黑客行为必须包含三个特点:

  • 好玩
  • 高智商
  • 探索精神

黑客的追求的是这三种价值,而不是实用性或金钱。

应该把黑客与画家当作同一种人看待。和画家一样,黑客只是怀有一门特殊手艺,有创造天赋的普通人。编程是一种艺术创作,黑客就是艺术家,开发软件与画家作画,雕塑家雕塑,建筑师设计房屋并没有本质不同。

虽然黑客从外表看上去一般都是呆呆的,但是他们的大脑内部却是一个有趣得让你吃惊的地方。


第一章 为什么书呆子不受欢迎

他们的心思在别的地方。

因为我在这个世界中过得并不好,我觉得一定是自己什么地方做错了。我没有意识到,作为书呆子,我不适应周围环境,某种程度上正说明我领先了一步。书呆子已经在思考的东西,正是世界看重的东西。他们与别人不一样,不把所有的时间用来玩一种耗尽全力但又毫无意义的游戏。

意识到学校并非全部的人生,也是很重要的事情。学校是一个很奇怪的,人为设计出来的体系,一半像是无菌室,一半像是野蛮洪荒之地。它就像人生一样,里面无所不包,但又不是事物的真实样子。

你告诉一个人,他的脚天生就是坏的,并不能阻止他去怀疑他可能穿错了鞋子。


第二章 黑客与画家

黑客与画家一样,都是从事创造性的工作。

黑客搞懂“计算理论”的必要性,和画家搞懂颜料化学成分的必要性差不多大。

编程不应该是先打草稿然后把头脑中的程序一步步写出来,确保大体是正确的,最后再调试;而应该是一股脑不管对错,先把代码堆上去,再慢慢修改(编程和调试同步)。绘画的创作过程就很值得学习,你不能盼望先有一个完美的规格设计,然后再去动手编程,这样想是不现实的。

在大公司看来,黑客的工作就是用软件实现某个功能,而不是设计软件。在那里,程序员被当作技工,职责就是将产品经理的“构想”翻译成代码。当然这也不能说是错的,大公司本该如此(减少设计结果的标准差)。

开发优秀软件的方法之一就是自己创业,但是会遇到许多与开发软件无关的事情,而且赚钱的软件和好玩的软件重叠度不高。

黑客解决生计的办法就是找一份白天工作,然后在其余时间设计优美的软件。

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

“程序写出来是给人看的,附带能在机器上运行。”——《计算机程序的结构与解释》


第四章 良好的坏习惯

良好的坏习惯,那就是不服从管教。


第五章 另一条路

几年前,我妈妈收到苹果公司的一封来信,上面说她可以优惠购买新版的操作系统。老太太被这些术语吓坏了。一个65岁的妇女,只用电脑收发邮件和记账,却被迫要和操作系统打交道,搞清楚要不要安装一个新版本,这真是太过分了。 ——普通用户根本没必要知道“操作系统”这个词,更不要说“驱动程序”和“补丁”了。

“你的电脑”这个概念正慢慢成为过去,取而代之的是“你的数据”。你应该可以从任何电脑上获取你的数据。或者更准确地说,在任何终端设备上获取你的数据,终端设备不一定是你的电脑。


第六章 如何创造财富

金钱并不等于财富。

哥白尼不认同托勒密的体系,一个极其重要的原因是,她觉得托勒密提出的偏心等距点(equant)毫无美感。 ——托马斯·库恩《哥白尼革命》

我们所有人都受到凯利·约翰逊的影响,狂热地相信外观优美的飞机一定会飞得同样漂亮。——本·里奇《臭鼬计划》

美感是第一道关卡。丑陋的数学在世界上无法生存。——G.H 哈代《一个数学家的辩白》


第九章 设计者的品味

确实存在比其他设计更好的杰出设计。众多不同学科对“美”的认识有着惊人的相似度。优秀设计的原则是许多学科的共同原则,一再反复地出现。

  • 好设计是简单的设计;
  • 好设计是永不过时的设计;
  • 好设计是解决主要问题的设计;
  • 好设计通常是有点趣味性的设计;
  • 好设计是艰苦的设计;
  • 好设计是看似容易的设计;
  • 好设计是对称的设计;
  • 好设计是模仿大自然的设计;
  • 好设计是一种再设计;
  • 好设计是能够复制的设计;
  • 好设计通常是奇特的设计;
  • 好设计是成批出现的;(如果你远离这些中心,几乎不可能单靠自己就取得伟大成果,趋势决定你,不是你决定趋势)
  • 好设计常常是大胆的设计。

单单是无法容忍丑陋的东西还不够,只有对这个领域非常熟悉,你才可能发现哪些地方可以动手改进。 你必须锻炼自己。只有在成为某个领域的专家之后,你才会听到心里有一个细微的声音说:“这样解决太糟糕了!一定有更好的选择。“不要忽视这种声音,要培育他们。优秀作品的秘诀就是:非常严格的品味,再加上实现这些品味的能力。


第十章 编程语言解析

对于一些编程语言,内核设计并非很好,但却有着无数强大的函数库。你可以想象一辆本身性能很差的小汽车,车顶却绑着一个飞机发动机。

然而,车顶上绑着飞机发动机的小车也许真能开,只要你不尝试拐弯,可能就不会出问题。


第十一章 一百年后的编程语言

当你设计语言的时候,心里牢牢记住这个目标是有好处的。学习开车的时候,一个需要记住的原则就是要把车开直,不是通过将车身对齐画在地上的分隔线,而是通过瞄准远处的某个点。即使你的目标只在几米开外,这样做也是正确的。


第十二章 拒绝平庸

语言只是工具。如果有更好的工具,为什么不用呢?


第十五章 设计与研究

设计意味着做出符合人类特点和需要的产品。

设计与研究的区别看来就在于,前者追求“好”,后者追求“新”。优秀的设计不一定很“新”,但必须是“好”的。

优秀设计的前提是你自己必须喜欢这种产品,否则你不可能对设计有兴趣,更不要说士气高昂了。为了把产品设计好,你必须对自己说:“哇,这个产品太棒了,我一定要设计好!” 而不是心想:“这种垃圾玩意,只有傻瓜才会喜欢,随便设计一下就好了。”