123
 123

2008-01-12 Sat

20:26 Flickr (281 Bytes) » Photos from dbanotes

dbanotes posted a photo:

Flickr

12:04 病 (5020 Bytes) » Fenng's shared items in Google Reader

昨天在网上看到童孔杀人的新闻,吓我一跳。如果按照新闻报道的情况来看,童孔老师至少也是个15年,除非他是为民除害。

我至今还保存着一盘童孔的个人专辑,一盘从来没有出版但是我觉得特牛逼的专辑,那是1996年制作人祝小民老师送给我的,他跟我说,有个叫张海波的歌手,录了一张专辑,你听听。这盘磁带是用铬铁磁带录制的,好像有10首歌,每首歌写的都很有劲,旋律和歌词都属上乘,我当时不明白为什么不能出版。大概是个词写得很厉害,不过按现在的情况,这些歌词也没什么过分的了。我听了之后觉得过瘾,便去找童孔,采访过他,他还给我看了他拍的MV,在那个年代,咱们中国人还不知道MV是怎么回事的时候,童孔便开始在里面有些想法了,而且音乐与画面节奏配合得很好,其实他对影视表达几乎什么都不懂,但是他的直觉告诉他,应该怎么样。跟他聊天让我想起另外一个人,何勇老师,精神和心理都有点问题的人,但是如果你想想历史上凡是躁狂抑郁的人都是天才,也就能明白他们的行为。比如迈克尔·杰克逊,多牛逼的天才,毁在他心理疾病上了。奉劝那些望子女成龙凤的父母,孩子小时候尽可能让他们自然成长,别像杰克逊他爹那样,为这个世界逼出来一个怪胎。

 顺便介绍一本书,《躁狂抑郁多才俊》,这本书详细介绍了几个牛逼的人,牛顿、贝多芬、狄更斯、梵·高,这些人其实都病得不轻,患有严重的躁狂型抑郁症,但是也催生了他们的才华。反正看完这本书,你会有种感觉,伟大的天才,牛逼的人,都有病,不管是艺术家还是政治家——从瓦特到希特勒。这本书里提到的名字,你好像都听说过,也都有毛病。想想吧,主宰我们这个世界的都是一帮疯子,也挺好玩。我很佩服罗永浩老师的前瞻意识,他管自己叫“傻逼老愤青”,所以他是一个心理多么健康害的孩子啊。中国在心理学研究方面比较落后,如果有人想研究,不妨从心理学角度研究一下毛泽东,我一直觉得,丫有病。

那天去三联书店,随便买了几本书,出门的时候琢磨了一下,居然是三个愤青的书——王朔、切·格瓦拉和吉姆·莫里森,其实这三个人也有病。

前几天看苗师傅的博客,说大家都有病。我也发现了,瞧,我们生病都不能像天才那样,所以都踏踏实实活着吧。反正我发现,我认识的80后女孩里面,没几个心理健康的,前几天还帮一个女孩找心理医生。我认识一个女孩,老怀疑自己的脸很大,苗师傅在博客里也提到了,几年前她就说自己脸大,我就记住了,后来博客上做联接的时候,她的博客说明就是“基本上脸很大”。没想到几年后她还在怀疑脸大。事实上,她的脸已经很瘦了,不能再瘦了,再瘦就变成刀螂(螳螂的俗称)了,你说你长成农民作家全勇先那样就好受了?所以逼着我把链接说明改了。以后谁要再要求跟我做链接,先告诉我你有什么心理毛病,我好用在说明里面,这样说不定哪个心理医生来这一看就开心了。我就有点不明白,为什么我总是认识心理有毛病的女孩,看来我也有病,不是有句成语叫“同病相怜”吗,要不就是现在“独一代”这帮孩子都有毛病。谁能告诉我,你没病,让我喘口气。

由于后来我的音响没有卡座了,不能听磁带了,所以童孔这盘带子也就再没听过,我想了半天,专辑的名字都想不起来了。一晃过去12年了,不知道这盘磁带还能不能听了,反正我保存了很多录音带,最早的是1986年的,据说录音带保存时间最长也就是10年,期限早过了。看来我得去买个录音机了,好多珍贵的录音都录在卡带上了,比如我当年上学录的广播剧《顽主》,童孔的磁带,崔健1988年在中山音乐堂现场演出的录音,唐朝乐队未缩混的录音,还有一些段子,还有更多我最早听得那批摇滚乐……不过很多东西当时都被我弟弟当成慈善物品捐献给了他身边的朋友。过两天回我妈妈家,把磁带整理一下,但愿都完好无损,不知道谁会把磁带转到电脑里面,像抢救民间文化一样,我也抢救一下我的磁带。

10:32 ITPUB2007年九华山庄年会首日随记 (720 Bytes) » yangtingkun
以我的文笔,写个议论文类型的技术文章还凑合,写记叙文实在是有点为难,简单记个流水帐好了。昨天晚上和shahand、野花约好北京站见。早上7点40分赶到北京站,很幸运的碰到了大部队出站,一眼就看到了piner和biti,于是根据大家一起上了车。7点50分,汽车启动。7点51分,接到野花电话,问哪里上车,告知车已启动,野花晕倒。8点整,接到shahand电话,同问上车地点,告知车早已启动,shahand亦晕倒。一路上和d.c.b.a、biti、piner聊天,收获颇丰。可惜fenng没有到京,算算已经2、3年没见了吧。9点整到了九华山庄,看到门口运来多辆新车,pi...
09:47 顶尖黑客 (38564 Bytes) » Fenng's shared items in Google Reader

原文作者:Paul Graham
原文链接:Great Hackers
译者:hgye

译者按:
1.作者Paul Grahamt.gif 是一个Lisp黑客t.gif ,同时也是Y-Combinatort.gif 的联合创始人(什么是Y-combinator的本意?看看这里t.gif ,可惜我没有看懂,不过我猜想和Lisp有很深的关系,好像是lambda算子t.gif可以推出Y)
2.这篇文章是作者的Essays系列t.gif ,注意它不是blog,也就是说,这是TMD文学作品。不得不承认,这篇文章从篇章结构到遣词造句,都已经超越我了E文水平。(也许只在四六级考试里见过...)这里t.gif 是我在google docs上的草稿,如果你发现错误,尚请顺手改过来。(我在翻阅这篇文章的同时,发现了另一个老兄t.gif 已经翻译了Paul的几篇作品t.gif
3.翻译这篇文章的缘起是一个无聊星期六的中午和下午。不过能够坚持把它读完并打算把它译出来则是因为我自己最近的经历和体验。

=====================================
========下面进入正题======================
=====================================

(这篇散文源于2004年Oscont.gif 上的一个演讲)
几个月前我刚刚完成了一本书t.gif ,在书评中我发现了书评中诸如这样的字眼,“煽动的”,“争议的”,更别说还有“白痴般的”评价。

我无意使那本书处于争议之中,我只是试图更有效率,告诉你们已经知道的事情是浪费你们的时间。不同是更有效的方法,不过这注定产生一本火药味的书。

爱迪生们



关于哪个是最有争议的观点中,这一个无疑没有太大异议:寻求更多的变化,这并不是像我们想得那样的大问题。

我没有在书中说寻求变化本身就一定是件好事,而是说在某些情况下这是一个好的征兆。脑袋的阵痛也许不是好事,但是有时,譬如在受到头部重击之后恢复意识的时候,就是一件好事。

力求变化可能是生产力提高的一个征兆(在一般意义上,他们几乎是同义词),这几乎永远是一件好事,如果社会的生产力停滞不前,多半不是因为人人都是爱迪生。相反是因为没有爱迪生。

在科技不发达的社会里,生产力上面的差异可能不是那么显著。在一个到处捡柴生火的游牧部落中,一个最好的捡柴禾者比最差的捡柴禾者能强多少呢?两倍吗?但是在操作像计算机这样复杂的的工具时,个体之间生产力的差异将是巨大的。

这些并不是新观念,Fred Brooks早在1974年就把它们写了下来,而他引用的研究成果发表于1968年。不过我认为Brooks还是低估了程序员之间的差异。Brooks是以代码行来描述生产力的:最好的程序员能在1/10的时间内解决问题。但是如果连问题都还没有给出呢?在程序世界的许多领域,最难得恰恰不是解决问题,而是要解决什么问题。想象力是无法量化的,但在实践中,就衡量生产力而言,占据支配地位的标准却是可以量化的代码行。

几乎所有领域的生产力都在提高,不过到目前为止,得到显著提高的领域为数有限。程序员之间的巨大差异看起来就是得到巨大提高的一个例子,不过我不认为这是写程序的固有特征。在所有领域,技术是放大生产力之间的差异的杠杆。我想在写程序上存在着特别多的技术杠杆。就当下来看,所有领域中杠杆都在变长,所以在越来越多的领域中,差异也会随着时间的推移越来越显著。公司的成功,甚或国家的成功,都取决于他们对于这种将要发生的,在效率方面差异所要采取的对策。

如果说在生产力上面的差异会随着技术而增长,那么随着时间的推移,最有效率的个体对整体做出的贡献也会不成比例的扩大。当1%的成员贡献了90%的产出时,把他们的效率拉到平均水平会使整体损失巨大。(不管是海盗出击,还是计划经济)

如果我们希望得到最大的产出,我们需要理解这些有着最高效率的人。什么是他们的驱动力?他们需要什么来完成他们的工作?如何识别他们?如何让他们为你工作?最后必然是这个问题,如何成为其中的一员?

不仅仅是钱



碰巧我认识几个超级黑客,于是我开始坐下并思考什么是他们的共同点。决定性的品质很可能是他们真的热爱编程。一般程序员写代码是为了讨生活。顶尖的黑客认为这是让他们得到乐趣的途径,更让人兴奋的是还会有人付钱给他们。

大多数时候人们认为顶尖的程序员对钱漠不关心,不幸这并不那么对。不过他们真正在乎的是他们正在做有趣的事情。为了这样的理由:能够赚足够多的钱,做任何想做的事,黑客们会被赚取巨大财富的主意吸引。一旦他们面对日常工作,他们就会更加关心他们要做什么,而不是能够得到多少报酬。

从经济学的角度看,你不需要向顶尖的黑客支付等同于他们身价的薪水,这是一个非常重要的事实。在生产力上,顶尖的程序员是一般人的数十倍甚至上百倍,他们却为自己得到了三倍的薪资而暗自高兴。后面我会提到,部分的原因是顶尖的程序员不清楚他们自己有多棒,同时对于他们来说,金钱也不是他们想要的最主要的东西。

什么是一个黑客真正希望拥有的?就像所有的手艺人那样,黑客最喜欢的是好的工具。有一句这样的话,好黑客绝不容忍差工具。对于那些构建在错误基础设施之上的项目,他们会简单得说不。


在我曾经工作过的一个创业团队当中,有一样东西是钉在我们的公告板上面的,那是一张IBM的广告。那是一张AS400t.gif 的图片,我想我能读到的标题就是“黑客不鸟它”[1]

当你决定在项目中使用什么基础设施时,不仅仅是作一个技术决定,同时也是一个社会学意义上的决定,并且后一个才是两者之中真正重要的决定。例如,你的公司决定写一个软件,看起来似乎用Java来做是一个谨慎的做法。但是在你选择编程语言的时候,你同时也是选择了一个社区。你能够雇佣的Java程序员可能不如那个使用Python的程序员,黑客的质量要比起你要选择的语言的要更加重要。并且实际上,那个使用Python而不是Java的家伙会告诉你他使用的语言(python)有多棒。


商业决定通常倾向于更流行的语言,因为它们把这些看作标准。它们不会把公司的未来赌在Betamaxt.gif 上面。但是问题是语言不仅仅是个标准。如果你需要在网络上传输比特,那意味着使用TCP/IP。程序语言不仅仅是格式,而是一种表达的媒介。

我曾经读到Java已经取代Cobol成为最流行的语言。作为一个标准,你不可能再奢望更多。但是作为表达的媒介,你可以做得更好。在所有我能想到的最好的程序员中,我知道只有一个会自愿使用java。而所有这些人,没有人愿意在java上为Sun工作.

通常顶级的黑客坚持使用开源软件。不仅是它们更好,而且开源提供给他们更多的控制。好的黑客坚持控制,这是为什么他们是好的黑客的部分原因:当什么东西不对劲时,他们需要修正它。当你需要黑客们按照上面的方式去写软件的时候,对于黑客们要求他们使用的OS也应该如此时,不要感到惊讶。

数年以前,一个风险投资人朋友告诉我他正参与一个创业的团队,一切听上去很好。但是第二次我们谈到,他们决定在windows NT上面构建他们的软件 ,并且刚刚雇佣了一名非常有经验的NT开发者作为他们的CTO,我想这些家伙真是逊掉了。首先,这个CTO不可能是第一流的黑客,因为一名优秀的NT开发者会不自觉地倾向使用NT,我不能想象一个顶级的黑客会这样;其次,即使这个家伙足够棒,在使用NT的项目中,很难雇佣到一个优秀的开发者。[2]


终极边界


除了软件,对黑客来说最仰仗的工具就是他的办公室。大公司认为办公室空间的功能是等级的表示。不过黑客们是这样来使用他们的办公室的:办公室是思考的场所。如果是一家技术公司,他们思考的东西就是你的产品。所以,让黑客们工作在嘈杂混乱的环境下就像是一个空气中充满了煤烟的画室。

呆伯漫画t.gif 中总是以赞赏的态度提到小休息室。不过我认识的所有黑客对此都不屑一顾,被打断意味着阻止黑客们解决难题。如果希望在一间带着小休息室的办公室中作真正的工作,你有两个选择:在家工作,或者选择比其他人早或者比其他人迟,或者在周末,总之是没有其他人在的时候。那些公司难道没有看出这有什么不对劲么?办公室理应是帮助你工作的地方,而不是这就是你工作的地方。

像Cisco这样的公司总是自豪的宣称每个人,甚至是CEO,都有一个小休息室。但是他们并不是像他们自己想的那样前卫。显然他们还是把办公室空间看作等级的徽章。注意Cisco是以在家里开发的,很小的产品而著称,但是这些产品都来自对那些创业者的新技术的收购。这些创业者的信条是:黑客需要在安静的地方工作。

理解这些黑客们的需要有一家大公司,M$,我见过一张M$的招聘广告,上面是一个大大的门。这里的逻辑是,为我们工作,我们会给你个地方,你的确能够把工作完成。在大公司中,M$对于在提倡像在家里那样开发软件的理念是突出的。不是最好,但已经足够好。

如果公司希望黑客们有效率,它们应该关注一下黑客们在家里是怎么工作的。在家里,黑客们可以自己安排要做的事情,并将其中的绝大多数完成。而当黑客们在家里工作时,他们不会工作在嘈杂的,开放的空间中,他们是工作在门的后面。当他们需要费力思考时,他们工作在舒适的,周围有人的,有地方可以散步的环境中,而不是在停着许多车子的大停车场旁边的几个玻璃盒子中。当他们感觉疲倦时有沙发可以小憩,而不是在桌子旁边昏昏沉沉。在夜晚,这是 最主要的黑客时段,没有人拿着真空吸尘器咆哮,也没有会议和上帝禁止的集体反思乃至团队建设活动。当你望向他们的电脑时,你会巩固我先前说过的工具的观念,在工作上他们可能不得不使用java和windows,但是在家里,他们可以自己作主的地方,你很可能发现他们在使用Perl和Linux

实际上,那些关于Cobol和Java是最流行语言的统计数据可能是误导。如果我们想知道那些工具是最好的,我们应该考虑到的是黑客可以自由选择的工具。也就是黑客们自己的项目。当你问这个问题,你会发现开源OS已经占据决定性的市场份额,排名第一的语言则是Perl。


兴趣



有了好的工具,黑客们还希望有趣的项目。怎样让一个项目有趣?哦,那些公然的,性感的应用,比如偷飞机或者软件的特别作用是非常有趣的。只要准备迎接新奇技术的挑战,任何应用都是有趣的。事实上很难猜测黑客们喜好的问题,因为工作在那些无趣问题上的人通过发现新的解决方法,会使问题变得有趣。在ITA之前(Orbit上的软件t.gif 由他们完成),飞机票费用搜索可能是可以想到的最无趣的应用。不过ITA将问题换成更具雄心的描述方式之后,事情变得有趣了。

我认为相同的事情也发生在google身上,google建立时,传统智慧t.gif认为在门户中搜索是无聊的,不重要的。不过这些家伙不认为搜索是无趣的,这就是为什么它们做的这么好的原因。

这里是经理可以做出贡献的地方。就像父母对孩子说,我打赌你在10分钟内不能把房间打扫干净。好的管理者可以把问题重新定义的更加有趣。Steve Jobs在这方面好像特别擅长,部分的原因不过是他的高标准而已。在Mac之前有很多小的,便宜的电脑。他把问题重新定义为:做一个漂亮的。这可能比任何胡萝卜加大棒都更有效。

他们当然成功了,在Mac第一次面世时,你甚至不必开机就知道它到底有多好。从这个案例中你应该可以学到什么。就在几个星期前,我走在剑桥的街道上,在某人丢弃的垃圾中我发现了Mac的包装盒,我向里看了一眼,那不是一台Mac SEt.gif 吗!我把它带回家,插上电,然后它启动了。快乐的Macintosh标志,然后是findert.gif 。天啊,就是这么简单,就像...google(sorry,不熟悉Mac,所以什么是Macintosh face? 我翻译成标志)

黑客们喜欢和高标准的人一起工作,但是仅仅严格要求是不够的。你还必须坚持正确的事情,通常这意味着你自己也必须是一名黑客。我偶尔可以看到如何管理程序员的文章。实际上这里有俩个主题:一个是自己是程序员时要做什么,另一个是你不是程序员时你要做什么。第二种情况可以简单的浓缩为一个词:放弃

问题并不是出在日常的管理上,好的黑客都是自我管理者。问题是,如果你不是黑客,你就不能辨别谁是好的黑客。类似的我们可以解释为什么美国的汽车都很丑陋。我称之为设计悖论,你可能认为我只要雇佣好的设计者就可以设计出漂亮的产品。但是没有好品味,你怎么才能辨识好的设计者呢?名义上你可以考察他的履历,但是仅仅是得过的奖项和曾经拥有的工作是不行的。因为在设计上,或者说在所有领域,那些被时髦和人云亦云驱使的人,是没有能力做一个合格的第三方的。 下面这样是行不通的:不了解什么是美,却希望通过控制流程来制造漂亮的事物。美国汽车的丑陋是因为美国的汽车公司是一帮没有品味的人在把持。

这个国家的很多人认为品味是飘忽的,甚至是反复无常的,但是两者都不对。出色的设计中,经理应该是公司产品的要求最高的使用者。如果你确实有不错的品味,Steve Jobs就做到了,你可以在满足自己的要求的同时,让最好的人甘心为你工作。

琐碎的小问题


非常容易分辨出什么问题是无趣的:那些不是宏大的,清楚的,困难的的问题,但是你必须一个个去解决的很琐碎的问题。为一个到处是bug的软件的写界面就是一件最差的事。为每个客户提供复杂的,病态要求的定制是另一个差的不能再差的事。对于一个黑客来说这不谛于千刀万剐。

琐碎的事的显著特征就是你不能从中学习。写一个编译器是有趣的,因为你从中学到了什么是编译器。而为到处是bug的软件的写界面却不能教会你任何东西。因为bug是必然会产生的[3]。这里不是说让一个顶尖的黑客尽量远离琐碎的问题,这也不仅仅是自我保护的本能。做琐碎的事情会让你变蠢,就像模特远离奶酪三明治一样,顶尖的黑客也会远离这种问题。

当然有时必然需要这种角色。并且由于供需比例,他们也会得到非常好的报酬。就公司而言,找一个顶尖的黑客来做这些乏味的工作的尝试是有可能成功的。你怎样才能做到呢?

这种情况会发生在一个地方,就是在创业者当中。在我们创业时,我们找到了Robert Morrist.gif 做系统管理员。是不是感觉就像滚石乐队在酒吧里做善事,所以你不可能雇佣到这样的天才。但是他们会为他们自己的公司吃任何苦头。[4]

大一点的公司可以通过拆分公司来解决这个问题。他们可以成立单独的R&D部门来雇用聪明的家伙,好让他们不必直接面对刁钻的客户[5]。在这种情形下,研究部门相当于一座宝矿,产生公司其他部门使用的新奇主意。

不过你可能不需要如此极端。自下至顶编程法t.gif 建议的另一种分割公司的方法:让聪明人成为工具制造人。如果你的公司制造生产其他什么东西的软件,那就让一小群人来做,然后用这些工具软件来写你的应用。这种方法可以让聪明的家伙为你完成98%的代码,同时又可以像传统的研究部门那样,让他们几乎和用户绝缘。工具制造者的确有用户,不过面对的是公司里的开发者。[6]

如果M$使用这种发式,他们的软件就不会到处是安全漏洞。正是因为不那么聪明的家伙是不太会考虑底层的操作,比如内存分配。所以不要用C来直接写Word,应该用像搭建Legot.gif的积木那样的Word语言。(Duplot.gif ,我相信这是一个太过于技术的术语)(不知道这里的Word是不是指得M$的Word)

群聚


除了有趣的事情,黑客们最欣赏的是另一个好家伙。顶尖的黑客倾向于聚集一处——有时非常壮观,譬如在施乐帕洛阿尔托研究中心t.gif 。所以所能营造出来上佳的氛围是和你能招徕到的黑客是成比例的。群聚的含义就是这样的一个氛围。所以赢者通吃,在任意时段,只有那么10到20个地方是黑客们希望工作的地方。如果不在其中,你不会招揽到少数几个黑客,而是零个。

是否拥有顶级黑客,仅就此而言,已经足够让你的公司成功的假设,对于google和ITA而言,两个目前的最炙手可热的地方,这是正确的。(译者:这是在2004,ITA是什么东西t.gif ?)但是这救不了Thinking Mchinest.gif 和施乐。Sun有一段时间做的很好,但是他们的商业模式在飞速的走下坡路,在这种情况下,甚至是最好的黑客也不能拯救你。

我认为在其他条件等同的情况下,能吸引到黑客是公司的一项巨大的优势。可能有人对此不同意,在我们于90年代开办VC企业的时候,一些人告诉我们软件公司不会通过写伟大的软件获胜,但是品牌和渠道能帮助他们成为好买卖。

他们好像很相信这一点,我想我明白为什么。我认为许多VCs在寻找下一个M$,至少是无意识的。当然M$就是你的模型,你不应寻找希望通过写好软件来获胜的公司。但是VCs寻找下一个M$是一个错误,因为没有创业公司会成为下一个M$,除非是其他人恰巧在正确的时刻屈服,转而去做下一个IBM。

把M$当作模型是一个错误,因为他们整个的文化继承于一个幸运的突破点。M$是一个错误数据,如果你把M$抛在脑后,你会发现在市场上还是好的产品更容易成功。VCs们更应该关注下一个Apple,下一个Google

我认为Bill Gates很清楚这一点,让他真正担忧不是Google的品牌,而是Google有着更好的黑客[7]。

辨识


那么谁是顶尖黑客呢?当你遇到一个时你怎么知道他就是呢?这非常困难。甚至是黑客们自己也不能辨别。我现在可以非常肯定我的朋友Trevor Blackwellt.gif 是一顶级黑客。你可能在slashdot上面t.gif 读到过他曾经做出来他自己的赛格威t.gif 电动车。令人印象深刻的是它在一天之内就写出了所有的软件(顺便提一句,他用的是python)

对Trevor 而言,这是非常平常的。不过我第一次碰到他的时候,我想这家伙真是一个完完全全的白痴。他站在Robert Morris的办公室中,嘴里胡乱的说着什么,我还能记得在他后面,Robert做着夸张的动作试图把这个怪人赶出办公室,好和我一起去吃午饭。 Robert说他一开始也错误的判断了Trevor。当Robert第一次碰到Trevor时,Trevor刚刚开始一项计划,他随身携带这些带索引的小卡片,并把个人生活的每一个方面都记在上面。Trevor那时刚从加拿大来,带着很浓的加拿大口音和他那mullett.gif 发型。(这个找不到对应的中文词^^,hacker就是hacker)

问题在于,黑客是这样的混合体:除了他们那不善于社交的名声之外,通常他们还会付出很大的努力使得自己看起来聪慧。当我还个高中生时,我时常在MIT人工智能实验室旁边晃荡。那的确是压抑的感觉,每个人说话说得快极了。不过一段时间之后,我就发现了其中的诀窍。你的思维不需要很快,不过需要用两倍的话语来表达任何事情。

从这些纷杂的情形里传出来到信号就是,当你碰到好的黑客时认出他们是很困难的。我自己直到今天还不能辨别。你也不能从他们的简历中辨别它们。看起来唯一的途径就是和一个黑客一起工作一段时间。

这也就是高科技区域通常产生于大学的周围,这里主要是因为学生而不是教授。创业者成长在大学的周围是因为大学把这些有希望的年轻人带到一起,让他们工作在同一个项目上。一个聪明人找到了另一个,于是两个人就一起建起了他们自己的项目。

除了和他们一起工作就不能辨识好的黑客的假设对于黑客本人也适用,黑客们通常都意识不到自己有多棒。相比而言,这在其他大多数领域要容易得多。百米赛跑只需要10秒就可以知晓跑得最快的那个。甚至在数学上面哪些是公认的难题以及它们的最佳解决方案似乎也有一致的意见。但是做黑客就好像写作。谁能说在两部小说当中有一个更好呢?当然作者本人除外。

不过黑客在一起时,至少其他的家伙知道你是黑客。因为黑客并不是小说家,黑客在项目上相互协作。当你在网络上和别人较劲时,你很快会意识到还击是格外困难的。(When you get to hit a few difficult problems over the net at someone, you learn pretty quickly how hard they hit them back.)但是黑客们不能在工作中看到自己,如果你问一个顶级黑客他本人有多好,他一定会回答,我不知道。他这并不是在自谦,他是真的不知道。

除了那些我们确实在一起工作的人,其他的我们都不熟悉。这就导致了这样奇怪的情形:我们不知道谁应该是我们的英雄。那些赫赫有名的黑客通常只在特定的小圈子里有享有盛名。(The hackers who become famous tend to become famous by random accidents of PR. )通常当我需要给出顶级黑客例子的时候,我真的为很难。首先想到的肯定我认识的那些人,但是这样似乎有点眼界太小的意思。也许我应该给出像Richard Stallman,Linus Torvalds,Alan Kay这样有名的例子。但是我对于这些家伙是不是顶级的黑客一点没有底,因为我从来没有和他们在一起工作过。

如果黑客世界中有一个Michal Jordon,没有人会知道,包括他自己。(这是什么鬼意思)

养成


最后,关于黑客所有人都会感兴趣的问题是:如何才能成为一个顶级黑客?我不太确信你是否能成为其中一员。但是可以确信能够做点什么让你自己变得更蠢一点,如果你能让自己变蠢,你也很可能让自己变得更聪明。

成为一个好的黑客的关键是做你喜欢的工作。当我回想起那些我认识的顶尖黑客,他们共性是让他们做不想做的事情将是极端困难的。我不清楚这是原因还是结果,亦或二者兼具。

把事情做好的前提是热爱它,也就是你热爱什么东西你就会有持续hacking的动力。尝试去找在你14岁时迫不及待编程的感觉。如果你觉得现在的工作让你的大脑僵化,那么事实可能就是如此。

最好的黑客肯定是聪明的,但是其它很多领域最好的人也是聪明的人。那么对于黑客有什么是他们独特的品质呢?我问过一些朋友,他们首先提到的就是好奇心。不过我总是假定所有的聪明人都是好奇的——好奇是知识的自然延伸。但是明显的黑客特别好奇,特别是在事物如何工作方面。这就是意义所在,因为程序的绝大部分就是描述事情是如何运作的。

几个朋友提到黑客的能力在于专注——他们的能力就是,有人说的好,“把脑袋当中其他的一切杂念摒除”。我当然也很清楚这一点。我甚至听几个黑客说过,在没有喝掉半打啤酒之前他们是根本没有办法写程序的。所以hacking可能是在专注上是需要一些特别的能力的。可能顶尖的黑客在他们的大脑中可以容纳相当大的上下文,所以在他们看到一行行的代码是,他们不仅仅是看到了一行,而是整个程序。John Mcphee在写道Bill Bradley之所以是一个成功的篮球运动员时,部分的要归因于Bill那不同寻常的周围视野,“完美的”视野意味着水平47度的周围视野,Bill是70度,当他看像地板时他也能看见篮球。也许顶尖的黑客也有类似的与生俱来的能力。(我使用非常浓密的语言来欺骗,这会使我在法庭退缩)(I cheat by using a very denset.gif language, which shrinks the court天啊,这又是什么鬼意思)

这也可以解释很什么需要一个个单独的房间,对于在小房间里工作,也许从来不关注细节,管设备的人没有任何概念,不过黑客倾向于让自己的脑袋处于混乱的状态。(如果哪个孤僻症的谣言是真的,Bill对此显然非常了解)(是指Bill Gates?)

在顶尖黑客和一般意义上的聪明人之间,我注意到的一个区别是,黑客们通常都是政治错误的。好黑客之间心灵相通的奥秘,在他们很了解对方的时候,会相互表达对于公众来说是非常颠覆性的观点。我能看到的,为什么政治错误是编程上的一个好品质:程序是复杂的,在好的程序员手中尤其这样,非常灵活。在这种情形下,挑战假设就是一个很好的习惯了。

你能培养这些品质么?我不知道,至少你可以加强他们。这里我有一个良方。如果你希望自己成为一个顶尖黑客,尝试着对自己作这些事情吧:绝不工作在无聊的项目上(除非你真的没饭吃),作为报答,你也决不能允许自己做事只做一半。我认识的所有顶尖黑客都会把一票干完,虽然有时他们只是别无选择。

脚注



[1]平心而论,我不得不说IBM做硬件还是相当好的,我就是在IBM笔记本上写这篇文章的。
[2]他们的确走向了失败,几个月之后他们关门大吉了事。
[3]我想这也是人们通常所说的“生命的意义”。表面上看,这看起来很奇怪。生命不是一种表达;怎样才能有意义?但是保证品质会感觉更有意义。在一个写编译器的项目上,你不得不解决很多问题,但是所有的问题都属于一类,看起来都有相同的信号。在那些随机的产生问题的情况下,这好比是噪音。
[4]爱因斯坦曾经设计过电冰箱(他有股票)
[5]很难说什么是计算机世界里的研究,但是粗略可以等同于:那些没有用户的软件。
我不认为最好的黑客,就像公众认为的那样,倾向于工作在研究部门。我认为大部分原因是,不必和产品经理在一起开三个小时的会,来讨论第13.27条,即整合南韩版本的问题。
[6]在相当长的一段时间之内,相同的问题也发生在建筑界。几百年前建造房屋时,建筑师一切从头做起。慢慢的有人开始使用已经由别人造好的模块来构建房屋。这就像DTPt.gif 的发布,给了人们自由和损失惨重基础上的经验,但是显然这更有效。(不知道有什么典故)
[7]比起Netscape,Google是M$的真正威胁。也许是有史以来最危险的。不仅是他们决定对抗,在他们工作列表上,他们宣称一个“核心价值”是“不做恶”。从买豆油的公司到采矿设备公司,这样的宣言都不仅仅是古怪可以形容的了。我想计算机世界的所有人都知道谁宣布战争开始了。(这是在2004年)

致谢:感谢Jessica Livingston, Robert Morris, and Sarah Harlin审阅了这个讲稿的早期版本



http://www.itconversations.com/shows/detail188.html

读后感:
(原谅我既有译者按,又有译后感。不过既然我付出了劳动,总要让我表达自己的意见吧^^)
1.个人觉得这篇essay的风格还是正统硅谷风格的文章,或者说,介于黑客(hacker)和奇客(geek)之间,更倾向越黑客一点。虽然作者一直说的是黑客,不过我想黑客是信奉do it now的。表达的思想虽然有点激进,不过不妨碍他说出了很多事实。(在纠正人心上,矫弯必过正。)特别是既然在代码上不能强过你们,那么更要说点什么了。
2.前面说个人经历,我想在稍微说一点。就在最近几个月,我见识了:


 

  • 在你debug一个下午,还在徒劳的寻找什么出错了的时候,别人只需要10分钟,再注释点几行code后,一切都正常了。是的,快速修改code的能力,文章里说黑客坚持控制,我原来也试图搞清楚一切,但是这样在出问题时你往往不能fix it。我想文章还说到了不仅仅看到了那一行code,这就是问题所在,基础的差异。
  • 在别人说要需要修改代码,你花了一个星期去研究,还在各种纷繁复杂得class中试图搞清楚问题到底在哪里。别人去只花了2个小时,就了解了提出需求的人在想什么。然后快速定位了代码,虽然那些我都看过。是的,修改代码有时就像解数学题,问题面前除了排除法就是一片空白。我真是奇怪在初中是解几何题时的那种感觉那里去了。是的,这些已经不能说经验或者基础了,的确需要灵感。需要理解别人的表述风格,code的风格。一种语言就是一种表达的媒介。
  • 还有在两个星期里反复看code,前一个星期也是空白,然后写code,然后改来改去,最后只需要200行就OK了

呵呵,距离文中的黑客恐怕只能想想了...

添加评论

收藏到QQ书签收藏到QQ书签

04:30 用柳枝稷生产乙醇比玉米更好 (872 Bytes) » Fenng's shared items in Google Reader
《科学美国人》报道,美国农业部(USDA)和农场主联合进行的一项长达5年的研究发现,一种生长的北美的干草柳枝稷(Switchgrass)制造出的乙醇所产生的能量,是种植、收割和最终提取乙醇所需能量的540%,而另一种广受批评的生物能源玉米仅为24%,也就是入不敷出。 研究人员指出,柳枝稷是碳中性的,即它在生长时吸收的温室气体量等于它作为燃料燃烧时释放的二氧化碳量。USDA遗传学家Kenneth Vogel认为,一个最有意义的发现在于,那些使用肥料和其他能量――例如除草剂和农业机械所需的柴油――的农田的产出是不使用肥料、除草剂和其他能量的混合草地的产出的6倍。
02:31 KDE 4.0正式面世 (271 Bytes) » Fenng's shared items in Google Reader
KDE 4.0.0正式发布,这标志着漫长艰苦的KDE 4开发工作已告一段落,KDE 4时代开始了。 请阅读发布公告获取详情。 (Lie_Ex)
01:30 德川家康之二:崛起三河 (4704 Bytes) » DBA notes

作者:Fenng 发布在 dbanotes.net. 订阅 DBA notes

最近做项目稍有点累,每到睡前睡不着,只得看一会儿小说转移一下注意力,缓冲一下压力。用这些空隙时间把《德川家康》的第二部《崛起三河》也看完了。看第一部的时候还是比较费力的,毕竟历史背景一点不熟悉,第二本总算熟悉了一些(毕竟咱也查了好几回维基百科嘛)。

竹千代 --> 松平元信 --> 松平元康 --> 松平家康,这套 13 部又厚又长的大作到了第二本总算出现了”家康“这个名字,战国时代的日本人名字可真挺多的,贵圈够乱,这明显不利于 SEO 嘛。哪像咱们三国时候的人名,如曹操曹孟德,一个用到底,个人品牌。当然,这或多或少说明了日本就那么个弹丸之地,而一个大名的领地基本上也就是相当于一个村或者乡那么大,改了名街头巷尾吼几嗓子大家也就知道了。

说每个大名的地盘小,用数字或许能说明,号称当时最有实力进京、领有俊河、远江、三河的今川义元伐织田信长,出动了多少兵力? 两万五千! 自己的主力仅有五千, 而信长连五千都没,最后用急就章似的集合的千把人偷袭居然得手。这一仗今川一方死了武将 500 多,兵士 2500,这个比例着实让我费解,难道日本人在那个时代就已经掌握了管理学的方法:一个管理者最多只带几个兵,否则沟通上有问题...

相比家康的隐忍, 织田信长狂放更令人神往,的确是那个时代的一个怪才。不过胜今川义元的整个过程在这本书里会让人产生"误打误撞"之感,历史就是充满了巧合,短短几个时辰胜负已分。下一部信长"天下布武”,相信会有更多笔墨给描述信长。

织田信长最喜欢唱的这段《敦盛》词我找到了好几个版本:

人生五十年,
如梦亦如幻。
有生斯有死,
壮士何所憾?
--《织田信长》书中翻译的版本
人间五十年,跟下天比起来,如梦似幻,人生一度得生,焉有长生不灭者?
--百度百科上看到的版本
人生五十年(载),
如梦亦如幻。
有生斯有死,
壮士复何憾
--网上最多的版本。"复何憾"的确更有味道一些。

--EOF--

相关文章|Related Articles

评论数量(5)|Add Comments

本文网址:
最近作者还说了什么? Follow Twitter / Fenng

01:26 中国IT技术精英年会第一天 (1858 Bytes) » Oracle Life

©作者:eygle 发布在 eygle.com

今天是ITPUB年会的第一天,大约在中午12点左右赶到九华山庄,还好来得及吃午饭。
我来的已经算晚的,Puber已经济济一堂汇聚在九华山庄。

这个下午总结一下:
1.拿到了Piner的一本新书
2.见识了一下d.c.b.a的相机及高超摄影技术
3.听了一下午周鸿祎的神侃
4.跟牛总(binss)合了影

嘿嘿,祝愿ITPUB的年会明天更精彩!

相关文章|Related Articles

评论数量(1)|Add Comments

本文网址:

2008-01-11 Fri

21:47 Do it better with awk 2 (3098 Bytes) » Fenng's shared items in Google Reader

Note: The file format in the file below is the same as in my earlier article Do it better with awk 1.

Today I was able to meet Bryan of Guru Labs. During our conversation he posed the following question. “Find the 3rd field in a file consisting of space separated fields, the first being an ip address, in the range 192.168.1-2.1-255. There maybe lines in the file containing invalid ip addresses.”

I used grep to find the lines and then used awk to find the field. For example:

$ egrep '^192\.168\.[1-2]\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|2[0-5]{2})' access_log | \
awk '{print $(NF-1)}'
200
304
304
...

He pointed out that, while this works, there is no reason to invoke grep. He is certainly correct. Indeed, awk is all powerful! The default usage of awk is:

awk 'pattern { command }'

In its most common and simple usage, to print a field deliminated by spaces:

awk '{print $3}'

You are specifying no pattern, which matches every line. When solving the problem posed by Bryan, simply specify the pattern and eliminate grep from the pipe line. Here is the equivalent awk command:

$ awk '/^192\.168\.[1-2]\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|2[0-5]{2})/ {print $(NF-1)}' \
 access_log
200
304
304
...

Awk has some extremely powerful selecting operators. Here I am using the ~ operator to match the third field from the right (resource), to ^/man, and printing the matched field:

$ awk '$(NF-3) ~ /^\/man/ {print $(NF-3)}' access_log
/man/cmd/info
/man/cmd/Mail
/man/s/Z
/man/cmd/mv
...

This invocation uses the !~ operator, to match lines where the resource does not match the pattern ^/man:

$ awk '$(NF-3) !~ /^\/man/ {print $(NF-3)}' access_log
/feed/
/feed
/robots.txt
/10-linux-commands-youve-never-used.html
...

Here I am selecting lines where the response code $(NF-1) is greater than or equal to 200, but less than 400 and printing the resource and response code. I use awk’s boolean “and” operator && to perform this operation:

 $ awk '$(NF-1) >= 200 && $(NF-1) <= 399 {print $(NF-3), $(NF-1)}' access_log
/man/cmd/info 200
/feed/ 304
/feed 304
...

The following example uses the boolean “or” operator || to print lines where there resource matches ^/feed or ^/sitemap:

$ awk '$(NF-3) ~ /^\/feed/ || $(NF-3) ~ /^\/sitemap/ {print $0}' access_log
192.168.1.2 - - [01/Jan/2008:00:00:31 -0600] "GET /feed/ HTTP/1.1" 304 -
192.168.1.3 - - [01/Jan/2008:00:01:09 -0600] "GET /feed HTTP/1.1" 304 -
...
19:41 NETApp FAS3050/3050C技术规格 » 存储部落
19:37 NETapp FAS3020/3020C技术规格 » 存储部落
14:41 Targets » Oracle Scratchpad
09:43 MySQL Blob Compression performance benefits » Fenng's shared items in Google Reader
09:43 MySQL Blob Compression performance benefits » MySQL Performance Blog
08:58 Log Buffer #79: a Carnival of the Vanities for DBAs » Pythian Group Blog » Log Buffer
07:49 orionchris.cn » Chanel [K]
07:45 Goole_no_result » Photos from dbanotes
07:42 08.01.11 吸毒 » Fenng's shared items in Google Reader
06:18 Advert - Back to Basics » Oracle Scratchpad
05:51 提交SR的一些小技巧 » Fenng's shared items in Google Reader
05:28 随笔 » Think in 88
04:10 新存储系统疑问集中解答 » Fenng's shared items in Google Reader
01:13 New Beta Site Pushes AOL Finance To Top Spot » Fenng's shared items in Google Reader
00:28 出发,北京 » NinGoo@Net

2008-01-10 Thu

23:34 苦中作乐. 临时的座位 » Photos from dbanotes
23:31 我们为什么要参加各种会议 » Fenng's shared items in Google Reader
22:42 1226 006 » Photos from dbanotes
22:42 到处都能看到这个自以为是的烂字 » Photos from dbanotes
22:41 1226 009 » Photos from dbanotes
22:41 1226 008 » Photos from dbanotes
22:41 1226 007 » Photos from dbanotes
22:40 1226 004 » Photos from dbanotes
22:00 Ironic? » The Tom Kyte Blog
19:21 Joining Microsoft Live Labs » Fenng's shared items in Google Reader
18:45 敬请期待:《 少数派阅读报告》 » Fenng's shared items in Google Reader
18:01 为什么多了一个空格? » AnySQL.net
16:58 Do it better with awk 1 » Fenng's shared items in Google Reader
15:59 PHP vs. BIGINT vs. float conversion caveat » MySQL Performance Blog
15:54 第五大道和两岸咖啡 » 柔嘉维则@life.oracle.eng
15:03 Drupal 6 RC2 released » Fenng's shared items in Google Reader
13:24 我们为什么要参加各种会议 » Fenng's shared items in Google Reader
11:24 Filter plan error » Oracle Scratchpad
10:31 Sharding with Cookie-Based Session Storage » Fenng's shared items in Google Reader
07:53 Slides on cluster computing and MapReduce » Fenng's shared items in Google Reader