D&G每天一个知识点Review

伟大的黑客

2022-03-14  本文已影响0人  Sun东辉

这篇文章来源于奥斯康 2004 年的一次演讲。

几个月前,我发版了一本新书,我注意到,在评论里不乏一些充满挑衅和争执的话语。比如,“蠢货”。

我当然也不想这么做,但我想要做一件有成效的事情,因此,必须让大家了解和认识新事物,而不是单纯的重复他们已经知道的事情。我想,这本书一定会为你给你带来全新的价值认知。

爱迪生

一个公认最具有争议的话题是:财富差距可能不会有我们想象的那么多问题。

我没有在书中表示财富变化带来的好处,我只是说,在某种条件下,这可能预示着好事。脑袋疼痛并不是一件好事,但也有可能是一件好事,比如,当你正在从昏迷中苏醒。

财富的变化预示着生产力的变化。(在单一社会中,这是等价的)一个大概率正确的事情:如果你所在的社会生产力没有任何变化,可能并不是因为每个人都是托马斯爱迪生造成的,而是因为你们之中没有人是托马斯爱迪生。

在一个技术水品低下的社会中,生产力不会有太大的变化。刀耕火种的社会里,最好的生产者比最差的生产者,能在生产力方面高出多少?有几个因素造成了这样的结果?而当计算机这种复杂的生产力工具产生后,能够产生的变化则是巨大的。

这不是一个崭新的观点,早在 1974 年,弗雷德布鲁克斯就曾写过类似的文章,而关于这个研究的论文则发表在更早的 1968 年。但我认为,他还是低估了程序员之间的差异。程序员的生产力全部提现在每一行代码中:最好的程序员可以在很短的时间内解决问题。这里的关键是,如果问题没有确认呢?无论是软件行业还是其他行业,最关键的,不是解决问题,而是发现问题。想象力难以衡量,但在实际的生产中,它确实主导着程序中的每一行代码。

生产力在各行各业中,有不同的衡量标准,但总体来说,大同小异。但程序员之间的差异,却是巨大的,不亚于两个物种之间的差异。不过,我不认为这是软件行业固有的,事实上,在很多行业,技术水平都会放大产生力之间的差异,只是在软件行业,拥有更多“技术杠杆”。更多领域,这种“技术杠杆”都在慢慢变多,一个企业,乃至一个国家的成功,都将更加依赖这种“技术杠杆”的实现。

随着技术水平推动生产力的发展,技术引领者所能提供的生产力,所占的比例将会越来越高。当一个行业百分之九十的生产力由百分之一的人贡献,强行将他们的生产力降低到平均水平(无论是维京突袭还是中央制裁),只会让整个社会损失惨重。

如果我们想要充分利用这些人的生产力,我们就需要了解这些拥有巨大生产力的人,他们的“源动力”是什么?了解他们在工作中的需求,充分的了解他们,让他们能够为你所用。最重要的,尝试让自己也成为他们中的一员。

不仅仅是金钱

我曾仔细思考过我认识的一些黑客的共同点。一个重要的品质是他们真的都很喜欢编程,普通的程序员编程是为了支付账单,但他们则是出于兴趣,当然,如果有人能够为之埋单,就更好了。

有时会说伟大的程序员视金钱如粪土。这并非真相。诚然,他们最关心的事情是做有趣的事情。但只要你拥有了足够多的钱,你当然也就获得了做任何你想做的事的机会,因此,黑客也会被巨额的回报所吸引。但是,只要他们还需要每天上班,那么,他们最关心的内容就是工作内容是否有趣,而不是薪酬。

从经济上来讲,一个很重要的事实是,你不需要向黑客支付与之相匹配的薪酬,尽管一个伟大的黑客的生产力可能是普通程序员的十倍甚至百倍,但即使收到了普通程序员三倍的薪酬,他们也会很满足。其中的原因我等会儿会解释,其中一部分原因是他们自己并不知道自己的价值,还有一部分原因是金钱对他们而言,并没有那么重要。

黑客追求的东西是什么?像所有的工匠一样,黑客们喜欢有效的工具。这种说法其实有点儿片面,优秀的黑客拒绝糟糕的设计,低效的工具,他们不愿意在错误的架构上工作。

在我曾经工作过的一家初创公司里,公告版上张贴着一张 IBM 的海报,那是一张 AS400 的图片,标题是“黑客厌恶它”。

当你决定在项目中采用什么架构时,你不仅仅在做技术决策,而是对社会的“投票“,甚至影响更为深远的决策。例如,如果你的公司想要编写一些软件,用 Java 编写当然是一个不错的选择,但是,一旦你选择了一种语言,你就选择了一个社区。你不可能聘请到那些优秀的 Python 程序员来参与你的 Java 项目,有时候,语言本身也决定了黑客的质量。坦率的将,大多数优秀的黑客更喜欢 Python 而不是 Java。你应该考虑到这两种语言的优缺点。

业务中常常会使用最流行的语言,因为他们觉得语言就是行业标准。他们不会把未来压在一个不确定的小公司身上。然而,语言其实和行业标准关系甚微,如果你必须使用网络传输,那么你不得不用到 TCP / IP,编程语言只是一种文本格式,是一种中间传输层,是信息负载。

我了解到,Java 已经超过 Cobol,成为最流行的语言。如果仅仅是行业标准,那么,这无可厚非,但如果它只是一个表达的媒介,那么,你能做的就很多了。在我能想到的伟大的程序员中,只有一个会倾向于使用 Java 语言,而不在 Sun 公司工作的伟大程序员,则没有一个人是使用 Java 的。

最后的净土

除了软件,黑客最看重的就是他的工作环境。大公司认为办公室的功能是宣布等级,但黑客的目的却不在于此:他们把办公室当作思考的地方。如果身处一家科技公司,他们需要思考如何更好的优化产产品。因此,让黑客在嘈杂、分散注意力的地方工作,无疑是危险的。

一部叫做 Dilbert 的动画片对此做了很多描述,而且信誓旦旦的认为,就是这样的。但我认识的所有黑客都不这样认为。仅仅是被打断就很有可能阻碍黑客解决重要的问题,如果你想在清净的空间里完成重要的工作,你有两种选择:在家工作,或者早点儿(晚点儿)来公司,简单来说,就是避开人群。公司难道没有意识到这是一个很糟糕的现象吗?办公室的作用应该是帮助你更有效的工作,而不是阻碍你完成工作。

像思科这样的公司,每个人,甚至是 CEO,都会因为被配备了一个隔间而感到庆幸。但他们并非如此,他们的办公室依旧存在等级划分。还有一点儿需要注意,思科很少有内部创新,通常通过购买新的科技公司来获得新技术 —— 因此可以推测,他们并没有获得足够安静的工作空间。

真正了解黑客需求的公司是微软。我曾经看到微软的招聘广告,上面有一张大门的图片。为我们工作,我们承诺会给你一个合适的工作空间,在那里,你可以完成真正想做的工作。我们都知道,微软的强项在于它们总是能够内部创新,也许不够完美,但足够好。

如果公司希望黑客能够提升生产力,他们应该看看黑客在家里的时候是怎么做的。在家里,黑客可以自己安排自己的时间,因此,也可以获得最大的工作效率。当他们在家工作时,当然不会在嘈杂的开放空间工作。他们在自己的房间里,关上门。他们的工作环境舒适,邻里和睦,当他们需要思考时,他们可以在某个地方散步,而不是把自己困在密闭的空间里。他们还有一张沙发,当他们疲倦时,可以在上面睡一会儿,而不是趴在电脑桌前,假装在工作。在黑客高效工作的时候,周边没有嘈杂的装修声,没有会议,没有宗教约束,没有虚拟会议或者团队建设。当你查看他们的工作时,你会发现,他们的工作进度遥遥领先。他们也许不得不在工作中使用 Java 和 Windows,但他们更愿意在家里,用 Perl 和 Linux。

事实上,关于 Java 和 Cobol,谁是世界上最流行的语言,可能会产生误导。如果我们想知道什么工具是最好的,我们应该看看黑客在可以自由选择的时候会选择什么 —— 就是说,在他们自己的个人项目中,他们会哪种语言。当你问这个问题时,你会发现开源系统占据了大半江山,排名第一的语言可能是 Perl。

兴趣

除了好的工具,黑客们还想要有趣的项目。什么是有趣的项目?显然,隐形的飞碟或者特效软件等应用程序会很有趣,但是,如果有新的技术挑战,任何应用程序都会很有趣。所以,很难预测黑客们会喜欢什么,因为问题只有在研究并发现一种新的解决方案时才会变得有趣。在 ITA(他在 Orbitz 写程序)之前,机票检索是极其无聊的工作之一,但 ITA 通过自己的努力,重新定义了这个问题,让事情变得有趣了起来。

我认为,谷歌也做了相同的事情。谷歌刚成立的时候,传统的门户网站搜索即无聊又无意义,但谷歌并不这么认为,这就是他们现在如此出色的原因。

这是管理者可以发挥作用的领域。就像父母对孩子说,我敢打赌,你不可能在十分钟之内打扫完整个房间,一个好的管理者,有时可以讲一个问题重新定义为一个更有趣的问题。史蒂夫乔布斯精于此道,其中的一部分原因在于,他的要求很高。在 Mac 产生之前,有很多,小型、廉价的计算机。他重新定义了这个问题:如何做一个最漂亮的。这比胡萝卜加大棒更能激发员工的热情。

他们做到了。当 Mac 第一此出现的时候,你甚至不必打开它就知道它很好;它的细节就可以告诉你一切。几周前,当我在剑桥的街道上散步,从某人的垃圾箱里看到一个好像是 Mac 手提箱的东西,我看了看里面的东西,是一个 Mac SE,我把它带回了家,插上电源,它就开机了,Macintish 美妙的画面出现了,然后是整个屏幕。天啊,如此简单美好,就像是 —— 谷歌。

黑客喜欢为高标准的人工会要做。但仅仅是严格是不够的,你必须坚持正确的事情。这通常意味着,你自己也必须是一名黑客,我有时会看到如果管理程序员的文章。有两篇文章是这样说的:其中一篇讲述如果你自己是程序员该如何做,另一篇讲述如果你不是程序员,该如何做。这两篇文章可以浓缩为两个字:“放弃”。

问题不在于日常管理,真正优秀的黑客实际上是自我管理的。问题是,如果你不是黑客,你就无法分辨谁是真正优秀的黑客。类似的原因可以解释为什么美国的汽车都设计的如此丑陋,我称之为设计悖论。你的想法可能是,聘请到出色的设计师就可以设计出好的产品,但是,如果你的品味不高,那么,你怎么去认识一个好的设计师呢?你没有办法从他的作品出看出来他是否出色,而且,你也不能从他获得的奖项或者工作中判断,因为在大多数领域,包括设计,创意都是从前卫的聊天中获得的,而个人能力其实远没有想象中的那么重要。一个无法回避的问题:你无法在不知道什么什么是美丽的情况下生产出美丽的事物。美国汽车很丑,因为管理美国汽车的人品味低下。

这个国家的许多人的品味是难以捉摸的,甚至是轻浮的,或者是两者兼有的。为了推动设计的发展,一个经理必须要对公司的产品有极致的追求。如果你的品味很好,那么,你可以像史蒂夫乔布斯那样,让你的问题成为大家乐于解决的好问题。

讨厌的小问题

什么样的问题很无聊:那些有很多个讨厌的小问题组成的,目标不清晰的问题。最糟糕的事情莫过于为一个充满不合理设计的项目软件编写界面。次糟糕的事情是必须要为个别客户定制复杂且不明确的实现。对于黑客来说,这简直就是千刀万剐。

讨厌的小问题,最明显的特征是你做完了,但是你没有从中学到任何有价值的东西。用编译器编写很有趣,因为它可以引导你如何编译,但是一个有 Bug 的编译器并不能提升你的效率,因为这些缺陷往往伴随着随机性。因此,优秀的黑客总是避免讨厌的小问题,这其中的原因,不仅仅是自我保护,也防止让自己成为“愚蠢的傻瓜”。优秀的黑客避免无聊的小问题,就像芝士汉堡不能用模型来制作。

当然,有些问题天生就具有“无聊”的属性。而且由于供需关系,这样的工作往往薪水丰厚。因此,作为一家公司的老板,如果你需要找到优秀的黑客,帮助你解决这些乏味的问题,你该如何做呢?

这种情况往往发生在初创公司。在我们公司的创业初期,我们让罗伯特莫里斯担任系统管理员,这就像让滚石乐队在成人礼上演奏,你不应该这样做。但是,如果黑客本人是创始人,他们愿意为公司做任何事。

一些大公司通过将大公司拆分成小公司解决问题。他们会创建一个独立的研发部门让最聪明的这部分人解决最困难的问题,这些员工不必直接处理客户讨厌的小问题。在这个生产模式中,研发部门的功能就像是一个矿井,负责产出有价值的想法,而公司的其他人,则复杂使用这些想法。

你不必盲目的模仿这种方式。自下而上的编程提出了另一种划分公司的方法:让聪明的人造轮子。如果公司的目标是完成一项任务,你可以让其中一个小组来造轮子,另一个组的人使用工具来编写应用程序。通过这种方式,你可以让聪明的人去编写百分之九十九的代码,同时保证他们能够与与真正的业务隔离。造轮子的人也需要用户来使用他们的产品,这些人就是公司的业务开发人员。

如果微软能够使用这种方法,他们的软件就不会充满安全漏洞,因为编写实际应用程序的人就不需要做像是分配内存这样更底层的工作了。他们就不会直接用 C 语言去编写 Word,而是像搭积木一样,把功能组织在一起。(我相信,Duplo 就是这样的技术团队)

抱团

除了有趣的问题,优秀的黑客还喜欢和其他黑客抱团。伟大的黑客往往会聚集在一起,就像 Xerox Parc 那次,非常壮观。因此,你创造的环境越好,你所能吸引到的黑客越优秀,这是正相关的。抱团是一种趋势,这是一个赢者通吃的时代。任何时候,黑客最想工作的地方通常只有十几到二十个,如果你不是其中的一员,你不是有少数的几个黑客,而是一个都没有。

拥有优秀的黑客,并不能让一家公司走向成功。对谷歌或者意大利航空运输公司来说,这或许有效,这是目前最为火热的两家公司,但是对于思维机器和施乐公司却是没有任何帮助的。太阳公司有一段时间经营的很好,但他们的商业模式是忽上忽下的,在这种环境下,即使是最好的黑客也无力挽回。

不过,我认为,在其他条件相同的前提下,一家能够吸引到优秀黑客公司将拥有巨大的优势。有些人会不同意这一点,当我们 1990 年对风险投资公司做多轮融资时,有几家公司告诉我们,软件公司之所以能够获得成功,并不是依靠优质的软件,而是靠品牌和正确的事情。

我想我知道他们为什么如此笃信这一点。我认为,很多风投公司都在寻找机会,至少在潜意识中,寻找下一个微软。当然,如果你想要寻找的是微软这样的企业,那么,你确实不需要寻找那些希望通过编写优秀软件成功的企业。但是寻找到下一个微软的的概率很小,因为初创公司很难成为下一个微软,除非有其他公司愿意像 IBM 那样给予其帮助。

以微软这样的公司为榜样是不明智的,因为这个公司所有的企业文化都源于一次幸运的突破。微软是一个坏的参考点,如果你忽略它的存在,你会发现,好的产品获得成功的概率更大。风投公司应该寻找下一个苹果,或者下一个谷歌。

我认为比尔盖茨本人其实知道这一点。谷歌真正让他担心的,不是品牌,而是它们拥有更好的黑客这一事实。

辨识

谁是最伟大的黑客?你怎样才能知道对方是一个伟大的黑客?事实证明,这是非常困难的。即使黑客出现在你面前,你也很难认出他来。我现在可以很肯定,我的朋友特雷弗·布莱克威尔是一位出色的黑客。你可能已经在 Slashdot 上读到过他如何制作自己的赛格威的文章。这个项目的伟大之处在于,他在一天之内编写了所有的软件,顺便说一句,他所使用的软件是 Python。

对于特雷弗来说,这是理所应当的。但是当我第一天见到他时,我认为他是一个彻头彻尾的白痴。他站在罗伯特莫里斯办公室里对他喋喋不休的讨论毫不相关的事情。我记得我当时在背地里向罗伯特表示,他简直就是一个疯子,希望他快讲他赶出办公室,好让我们可以一起共进午餐。罗伯特说他一开始也误判了特雷弗。罗伯特与他的第一次会面,特雷弗正着手实施一个计划,尝试将生活的方方面面用索引的方式记录在案。他刚从加拿大回来,带着浓重的口音和一条鲻鱼。

尽管黑客们无视社会的规则,但有时也会为了展示自己的聪明才智付出很多的努力。当我在读研究生的时候,我偶尔会在麻省理工的人工智能实验室闲逛,刚开始,他们说话的语速会让我感到震惊,但过了一会儿,我也会学会了快速说话的技巧。你不必快速的思考,只需要想象自己在二倍速快进就好。

由于存在大量的不确定因素,当你遇到好的黑客时候,很难辨识出他们的能力。即使是现在,我也没有任何窍门。他们的简历并不能说明任何问题。判断黑客的唯一办法就是与他们一起做事。

这就是高科技企业往往都聚集在大学周围的原因。大学最重要的,与其说是教授,不如说是学生。初创公司在大学周围茁壮成长,因为大学将有前途的年轻人聚集在一起,让他们参与相同的项目,聪明的人与聪明的人合作,共同创作出属于他们的项目。

想要了解一个黑客,唯一的办法就是和他们一起工作,即使是黑客自己,也并不知道自己究竟有多出色。这样的情况比比皆是。我发现,领域的专家通常对自己的伟大报以怀疑,这也导致其他人对他同样怀疑。

黑客的能力很难被比较,因为他们的工作通常很难比较。在很多领域,比较是相对容易的,百米赛跑,只要计时看看谁跑的更快就好了。即使是数学领域,对于那些难以解决的问题,哪种方案是最优的,也有一定的共识。但是黑客的工作就像写作一样,谁能说出那两部小说是最好的?作者本人当然更难判断了。

只有黑客可以分辨出黑客的能力。这是因为,与小说家不同,黑客在项目中合作,当一个人遇到一个难以解决的问题,你会发现那些优秀黑客的解决办法往往让你耳目一新。但黑客本人其实并不会意识到这个问题,如果你问一个伟大的黑客,你有多厉害,他大概率会肯定的回答,我不知道。他不是谦虚,他是真的不知道。

没有任何人能够了解他们,除非他们曾经与之合作。这让我陷入了一个沉思:我们不知道英雄究竟是谁。著名的黑客往往因为偶然的突然事件而备受关注。有时,我需要用一个伟大的黑客来举例,但我不知道该用谁的故事。我想到的人往往都是我认识的人,但是这样表达往往不够理想。所以,我想,也许我应该说理查德·斯托曼,或者林纳斯·唐纳德,或者·凯,或者类似的名人。但我不知道这些人是否真的是伟大的黑客。我从来没有和他们合作过。

如果有一个黑客叫做迈克尔·乔丹,没有人知道他,他自己也不会知道。

成长

最后,黑客们一直在思考一个问题:如何成为一名伟大的黑客?我不知道自己是否能成为其中的一员。但肯定有一些让你看起来很蠢的事情,如果你能让自己看起来很蠢,那么,你也可以让自己看起来很聪明。

成为一名优秀黑客,最重要的是做你喜欢的事情。当我想到我身边的黑客,无一例外是在从事自己所热爱的事情。我不知道这是因还是果,可能二者兼有。

想要做好一件事,首先,你必须喜欢做这件事。因此,如果你把做黑客当作是你喜欢的事情,那么,你一定能够做的很好。试着保持着十四岁那年对编程的好奇心。如果你担心现在的工作会腐蚀你的大脑,现状可能却是如此。

当然,最好的黑客往往非常聪明,多数领域都是如此。黑客有什么独特的品质吗?我问了一些朋友,他们提及的第一件事就是好奇心。我一直认为所有聪明的人都是好奇的 —— 好奇是一切好答案的前提。但显然,黑客是其中的佼佼者,尤其面对事物的运作方式。这是理所应当的,因为程序对一件事的细节有着巨大的信息。

几位朋友提到了黑客的专注力 —— 用一个的话来总结,他们的能力是“忘记头脑以外的任何事情”。我当然注意到了这一点,我听几个黑客说,他们在喝酒之后,肯定不会编程。也许黑客确实需要一些特殊的专注力。也许伟大的黑客可以将大量的信息加载到他们的大脑中,这样,当他们看到一行代码,他们看到的,就不仅仅是一条线,而是一整个运行过程。约翰·麦克菲写到,比尔布拉德利作为一名成功的篮球运动员,最重要的原因归功于他非凡的察觉力。“完美”的视力大约拥有四十七度角的视觉范围,比尔布拉德利有着七十度角,当他看向地板,他同时也能看到篮筐。也许伟大的黑客拥有类似的能力。

这也可以解释“封闭”所能带来的弊端。也许,创造“封闭”的人并没有这样的察觉力,他们不知道,在“封闭空间”工作的黑客,是如何举步维艰。

总的来说,我注意到伟大的黑客和聪明人之间的一个区别是,黑客在政治上更不正确。优秀的黑客往往会秘密会谈,因为他们的见解如果被公众听到,肯定会引发动乱。我能够理解为什么政治不正确能够成为软件开发的一个优秀品质,至少对优秀程序员如此,因为只有在这种情况下,才能养成良好的,质疑一切的能力。

你能够培养这种能力吗?我不知道,但你至少不应该压抑它们,这是我能够给予你最好的建议。如果你想要让自己成为一个伟大的黑客,那么,你需要作出如下交易:永远不要从事无聊的项目(除非你的家人会因此挨饿受冻),与此同时,永远不要半途而废。我认识的所有伟大的黑客都是如此,无一例外。

原文

上一篇 下一篇

猜你喜欢

热点阅读