Skip to main content

读《黑客与画家》

「黑客精神」

黑客行为必须包含三个特点:好玩、高智商、探索精神。只有其行为同时满足这三个标准,才能被称为「黑客」。

对于黑客来说,关着的门就是一种挑衅,而锁着的门则是一种侮辱。……黑客相信,只要有助于改进现状、探索未知,人们就应该被允许自由地使用各种工具和信息。当一个黑客需要一样东西来帮助自己创造、探索或者改正某种设备时,他不会自找麻烦,不会接受那些财产专有权的荒谬概念。

「工作」

人类喜欢工作,在世界上大多数地方,你的工作就是你的身份证明。但是,我们那时做的所有事情根本就是无意义的,至少那时看来是这样。最好的情况下,那些事情也不过是遥远的将来我们可能从事的实际工作的练习。它所面向的目标是如此遥远,以至于当时我们都不知道自己练习这些到底是为了干什么。更常见的情况是,那些事情不过是一系列随意设置的绳圈,你被要求一个个跳过去。 你在学习中遇到的文字都是专为考试而设计的,目的就是为了出题,而不是为了讲清楚问题。 (南北战争的三个主要原因是……等到考试的时候,就会有一道题:请列出南北战争的三个主要原因。) 而且,没有办法回避那些事情。 成年人已经达成共识,认定通往大学的途径就是这样的。逃离这种空虚生活的唯一方法,就是向它屈服。

与此同时,社会发生了什么变化?我们被迫面对一个更严峻的问题。它与当前的其他许多难题有着共同的起因,那就是 「专业化」(specialization) 。当工作的专业程度越来越高时,我们就必须接受更长时间的训练。工业化时代来临之前,儿童最晚大约在 14 岁就要参加工作,如果是在农庄(那个时代大多数人生活在农村),参加工作的时间就更早。如今,只要一个青少年读大学,他就要等到 21 岁或 22 岁才开始全职工作。如果再读更髙的学位,比如医学博士或哲学博士,可能要拖到 30 岁才能完成学业。

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

专业化是现代社会的必需,但过度专业化可能会剥夺个人探索世界的能力。在科技发展迅猛的时代,在一种知识里钻研越深,当新的技术栈出现的时候,将更不易迁移。我想,应该保持「适度专业化」,留下来的时间和精力学一些自己喜好的知识,这样既满足了社会对专业能力的需求,又保持了持续发展的潜力,对于个人而言,是一个较好的平衡。

「创造方法论」

创造优美事物的方式往往不是从头做起,而是在现有成果的基础上做一些小小的调整,或者将已有的观点用比较新的方式组合起来。

你把整个程序想清楚的时间点,应该是在编写代码的同时,而不是在编写代码之前。

我喜欢直接坐在计算机前编程,而不是在纸上编程。更糟的是,我不是耐心地一步步写出整个程序,确保大体上是正确的,而是一股脑不管对错,先把代码堆上去,再慢慢修改。

编程不是在纸上写,一落笔便成文,而应该随时可修改的。如果说项目的成品是一栋大厦,在构建的时候一定不是每建一层就装修一层。在开发项目的时候,细节之处的灵感可以先记下来,但要避免「过早优化」,就像你刚建到三楼,便匆匆忙忙给二楼的窗户安玻璃,后来发现大厦的主结构不符合要求。

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

对于团队项目,分工时应该 按模块切分任务,让每个人对自己负责的部分有掌管的权利。

程序写出来是给人看的,附带能在机器上运行。

只有在那些不太成熟、容易出现问题的地方,你才应该加上注释,提醒读者注意那里,就好像公路上只有在急转弯处才会出现警示标志一样。

此处联想「Python 之禅」:

Simple is better than complex.

又要提到「奥卡姆剃刀」原则了:

如无必要,勿增实体。 ( Entities should not be multiplied unnecessarily. )

作者在文中是这样阐述的:

当你被迫把东西做得很简单时,你就被迫直接面对真正的问题。当你不能用表面的装饰交差时,你就不得不做好真正的本质部分。

关于如何去构建好的设计,文中提出了这几个观点:简洁、符合历史精华的审美、模仿大自然

好设计是简单的设计。从数学领域到绘画领域,你都可以听到这种说法。在数学中,它表示简短的证明往往是更好的证明。特别是对于数学公理来说,少即是多。在编程中,这种说法也基本适用。对于建筑师和设计者,它意味着美依赖于一些精心选择的结构性元素,而不依赖于表面装饰品的堆砌。( 装饰品本身并不是坏事,只有当它被用来掩盖结构的苍白时,才变成了一件坏事。 )绘画也是类似的,认真观察的、非常有代表性的静物作品往往要比表面极尽华美、但是实质上只是无意义重复的「巨作」(比如再现非常复杂的花边的绘画作品)更有价值。在写作上,这种说法意味着只说必须要说的话,并且说得简短。

说来奇怪,如果你希望自己的作品对未来的人们有吸引力,方法之一就是 让你的作品对上几代人有吸引力。 我们很难猜想未来是什么样子,但是可以肯定,未来的人们不会在乎今天流行的风潮,这一点与上几代人是相同的。所以,如果你的作品对今天的人们以及 1500 年的人都有吸引力,那么它极有可能也会吸引 2500 年的人。

好设计是模仿大自然的设计。我不是说模仿大自然这种行为本身有多么好,而是说 大自然在长期的演化中已经解决了很多设计问题 。所以,如果你的设计与大自然很接近,那么它基本上不会很差。

最后一点能很好地解释「人为什么不会进化出轮子」这个问题。

在历史的任何时刻都有一些热点项目,一些团体在这些项目上做出伟大的成绩。如果你远离这些中心,几乎不可能单靠自己就取得伟大成果。某种程度上,你个人最多可以对趋势产生一定的影响,但是你不可能决定趋势,实际上是趋势决定了你。

个人对历史的影响大多是微乎极微的。如果时代没有特定的趋势,只能逆流而上。摸清时代的发展趋势,是创造出更大的成就的必要条件。

帕金森定律(Parkinson's Law)的一种原始表达形式是「工作总是到最后一刻才会完成」,后来引申到计算机领域就变成了「数据总是会填满所有空间」,更一般性的总结则是「对一种资源的需求总是会消耗光这种资源的所有供应」。

做出优秀成果的人,在做的过程中常常觉得自己做得不够好。其他人看到他们的成果觉得棒极了,而创造者本人看到的都是自己作品的缺陷。这种视角的差异并非偶然,因为只有对现状不满,才会造就杰出的成果。

「自由思想」

塞缪尔·约翰逊说过,人们对一个作家的评价,需要 100 年才能达成一致。你必须先等他的那些有影响力的朋友都死了,然后再等他的追随者都死了,才能对他有一个公正的评价。

但真正令人惊恐的是,流行一时的不仅有衣服,还有道德观念。明明是专横武断、毫无依据的错误观点,但是大多数人却深信不疑,受到影响而不自知。这是非常危险的。流行的衣服,其实是很难看的衣服;流行的道德观念,其实不是善而是恶。但是,如果别人都穿流行的衣服,而你不穿,你就会遭到嘲讽;如果别人都遵守流行的道德观念,而你不遵守,结果则要严重得多,你会被解雇、流放、监禁,甚至被杀。

要是能坐上时间机器回到过去,不管哪一个年代,有一件事都是不会改变的,那就是「祸从口出」。你一定要小心自己说的话。自以为无害的言论会给你惹来大麻烦。今天,说地球围绕太阳运转真是再平常不过了,如果换在 17 世纪的欧洲,这么说就大难临头了。伽利略说了这样的话,结果遭到了宗教法庭的审判。

有时候,别人会对你说:「要根据社会需要,改造自己的思想、(well-adjusted)。」这种说法隐含的意思似乎是,如果你不认同社会,那么肯定是你自己的问题。你同意这种说法吗?事实上,它不仅不对,而且会让历史倒退。如果你真的相信了它,凡是不认同社会之处,你连想都不敢想,马上就放弃自己的观点,那才会真正出问题。

一旦发现了「不能说的话」,下一步怎么办?我的建议就是别说,至少也要挑选合适的场合再说,只打那些值得打的仗。与笨蛋辩论,你也会变成笨蛋。 这时你要明白,自由思考比畅所欲言更重要。如果你感到一定要跟那些人辩个明自,绝不咽下这口气,一定要把话说清楚,结果很可能是从此你再也无法自由理性地思考了。我认为这样傲不可取,更好的方法是在思想和言论之间划一条明确的界线。在心里无所不想,但是不一定要说出来。我就鼓励自己在心里默默思考那些最无法无天的想法。你的思想是一个地下组织,绝不要把那里发生的事情一股脑说给外人听。

1638 年,英国诗人弥尔顿(John Milton)准备第一次访问意大利。曾经担任英国驻威尼斯大使的沃顿爵士(Hemy Wootton)告诉弥尔顿要记住一句座右铭「i pensieri stretti & il viso sciolto」。字面意思是「守口如瓶,笑脸相迎」,也就是说,你要对每一个人微笑,但是不要说出自己的真实想法。这所有反击方法之中,最好的一种可能就是幽默。狂热分子都有一个共同点:缺乏幽默感。他们无法平静地对待笑话。在幽默王国中,他们闷闷不乐,就像满身笨重盔甲的骑士走进了溜冰场,无所适从。一个现实的例子就是,维多利亚女王时代的英国人讲究宫廷礼仪,迂腐守旧,人们把这当作笑话看待,结果它好像就真的被笑话击垮了。它在当代的化身「政治正确」也将得到同样的命运。「我很高兴自己写了《萨勒姆的女巫》,」阿瑟·米勒写道,「但是回想起来,我常常希望自己有那种气质,写一出反映当时情况的荒诞喜剧。」

如果自己就是潮水的一部分,怎么能看见潮流的方向呢?你只能永远保持质疑。问自己,什么话是我不能说的?为什么?

幽默感是强壮的一种表现,始终拥有幽默感就代表你对厄运一笑了之,而丧失幽默感则表示你被厄运深深伤到。所以,强壮的标志(或者至少是特点)就是轻松面对自己的人生。

「市场」

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

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

麦当劳是快餐连锁集团,它的发展依靠的就是设计出了一个快餐服务体系,可以复制到全世界每一个角落。每一家麦当劳连锁店都必须严格遵守操作规定,这使得它就像软件一样运作。所以,麦当劳其实也符合「一次开发,普遍适用」的模式。

这不仅是创业公司运作的好方法,更是创业公司的本质。风险投资商(VC)知道这个道理,为它起了一个名字——进入壁垒(bairiers to entry)。如果你有一个新点子去找 VC,问他是否投资,他首先就会问你几个问题,其中之一就是其他人复制你的模式是否很困难。也就是说,你为竞争对手设置的壁垒有多高^。你最好做出令人信服的解释,阐明你的技术难以复制的原因。否则一旦大公司看到了,它们就会做出自己的版本,再加上它们的品牌、资本、经销能力,一夜之间就把你的市场全部抢走。那时你就像来到开阔地带的游击队,会被正规军一举歼灭。

「工具」

大多数时候,你不需要一台全功能的电脑(即本身可以运行软件的电脑)。你所需要的设备只要有键盘、屏幕、浏览器就够了,可能还有无线网卡。

我也曾想过,既然性能与便携不可兼得,那么把消耗性能的计算与渲染工作放到云端,而用户终端只需要有基本性能的处理器,与屏幕、键鼠等交互设备。并且,云服务器映射到终端,一对多的方式,不仅可以节省成本,也可以做到无缝切换,适应更多场景。在家外接大屏幕,在外用平板就行了。

目前主要的问题主要是连接速率与成本。

参考与致谢

本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。