《黑客与画家》书摘
paul graham
所有学员刚刚来到 YC 的时候,每人都会拿到一件白色 T 恤衫,上面写着“Make something people want”(制造用户需要的东西),等到他们的项目得到风险投资以后,又会收到一件黑色 T 恤衫,上面写着“I made something people want”(我制造了用户需要的东西)。
德国哲学家马丁·海德格尔 (Martin Heidegger) 说过一句著名的话:人应该“向死而生”(Being-toward-death)。意思是人面对死亡,才会停止那些无谓琐碎的关注和困扰,体会到什么是重要的事情,从而达到真正的存在。
自由软件基金会创始人理查德·斯托曼 (Richard M.Stallman) 说:“出于兴趣而解决某个难题,不管它有没有用,这就是黑客。” 根据理查德·斯托曼的说法,黑客行为必须包含三个特点:好玩、高智商、探索精神。只有其行为同时满足这三个标准,才能被称为“黑客”。
黑客伦理”(hacker ethic),直到今天这几条伦理都被视为这方面的最佳论述。 (1) 使用计算机以及所有有助于了解这个世界本质的事物都不应受到任何限制。任何事情都应该亲手尝试。 (Access to computers—and anything that might teach you something about the way the world works—should be unlimited and total.Always yield to the Hands-On Imperative!) (2) 所有信息应该都是自由的。 (All information should be free.) (3) 不信任权威,提倡去中心化。 (Mistrust Authority—Promote Decentralization.) (4) 判断一名黑客的水平应该看他的技术能力,而不是看他的学历、年龄或地位等其他标准。 (Hackers should be judged by their hacking,not bogus criteria such as degrees,age,race,or position.) (5) 你可以用计算机创造美和艺术。 (You can create art and beauty on a computer.) (6) 计算机使生活更美好。 (Computers can change your life for the better.) 根据这六条“黑客伦理”,黑客价值观的核心原则可以概括成这样几点:分享、开放、民主、计算机的自由使用、进步。
为什么聪明的小孩一直不受同龄人的欢迎呢?我认为,答案就是他们真的不想让自己受欢迎。
任何一种艺术,不管是否重要,如果你想要在该领域出类拔萃,就必须全身心投入。
书呆子不受欢迎的真正原因,是他们脑子里想着别的事情。他们的注意力都放在读书或者观察世界上面,而不是放在穿衣打扮、开晚会上面。他们就像头顶一杯水来踢足球,一边踢球,一边拼命保持不让水洒出来。
关键并非在于真实世界是由成年人组成的,而在于它的庞大规模使得你做的每件事都能产生真正意义上的效果。
真实世界的特点是,它极其庞大。如果总体足够大,即使是人数最少的少数派,只要聚集在一起,就也能产生可观的力量。在真实世界中,书呆子在某些地方聚集起来,形成自己的社区,智力因素成为那里最被看重的东西。
黑客真正想做的是设计优美的软件,考核这种工作是非常困难的。你本人需要有良好的设计感,才能去考核别人的设计是否良好。但是,你觉得你有“良好的设计感”,与你实际是否具有,不存在相关关系,甚至可能存在负相关关系。
编程语言首要的特性应该是允许动态扩展。编程语言是用来帮助思考程序的,而不是用来表达你已经想好的程序。
真正竞争软件设计的战场是新兴领域的市场,这里还没有人建立过防御工事。只要你能做出大胆的设计,由一个人或一批人同时负责设计和实现产品,你就能在这里战胜大公司。
黑客如何才能做自己喜欢的事情?我认为这个问题的解决方法是一个几乎所有创作者都知道的方法:找一份养家糊口的“白天工作”(day job)。
绘画的这个创作过程就值得学习。我认为黑客也应该这样工作。你不能盼望先有一个完美的规格设计,然后再动手编程,这样想是不现实的。如果你预先承认规格设计是不完美的,在编程的时候,就可以根据需要当场修改规格,最终会有一个更好的结果。
判断一个人是否具备“换位思考”的能力有一个好方法,那就是看他怎样向没有技术背景的人解释技术问题。
程序必须写得能够供人们阅读,偶尔供计算机执行。
不是所有不能说出口的话都是我们要找的答案。实际上,只有同时满足两个条件才行:第一个条件是,这些话不能说出口;第二个条件是,它们是正确的,或者看起来很可能正确,值得进一步讨论。
这就是找出“不能说的话”的第一种方法:判断言论的真伪。
关注“异端邪说”,是找出“不能说的话”的第二种方法。
我们就有了找出“不能说的话”的第三种方法:将当代观念与不同时期的古代观念 diff 一下。
还有第四种寻找“不能说的话”的方法:寻找那些一本正经的卫道者,看看他们到底在捍卫什么。
第五种方法,可以找出“不能说的话”,那就是去观察禁忌是如何产生的。
智力越高的人,越愿意去思考那些惊世骇俗的思想观点。这不仅仅因为聪明人本身很积极地寻找传统观念的漏洞,还因为传统观念对他们的束缚力很小,很容易摆脱。从他们的衣着上你就可以看出这一点:不受传统观念束缚的人,往往也不会穿流行的衣服。 做一个异端是有回报的,不仅在科学领域,在任何有竞争的地方,只要你能看到别人看不到或不敢看的东西,你就有很大的优势。
自由思考比畅所欲言更重要。
在心里无所不想,但是不一定要说出来。我就鼓励自己在心里默默思考那些最无法无天的想法。你的思想是一个“地下组织”,绝不要把那里发生的事情一股脑说给外人听。“格斗俱乐部”的第一条规则,就是不要提到格斗俱乐部。
讨论一个观点会产生更多的观点,不讨论就什么观点也没有。所以,如果可能的话,你最好找一些信得过的知己,只与他们畅所欲言、无所不谈。这样不仅可以获得新观点,还可以用来选择朋友。能够一起谈论“异端邪说”并且不会因此气急败坏的人,就是你最应该认识的朋友。
政治正确”就是一个“元标签”,是许多特定现象的总称。
所谓“流行”(传统观念也是一种流行),本质上就是自己看不见自己的样子,否则就不会有流行了。
不过,想要摆脱你自己所处的时代的流行,需要一点自觉。没有时间所产生的距离,你就不得不自己创造距离。你不要让自己成为人群的一分子,而要尽可能地远离人群,观察正在发生的事情,特别注意那些被压制的思想观点。
直到那时,我们才意识到客户支持实际上就是质量监控,也是某种程度上的市场营销。
但是,构思这种东西有一个特点,那就是它会导致更多的构思。你有没有注意过,在坐下来写东西的时候,一半的构思是写作时产生的?软件也是这样。实现某个构思,会带来更多的构思。
大公司付出的高价之中,很大一部分是商家为了让大公司买下这个商品而付出的费用。(如果国防部花 1 000 美元买一个马桶座圈,部分原因是要让国防部买下它本身就需要花很多钱。)这就是公司内部的局域网软件明明不可取却还会继续存在并且不断发展的一个原因。这样的软件更昂贵,但是你对这个难题就是无能为力。所以,最好的安排就是把个人和小企业客户放在第一位,其他的客户该来的时候就会来。
公司不过是一群人在一起工作,共同做出某种人们需要的东西。真正重要的是做出人们需要的东西,而不是加入某个公司。
任何一个通过自身努力而致富的个人,在他身上应该都能同时发现可测量性和可放大性。
有一个办法可以发现是否存在可放大性,那就是看失败的可能性。因为收入和风险是对称的,所以如果有巨大的获利可能,就必然存在巨大的失败可能。
在实际操作中,这就意味着我们故意选择那些很困难的技术问题。假定软件有两个候选的新功能,它们创造的商业价值完全相同,那么我们总是选择较困难的那个功能。不是因为这个功能能带来更多的收入,而是因为它比较难。我们很乐于迫使那些又大又慢的竞争对手跟着我们一起走进沼泽地。
买家假定用户知道谁有最好的技术。虽然这听上去很蠢,但是用户是你证明自己创造了财富的唯一证据。财富就是人们需要的东西,如果没人使用你的软件,可能不是因为你的推广活动很失败,而是因为你没有做出人们需要的东西。
你必须时刻牢记的最基本的原则就是,创造人们需要的东西,也就是创造财富。如果你想通过创造财富致富,那么你必须知道人们需要什么。
从经济学观点看什么是创业公司吗?简单地说,就是可以让人更快速工作的地方。
工程师愿意接受普通薪水去做一些诱人的项目(比如战斗机和登月火箭),而与日常生活关系更密切的技术革新(比如电灯泡和半导体)只能由创业者来发明。
要鼓励大家去创业,只要懂得藏富于民,国家就会变得强大。让“书呆子”保住他们的血汗钱,你就会无敌于天下。
无法被技术变得更便宜的唯一东西,就是品牌
如果你与奴隶比赛,你也会变成一个奴隶。
他想要的学生不仅应该技术过硬,还应当能够使用技术做出优美的产品。
当你被迫把东西做得很简单时,你就被迫直接面对真正的问题。当你不能用表面的装饰交差时,你就不得不做好真正的本质部分。
以永不过时作为目标也是一种避开时代风潮的影响的方法。“风潮”这个词,从字面上就可以看出,它就像一阵风似的,随着时间经常改变。如果一件东西长盛不衰,那么它的吸引力一定来自本身的魅力,而不是来自风潮的影响。
因为幽默在一定程度上反映了力量。幽默感是强壮的一种表现,始终拥有幽默感就代表你对厄运一笑了之,而丧失幽默感则表示你被厄运深深伤到
在大多数领域,看上去容易的事情,背后都需要大量的练习。练习的作用也许是训练你把刻意为之的事情变成一种自觉的行为。有时,我们的训练只是为了让身体形成下意识的反应。优秀钢琴家弹奏名曲可以不经过大脑直接完成,艺术家也是这样,熟练以后,脑海中的艺术形象会自动从手上流淌出来,仿佛有人在一旁为他打节奏一样。
好设计是一种再设计。很少有人一次就把事情做对。专家的做法是先完成一个早期原型,然后提出修改计划,最后把早期原型扔掉。
唯一达到“奇特”的方法,就是追求做出好作品,完成之后再回过头看。
推动人才成批涌现的最大因素就是,让有天赋的人聚在一起,共同解决某个难题。互相激励比天赋更重要,
今天的实验性错误就是明天的新理论。如果你想做出伟大的新成果,那就不能对常识与真理不相吻合之处视而不见,反而应该特别注意才对。
你必须锻炼自己,只有在成为某个领域的专家之后,你才会听到心里有一个细微的声音说:“这样解决太糟糕了!一定有更好的选择。”不要忽视这种声音,要培育它们。做出优秀作品的秘诀就是:非常严格的品味,再加上实现这种品味的能力。
很难预测一百年后的人类生活,只有少数几件事是可以确定的。那时,汽车将具备低空飞行能力,城市规划的法规将放宽,大楼可以造到几百层,大街上一天到晚看不见太阳,女性个个都学过防身术。
基本运算符是一种语言能否长期存在的最重要因素,
那些内核最小、最干净的编程语言才会存在于进化的主干上。一种语言的内核设计得越小、越干净,它的生命力就越顽强。
编程语言进化缓慢的原因在于它们并不是真正的技术。语言只是一种书写法,而程序则是一种严格符合规则的描述,以书面形式记录计算机应该如何解决你的问题。所以,编程语言的进化速度更像数学符号的进化速度,而不像真正的技术(比如交通或通信技术)的进化速度。
随着技术的发展,每一代人都在做上一代人觉得很浪费的事情。
正确做法应该是将语言的语义与语言的实现予以分离。在语义上不需要同时存在列表和字符串,单单列表就够了。而在实现上做好编译器优化,使它在必要时把字符串作为连续字节的形式处理。
如果你自己做不到,那就去当老师
在大型组织内部,有一个专门的术语描述这种跟随大多数人的选择的做法,叫作“业界最佳实践”。这个词出现的原因其实就是为了让你的经理可以推卸责任。既然我选择的是业界最佳实践,如果不成功,项目失败了,那么你也无法指责我,因为做出选择的人不是我,而是整个业界。
语言设计者应该假定他们的目标用户是一个天才,会做出各种他们无法预知的举动,而不是假定目标用户是一个笨手笨脚的傻瓜,需要别人的保护才不会伤到自己。