[读书笔记] 黑客与画家

简介

《黑客与画家》是硅谷创业之父Paul Graham的文集,这里的黑客指的是优秀的软件工程师,作者将黑客与画家作比较,认为与黑客最接近的职业是画家,这便是这本书书名的由来了。
Paul Graham在1995年创办了Viaweb,帮助个人用户方便的开设网上商店,1998年以5千万美元的价格卖给Yahoo公司。
2005年他创建了风投公司YC,被称为全世界最牛的创业孵化器,YC帮助了大量的创业公司(到2018年投资了1450家公司),比较成功的案例有:Airbnb,Stripe,Dropbox,Docker,GitLab等等。

这本书中包含了作者对黑客精神,创业,互联网,社会,编程语言的诸多观点,读完让人感觉受益匪浅,甚至会有创业的冲动,哈哈。

以下是对这本书内容的一些摘抄。

序 & 前言

黑客行为必须包含三个特点:好玩、高智商、探索精神。

1 为什么书呆子不受欢迎

我认为,这就是问题的根源。“书呆子”的目标具有两重性。他们毫无疑问想让自己受欢迎,但是他们更愿意让自己聪明。“受欢迎”并不是你在课后时间随便做一做就能实现的,尤其是在美国的中学中,在这里,所有人为了个人魅力都会进行激烈竞争。

表面上,学校的使命是教育儿童。事实上,学校的真正目的是把儿童都关在同一个地方,以便大人们白天可以腾出手来把事情做完。

校园生活的两大恐怖之处——残忍和无聊——也是出于同样的原因。

如果你觉得人生糟透了,那不是因为体内激素分泌失调(你父母相信这种说法),也不是因为人生真的糟透了(你本人相信这种说法)。那是因为你对成年人不再具有经济价值(与工业社会以前的时期相比),所以他们把你扔在学校里,一关就是好几年,根本没有真正的事情可做。任何这种类型的组织都是可怕的生存环境。你根本不需要寻找其他的原因就能解释为什么青少年是不快乐的。

2 黑客与画家

这个学科的一端是纯粹的数学家,他们自称“计算机科学家”,只是为了得到国防部研究局(DARPA)的项目资助。中间部分是计算机博物学家,研究各种专门性的题目,比如网络数据的路由算法。另一端则是黑客,只想写出有趣的软件,对于他们来说,计算机只是一种表达的媒介,就像建筑师手里的混凝土,或者画家手里的颜料。

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

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

编程语言是用来帮助思考程序的,而不是用来表达你已经想好的程序。它应该是一支铅笔,而不是一支钢笔。

这似乎是大公司的普遍情况。大公司这样安排的原因是为了减少结果的标准差。因为实际上只有很少一部分黑客懂得如何正确设计软件,

真正竞争软件设计的战场是新兴领域的市场,这里还没有人建立过防御工事。只要你能做出大胆的设计,由一个人或一批人同时负责设计和实现产品,你就能在这里战胜大公司

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

因为黑客更像创作者,而不是科学家,所以要了解黑客,不应该在科学家身上寻找启示,而是应该观察其他类型的创作者。

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

创作者另一个学习的途径是通过范例。

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

普通黑客与优秀黑客的所有区别之中,会不会“换位思考”可能是最重要的单个因素。有些黑客很聪明,但是完全以自我为中心,根本不会设身处地为用户考虑。这样的人很难设计出优秀软件,因为他们不从用户的角度看待问题。

3 不能说的话

如果别人告诉你应该相信什么,你就真的相信了,那么你就会和别人一样犯下同样的错误。

,并不是所有不能说出口的话都是我们要找的答案。实际上,只有同时满足两个条件才行。第一个条件是,这些话不能说出口;第二个条件是,它们是正确的,或者看起来很可能正确,值得进一步讨论。

守口如瓶”的真正缺点在于,你从此无法享受讨论带来的好处了。讨论一个观点会产生更多的观点,不讨论就什么观点也没有。

4 良好的坏习惯

公民自由真的是国家富强的原因,而不是结果吗?我认为是的。在我看来,一个人们拥有言论自由和行动自由的社会,往往最有可能采纳最优方案,而不是采纳最有权势的人提出的方案。

正是那些不服从管教的人们,才是美国财富与力量的源泉。

5 另一条路

如果你想把钱藏在安全的地方,请问你是选择放在家中床垫下面,还是放在银行?这个比喻对服务器管理的方方面面都适用,不仅是安全性,还包括正常运行时间、带宽、负载管理、备份等,都是我们占优。

不少公司都很想知道,什么事情可以外包,什么事情不可以外包。一个可能的答案是,公司内部所有不直接感受到竞争压力的部门都应该外包出去,让它们暴露在竞争压力之下。

只有懂得设计的黑客,才能设计软件,不能交给对软件一知半解的设计师。如果你不打算自己动手设计和开发,那就不要创业。

6 如何创造财富

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

真正重要的是做出人们需要的东西,而不是加入某个公司。

要致富,你需要两样东西:可测量性和可放大性

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

选择公司要解决什么问题应该以问题的难度作为指引,而且此后的各种决策都应该以此为原则。Viaweb的一个经验法则就是“更上一层楼”。
总的来说,这也是很好的处事原则。如果你有两个选择,就选较难的那个。如果你要选择是坐在家里看电视,还是外出跑步,那就出去跑步吧。这个方法有效的原因可能是遇到两个一难一易的选择时,往往出于懒惰的缘故,你会选择较易的那个选项。在意识深处,你其实知道不懒惰的做法会带来更好的结果,这个方法只是迫使你接受这一点。

7 关注贫富分化

无论在物质上,还是在社会地位上,技术好像都缩小了富人与穷人之间的差距,而不是让这种差距扩大了。

9 设计者的品味

等到你逐渐对一件事产生热情的时候,就不会满足于模仿了。你的品味就进入了第二阶段,开始自觉地进行原创。

10 编程语言解析

头重脚轻”的语言:它们的内核设计得并非很好,但是却有着无数强大的函数库,可以用来解决特定的问题。

11 百年后的编程语言

这有点像买房子的时候你应该先考虑地理位置。别的地方将来出问题都有办法弥补,但是地理位置是没法变的。

浪费程序员的时间而不是浪费机器的时间才是真正的无效率。随着计算机速度越来越快,这会变得越来越明显。

13 书呆子的复仇

在大型组织内部,有一个专门的术语描述这种跟随大多数人的选择的做法,叫做“业界最佳实践”。这个词出现的原因其实就是为了让你的经理可以推卸责任。既然我选择的是“业界最佳实践”,如果不成功,项目失败了,那么你也无法指责我,因为做出选择的人不是我,而是整个“业界”。

第一,不同语言的编程能力不一样。第二,大多数经理故意忽视第一点。你把这两点事实结合起来,其实就得到了赚钱的诀窍

14 梦寐以求的编程语言

让我们试着描述黑客心目中梦寐以求的语言来为以上内容做个小结。这种语言干净简练,具有最高层次的抽象和互动性,而且很容易装备,可以只用很少的代码就解决常见的问题。不管是什么程序,你真正要写的代码几乎都与你自己的特定设置有关,其他具有普遍性的问题都有现成的函数库可以调用。

15 设计与研究

其中有一点是正确的,那就是如果你正在设计某种新东西,就应该尽快拿出原型,听取用户的意见。

原型(prototype)并不只是模型(model),不等于将来一定要另起炉灶,你完全能够在原型的基础上直接做出最后的成品。我认为,只要有可能,你就应该这样做。

为了把产品设计好,你必须对自己说:“哇,这个产品太棒了,我一定要设计好!”而不是心想:“这种垃圾玩意,只有傻瓜才会喜欢,随便设计一下就行了。”设计意味着做出符合人类特点和需要的产品。但是,“人类”不仅包括用户,还包括设计师,所以设计工作本身也必须符合设计师的特点和需要。