Yurii译文集


我为何爱读代码?你为何也应当爱?

原文:Why I Love Reading Other People’s Code And You Should Too by Alan Skorkin

翻译:Yurii

我恨读代码

我发现,许多程序员都讨厌读代码——拜托别掩饰了,承认吧。差不多每个人都喜欢写代码——写代码乐在其中。可是,读代码真是不容易,而且还很烦人,又无可逃避,其他人写的代码总是很垃圾(即便不说,我们心里也这么想的)。即使自己写的代码,过几个小时再看也有点垃圾,过的时间再久点,就更垃圾了。那么,还有什么理由去看别人的蹩脚代码,而是不自己写几手漂亮的?能不能暂且忽略这个问题,花上几个小时看别人的代码,再回头来看自己的是不是还那么漂亮?即便有位大师坐在你面前,如果你不能从他身上学习,你永远也成不了大师。办法之一就是找到这么一位大师,让他手把手地教会你全部知识。有这可能吗?——当然有,只是很难遇到这顶好的运气。不过你也不必奢求那么幸运,做程序员这行就很幸运,因为大师们的所有思想和技艺都凝铸在他们的代码里,供我们学习。你要做的只是阅读代码——当然,如果有人给你一点点地讲肯定更节省时间,但这基本属于痴人说梦。换句话说,要相当个好木匠,得仔细研究大量的精美家具。

我热爱读代码,我总是直观地认为读代码的收获很大,没错,它可能有点讨厌甚至烦人,但你的收益绝对大过这点麻烦。举个例子,你要当大作家,是不是只关心自己写东西就够了?你可以试试看,但是估计不会折腾不出什么名堂。公认的事实是,多数大作家都是会如饥似渴大量阅读的。想写出好的作品,必须先阅读其他大作家的作品,吸收不同的风格,了解他人的尝试,然后才可以培养自己的创造力。这样,你的知识才能逐渐积累,最终你写的东西才有几分成熟,你也才会找到“感觉”。写代码也是这样,如果你不去阅读那些伟大的代码,怎么可能把程序写的漂亮?阅读伟大的代码之于程序员,就如同阅读伟大作品之于作家(我不敢掠美,这句话是Peter Norvig(译注:Peter Norvig是著名的Lisp程序员,现任Google研发总监)说的,他可不是个简单人物,所以好好记住这句话吧)。

即使上面说的你都不信,但有个事实无可否认。要想当个称职的开发人员,能熟练阅读代码是非常重要的。如今,只要不是闹着玩的项目,都是团队协作的成果,所以总会有这样的代码:它不是你写的,但你必须跟它打交道,去修改,或者去扩展。于是,阅读代码很可能就是你身上最重要最常用的能力了,咬紧牙关练好这门本事吧——而且,要快。

要像…会读代码的那些家伙一样…阅读代码

我都说不清有多少次见过这样的事情了:程序员把一段不熟悉的代码上下拖动,几分钟之后仍然一脸迷离。不久他们就宣布,这段代码根本没法看懂,更不必浪费时间了,可以想办法绕过这个问题。我不知道他们真正要做的是什么,一点点弄明白这段代码的意思,还是睁大眼睛等着开窍?阅读代码不靠成年累月死盯着看,你要做的是弄懂它,把它变成自己的。下面说的是我用的一些技巧,但不是全部,不过我觉得这些非常有用。

看代码看到目光迷离

1. 尝试亲自构建和运行程序。通常这一步很容易做到,比如你看的是真正运行的工作代码时(而不是不知来源的古怪代码)就是如此。不过也不是每次都很容易,如果不能很容易地构建和运行,你可以在完成构建和运行的过程中,认识到代码的高层结构。而且,阅读工作代码,你会非常熟悉如何构建项目。构建通常是复杂的,但是了解构建过程,知道代码是如何变为可执行程序的,会大大加深你的理解。

2. 别死盯细节。读代码要做的第一件事,是找到对代码的结构和风格的感觉。开始应当浏览,并且努力找出各部分代码都在干什么。这样你能熟悉整套代码的高层结构,也会明白你正在看的是什么样的代码(重构良好的,还是乱成一团的)。这时候你要做的就是找到入口(可能是main函数,也可能是servlet,controller之类),看看下面的分支是怎么展开的。这一步不要花太多时间,你对全部代码更熟悉之后,随时可以退回来。

3. 确保理解所有构造(construct)。除非你非常精通这门编程语言,否则多半还有些东西是你不知道的。在概略了解代码的阶段,要记下每一个不熟悉的构造。如果这样的构造有很多,下一步就不言自明了。如果搞不懂代码行为的意义,你什么也干不了。即便你不熟悉的只是少数构造,仔细观察推敲没准也是好事。你可能会找到一些以前不知道的关于这门编程语言的知识,我就很乐意为此花上几个小时。

4. 待熟悉了大多数构造之后,就可以搞几次随机的深入探查了。做法类似第2步,快速浏览代码库,但是这次要随机抽几个函数或者类,一行行地看下去。真正的考验现在才开始,但你的收益也是从这一步开始显现。主旨是:真正深入到你所阅读的整套代码的概念体系(组件结构)当中。这又是一个速度快不起来的步骤,但是在这一步,一定要尝试深入理解若干繁杂的细节。和第2步一样,在这一步,每次你多了解了一些上下文再回头看看,你的理解就更深入一些。

5. 前几步中肯定还有你不明白的地方,现在最合适的就是跑几个测试,看看已有的测试。测试很可能会大大打消你的疑惑,加深你对所测试代码的理解。我时常不能理解,为什么有些开发人员在阅读和理解代码时,忽略严密而精巧的测试套件。当然,也有时候是因为没有测试程序。

6. 如果没有测试程序,这时候就该写上几个。这样做有很多好处,它会加深自己的理解,它可以完善整个代码库,在阅读代码的时候也在写代码,这样对已有代码和你都有好处,你也可以真正动手参与进去。即便有现成的测试程序,为了加深自己的理解,你也可以再写一些。测试人家的代码,一般要求换个角度思考,之前你感到迷惑的概念也会变得更清楚。

7. 把弄不懂的部分拿到单独的程序中来。我发现,读代码时这样做,哪怕只是为了调节阅读的节奏,也是非常有乐趣的。即使你不理解代码的底层细节,也可能会对代码的功能有些高层面的想法。那为什么不把一些功能抽到单独的程序中测试呢?如果只运行一小段程序,debug就容易多了,而且这样的过程反过来又会加深你的理解。

8. 代码很乱(dirty)很糟糕(smelly)?那么重构吧。我可不是建议你把整个代码库推倒重来,但是重构一些部分确实可以让你的理解更上层楼。一开始要做的是把你明白了的功能变为独立的函数。在你真正理解之前,重构之前的函数只是看起来没问题,而重构可以把它们变成你想要的样子。依靠重构,你可以把代码变成自己的,而不要全部重写。好的测试程序可以帮上忙,不过如果你没有,就一边测试一边重构吧,而且只改动那些你确认弄懂了的功能。即便测试看起来太少太不完善,也要相信你自己的开发水平,有时候你只管大胆尝试就好(如果确实需要,总是可以回退(revert)的)。

9. 如果上面说的都不管用,就找个同伴跟你一起读代码。能从读代码中受益的可能并不只有你一个人,所以不妨抓住其他人,一起阅读。不过别找专家,他们给你的解释都是高层面的,这样看代码时注意的那些细节就都被忽略了。如果找不到人一起阅读,你又实在看不懂,有时最好的办法就是问别人。可以问你的同事,如果你在读的代码是开源的,也可以在网上问问其他人。记住,这只是最后的办法,不要一开始就这么做。

如果时间很紧张,短时间内必须弄懂某些代码,上面的步骤中只能选一步,我会选择重构(第8步)。你可能没法明白太多东西,但你肯定可以理解真正动过的部分。无论时间是不是紧张,你要记住的是:如果你第一次接触重要的代码库,肯定不能一下子就看懂,甚至不可能很快看懂。你可能需要耐心读上几天,几周甚至几个月——坦然面对就好。即便有专家坐在你身边,也省不了太多时间(我写的关于教和学的系列文章最后一篇就会谈这个问题)。如果你读(或者写)代码的耐心足够,方法得当,你肯定能成为对项目所有方面都非常熟悉的人,也是大家对代码库有问题时出面解答问题的人。你也可以不阅读代码,选择成为那个总想找人来解释的家伙。我想要做哪样的人,我自己很清楚。

抓住阅读代码的机会,别错过

我们都喜欢新写代码,它的诱惑力在于,我们能搞定问题。起码,这次搞不定,下次可以搞定。真相是:你在实践中不断提高,永远不可能一下就彻底搞定。这就是新写代码的价值所在,你在练习,你的水平在提高,但是阅读和改动其他人写的代码也很有价值(至少不亚于自己重新写),从中你学习到的不光是有价值的技术知识,还有关于整个工作领域的知识(毕竟,代码才是文档的最终形式),这种知识通常更有价值。

每一段不遵循传统的,莫测难懂的代码,都是有价值的。你知道我说的是什么,虽然它看起来一团糟,但本意并非如此(也可能因为它是Perl代码:))。每次我看到这样的代码,我都这么想。不妨把阅读它当作猜谜游戏,想想你能学到什么。是的,这很折磨人,但必须承认,你也希望能动手就能写出这么糟糕的代码。如果你花时间阅读这样的代码,你肯定更可能写出这样的代码——这倒不是说,你一定会写这样的代码,但你肯定希望自己能够。最后要说的是,态度总是非常重要的。如果你把阅读代码看作闲杂事,那它就是闲杂事,而你肯定会逃避,但是如果你把它看成机会,事情就不一样了。

愚人节放送:以美国为首的西方国家,悍然干涉南非实行种族隔离政策的内政,并最终得逞,南非的教训值得我们重视!

Yurii翻译自http://en.wikipedia.org/wiki/Disinvestment_from_South_Africa,本文遵守GFDLCC-BY-SA 3.0协议。

南非撤资运动

Disinvestment from South Africa

南非撤资运动,初始于20世纪60年代,撤资运动目的在于抵制南非的种族隔离制度,但直到20世纪80年代才大规模开展。1986年,美国以联邦立法的形式推行了撤资行动(disinvestment campaign),据信,该行动迫使南非政府开始就种族隔离问题进行谈判,并最终废除了种族隔离制度。

在联合国的运动(1962-1965)

1962年11月,联合国大会通过了1761号非强制决议,成立了联合国反对种族隔离制度特别委员会( United Nations Special Committee against Apartheid),呼吁对南非实行经济等方面的制裁。所有西方国家都对制裁呼吁表示不满,抵制该委员会。
此决议的议案出台之后,总部位于英国的反种族隔离运动组织(Anti-Apartheid Movement,AAM)牵头安排了1964年4月在伦敦召开的关于制裁的国际会议。按照Lisson的说法:大会的目的是得出经济制裁方案的可行性,以及制裁对南非、英国、美国及其保护国的经济所产生的影响。因为知道对制裁行动最强烈的反对来自西方(包括身处西方的英国),该委员会竭尽全力多方向吸引社会各界人士发出声音、参与大会,保证大会结论的公正。
本次大会名为对南非进行经济制裁的国际大会(International Conference for Economic Sanctions Against South Africa)。Lisson是这样评价的:

确立了国际社会有组织的对南非进行经济制裁的必要性、合法性和可行性,该国的政策被视为对南非和世界之和平与安全的直接威胁。会议结果同时指出,为保证制裁产生效力,制裁方案必须有美国和英国参与,虽然两国也是执行制裁方案的主要障碍。

尝试说服英国政策制定者

大会并没有成功说服英国对南非进行经济制裁。相反,英国政府“坚持自己的观点,认为制裁是不符合宪法的,因为‘我们认为南非政府的做法并没有对国际和平与安全产生威胁,也不相信制裁能够对说服南非政府改变政策产生实质影响’”。
反种族隔离运动组织(AAM)尝试把制裁成为1964年英国大选的辩题之一,质询候选人对南非实行经济制裁并采取其它惩罚性措施的看法。大多数候选人都给出了肯定的回答。但是,获胜后的工党完全放弃了之前对种族隔离问题的承诺。随即,工党领袖Harold Wilson告诉媒体:工党“不会选择经济制裁,即便制裁真的有效,也会影响到我们最关心的人——必须要保持某种优雅生活的南非白人和黑人”。即便根据Lisson的说法,即便如此“AAM仍然希望新的工党政府能够比前任政府更好地感知公众的要求”。但是到1964年,形势已经很明显了,选举工党上台丝毫也没有改变政府对经济制裁的抵制态度。

西方的坚决反对

Lisson也概要描述了1964年在联合国令人失望的局势:

在联合国,英国始终不认可这一说法:南非的做法违背了联合国宪章第七条。相反,英国在美国的配合下,英国出台了对瑞佛尼亚审判(译注:1964年的瑞佛尼亚审判中,曼德拉和非洲民族议会的其他领导人被判处终身监禁)和其它政治判罪的言辞审慎的声明,尝试安抚亚非国家和本国及外国公众的意见,到1965年,制裁提议就无人问津了。

根据Lission的说法,英国的反对态度是以其在南非的经济利益为前提的,采取任何有实质意义的经济制裁,都会对这些利益产生威胁。

(more…)

欢迎转载,转载请注明出处。

Founders at Work, Chapter 12

Yurii 翻译

Livingston:你提到,Gmail最开始是“有争议的”,能接着说下去吗?

Buchheit:我觉得,一般来说,人们会不太适应不一样的东西。即使是现在,我谈到给Gmail增加新特性,除非是很小的改动,或是不改变现状,只做些调整,否则大家都不会喜欢。人们对“可能”的理解非常狭隘,相比真正的可能性,对于“可能”,我们的思维有许多局限。所以他们会不适应,他们有点喜欢想尽办法来反对。
但是我个人更钟爱新的东西,所以我总是非常愿意看看会发生的事情。这是我加入Google的最大理由。这理由足够强,强到我确信这是一桩好事:我只是觉得这很有意思,看到将要发生的事情,我很激动。
就这样,Gmail之所以让我激动,也是因为想看看大家会是什么反应。我喜欢某些不确定,因为这有点悬念、有点激动,好像是冒险,对吧?即便没有做成,你也可以从中学到很多。但不是每个人都喜欢冒险。许多人好像就是讨厌不确定。在生活的每个方面都讨厌不确定。
我忽然想起来,某段时间我问大家,如果他们在玩俄罗斯轮盘赌,有一把枪,枪有10亿个弹筒(或者非常多的,也就是说,他们被杀的可能性微乎其微),他们愿意花多少钱玩一盘?许多人都觉得这个问题很不礼貌,他们回答,“给我多少钱我也不玩”。但我们其实每天都在玩这个游戏。他们开车来上班,挣工资,其实一路都是在冒险,但是他们不希望知道自己其实在冒险。他们希望自欺欺人,假装一切都与风险无关。

(more…)

欢迎转载,转载请注明出处。

Founders at Work, Chapter 12

Yurii 翻译

Livingston: 那时候Google一门心思关注搜索,你有没有担心过自己的项目被抛弃?

Buchheit:一直都是。我还得说,现在看来Gmail很不错,但我们开发是很早时候的事了。Gmail是第一个真正偏离单纯“web搜索”的产品。Groups其实也依赖搜索——只不过它搜索新闻组里公开的帖子。

Livingston:Gmail还必须要邀请才能加入吗?

Buchheit:不用,你可以用手机申请。

Livingston:也可以通过Blogger,对吗?

Buchheit:我们已经向许多不同的方面开放了。大学生可以申请,我们希望开放给学生。

Livingston:为什么要邀请加入,这背后是怎么想的?

Buchheit:理由有好几个。我又得说一遍,邮件的问题很麻烦,不只是在数据规模那些方面。有个问题很重要,那就是,我不希望数据有任何损失,因为没人愿意弄丢邮件。如果web搜索出了问题,你可以退回去,重抓一遍网页,但是邮件不同,一旦丢了就不可挽回。
我非常关心系统的稳定性。策略之一就是控制用户的规模,这样就不会超出限制。你必须时刻确保当前用户享受到优质的服务。同样,这做法也约束了某些滥用email的行为,举例来说,这样发垃圾邮件的人就很难获得1000万个帐户——那样的后果很糟糕。

(more…)

欢迎转载,转载请注明出处。

Founders at Work, Chapter 12

Yurii 翻译

Livingston:还有哪些新特性是独创的?

Buchheit:对话视图——你打开某个对话,其中的所有邮件会像卡片一样列出来,而不是单独出现。

Livingston:这是你想出来的?

Buchheit:其实有好几个原因。其中之一是,我曾做过Groups,那里同样有归类(threading)。另一个是,我们内部有太多的邮件。
如果没有会话,就会出现这种情况:有人发出了一封邮件,有四个人回复了,五个小时之后还有人在回复,其他人会觉得,“这已经重复谈论过五次了,你还要回复。”
据我们观察,人们费那么大力气管理邮件的原因之一在于,他们尝试把对话归拢到一起。他们把邮件放到同一个文件夹——否则就会忘记,或是放错文件夹,对话就完蛋了,再也没法回复。
大家用各种工具和诀窍来管理会话。为什么不把它们直接归拢到一起呢?后来我们又想到,“我们来把引用他人的邮件内容隐藏起来吧”。因为这样阅读速度更快,而不需要浪费精力。我们同样希望集成IM聊天。做第一版的时候,我们没时间集成那个功能,但是很早的原型中就有聊天功能的,因为我们希望把聊天和email做到一起,这两者是一体的。所以,我们会从聊天的角度来看待email,所以我们给聊天加入email功能,而不是走其他的路。显然,聊天是为谈话服务的——没有人受得了分割成一条条的聊天纪录。所以,谈话视图也是从此而来——有段时间我们甚至把email的格式设定得更像聊天。

(more…)

欢迎转载,转载请注明出处。

Founders at Work, Chapter 12

Yurii 翻译

Livingston:这么说,你花了一天来做Gmail,而你不知道自己在做的事情的意义——之后呢?

Buchheit:很长时间里就只有我一个人,然后Sanjeef Singh加入进来。但是,在Google更换项目,尤其是那时候的Google更换项目,并不容易。不是说,某一天你就忽然去做一个新的项目了。那时候他正在做企业搜索,所以他还得花很多时间在企业搜索上。过了很久,Sanjeef才把大部分时间用在Gmail上。所以有很长的时间,Gmail的进展非常慢。
开始主要是我,然后是我和Sanjeev,之后另一个家伙Jing Lim也来了。团队的增长非常缓慢。做一个email那样迥然不同于Google传统的东西,这想法人们还是不太确定。

Livingston:你宣布:“这是了不起的东西,我们要发布了”。这是什么时候?

Buchheit:是发布几天以后。这项目很大。有些时候,我们似乎根本不可能完成它。

(more…)

Founders at Work是一本有意思的书,讲述了若干有意思的创业故事,我看得兴起,顺手把访谈Gmail创始人Paul Buchheit的一章翻译出来,给有兴趣的朋友看看。

欢迎转载,转载请注明出处。

Founders at Work, Chapter 12

Yurii 翻译

Paul Buchheit是Google第23名员工。他创造并领导开发了Google的Web邮件系统,Gmail,该产品引领了当今所谓“Web2.0”的众多特性。除此之外,Buchheit开发了Adsense的第一版原型,Google依靠这个程序在其它网站显示广告。在2000年一次关于公司价值的一次会议上,他提出了现在众所周知的公司信条:不做恶(Don’t be evil)。

尽管Buchheit算不上创始人,但他对Google的贡献,可能比其他许多创始人在创业时的贡献更大。Gmail其实是在Google内部诞生的——这是一个传奇般的项目,起初,它并不是公司的主要业务,只是由一小群人发起,而且,许多人开始并不看好它。

Livingston:讲讲事情的开头吧。Gmail是非正式项目(side project)还是公司指派的任务?

Buchheit:实际上两种因素都有。我很早就在做Email软件,当时大概是1996年,但只是个小项目。但Gmail的想法从来没有实现过。奇怪的是,大概因为一些别的理由,那时候我似乎就想叫它Gmail。这只是凑巧——它并不必然是Gmail的前身,却是我一直在思考的,因为我长久以来就对email不满意。
那时候我在学校念书,还没有hotmail。要看邮件,你得回宿舍。我想,这可真够傻的,我应该能在任何地方检查邮件。所以就想做基于web的邮件。我真的不知道那时候自己在干嘛,因此也没什么结果。我写了点程序,但一直没什么用处,也从来没投入实用。
中间内容就不提了,直接说最后:我到了Google,为Google Groups工作,groups和email不完全一样,但是有关系。等Google Groups的第一代产品差不多完善之后,他们问我,是否愿意开发某种email或是针对个人的产品。这只是一个粗略的意向。他们只是说:“我们觉得这类东西有点意思”。当然,我很高兴干这个。

(more…)

第23章 时间从哪里来

在漂亮姑娘身旁,一小时就像片刻;而在热火炉上,片刻就像一小时。所谓相对,就是如此。

——爱因斯坦

每次客户要求我拿些现实的例子来支撑理论,时间都过得比坐在火炉上还慢。前不久,我与一些客户共进晚饭,归纳整理计划个人改变的理论。Clayton说:“我自己的工作就够忙的了,哪还有时间做改变?”
于是我们开始讨论起时间管理来,对这个问题,我的了解跟爱因斯坦差不多:理论多,实践少。我希望吃顿轻松的午餐,于是打断他的话说:“Clayton,时间不是找来的,而是挤出来的。如果你真正想做某件事情,总会挤出时间来做的。所以,如果你觉得没时间,可能就是你并不想做。可能你应该找个办法来放弃。”
我觉得这回答够意思,能就此打住了,但是Melanie转过来对我说,“这说法不错,但还不够彻底。怎么挤出时间,你有什么建议吗?”
“一点点而已,”我一边敷衍,一边吃了根胡萝卜,“但是现在没时间详细讨论这个了。”
“肯定有——如果你真的愿意,” Melanie说,“而且,大家在一起的时间,只有这么几个小时了。我们可不能浪费。”
我尝试改换话题,告诉他们我也很忙,因为我吃过饭必须赶去瑞士的航班。美国人,只要你告诉他们关于瑞士的故事——威廉•退尔的故事,海蒂的故事,爱因斯坦的故事——通常会忘掉一切。我描绘了这个理想国度的景象:美丽、高效、洁净、友好、治理有方。我解释说,瑞士人时时处处都体现出效率,这种效率让你觉得每个瑞士人肯定都能一心二用,而且每个人都有时间为外人提供礼貌的帮助。我以为这样能转移Clayton和Melanie的注意力,但没有用。
“他们怎么做到这点的?”Clayton问。“听起来,我可以从瑞士式办法中学到一些关于时间管理的知识。”

专注于目标

看着Clayton拨朝鲜蓟上的刺,我体会到了Frankenstein博士必定经历过的感觉。Clayton以前是响应积极的学员,现在却成了我的噩梦,我知道,自己必须仔细对待他的要求。“听听人们自己的故事,多半能有所收获。”我这样回答,希望能讲个长长的故事分散他的注意力。
“那么讲个瑞士人自己的故事吧。” Clayton上了钩,于是我讲了个自己最喜欢的故事:

奥地利大公正在访问年轻而弱小的瑞士联邦。为了试探军队的士气,他照例挑出一名普通士兵问:“你们有多少人?”这次,大公选了个没刮胡子的年轻人。
“五千人,长官。”回答准确而自豪。
“嗯…,真是不错。但是,如果我派一万人的军队来攻打,你会怎么办?”
士兵回答得毫不迟疑:“长官,那么我们每人都要开两枪。”

“我知道了,”听完故事,Clayton说:“这是一个关于时间管理的绝好比喻。瑞士人的秘密就在于,每一颗子弹都要有目标,就好像Kipling说的,努力才能‘用六十秒钟来填满无可挽回的每一分钟’。如果你像瑞士人一样有效率,就有时间处理任何事情。但是效率要从哪里来呢?”
这个话题可不是我最擅长的,所以我让桌上其他人讲讲他们争取时间的办法:
不要重复你已经布置下去的任务。亲自做的话,同样的工作你得花几倍的时间:第一次是给人家解释,然后是把任务接回来,还不能伤害人家的感情(这完全不可能),然后是弥补他们犯下的错误,然后最后是自己做。“无论什么时候,只要有人暴露出做错的迹象——即便不确定——我也会把任务接过来,教育他们。” Margo承认,“我最终明白了,你必须让他们犯错误,这是你必须付出的代价,从长期来看,这样的效率更高。”
不要争论细节技术来证明你的技术优势。“你的事业不断发展,” Dirk说,“就必须放开一些事情。争论技术细节只能说明你还放不开。我真正当上技术领导之后,”他解释说,“就不再有什么冗长的争论,因为我能轻松说服他们。”
自己划分事情的主次,不要借助危机来安排你的行为。Linda承认:“忽然间我就被任命为领导了,不但需要为他人安排时间,还需要为自己安排时间。对这个我一点经验也没有。我期望出现危机,因为危机下我的行动井然有序。现在我却很困惑,自己可能参与促成了某些危机,这样才表现出我组织有方。我觉得,领导面临真正的考验在于,没有危机的时候她在做什么。”

一心两用

桌上的每个人都说了他们的答案,这样我就能安心吃自己的朝鲜蓟。但是Clayton不放过我。他问我:“另一个瑞士故事是什么?”。Clayton是我的学员,他知道我的弱点。
“好吧,”我只得让步,“但这是最后一个故事。它讲的是瑞士的建立。”

创造了世界上的所有人之后,上帝依次给大家创造国家。上帝问第一个瑞士人,要一个怎样的国家,他回答很谦卑:“什么都行”。上帝坚持问他自己的喜好,于是瑞士人说,“好吧,如果您坚持的话,我希望能有山,顶上覆盖白雪,山坡长满青草,清澈的溪水穿过峡谷,蓝天上点缀着蓬松的白云。”
上帝马上实现了这一切,然后问他还有什么别的要求。瑞士人推托不过,只好说,“如果还有石头屋顶的木头房子,最好还有些棕色的奶牛在吃草,我就感激不已了。”
上帝又实现了这些,然后问瑞士人,是否还有别的要求。“没有了,您已经足够慷慨了。我真的不能再要求任何东西,但是关于您呢?对于你的赠与,我肯定有些东西能回报您。”
“噢,其实,”上帝说,“造了这么多东西,我有点渴了。如果你能给我一杯新鲜的牛奶,那就非常感激了。”
“非常荣幸,”瑞士人说,他跑去取了个玻璃杯,乘上美味可口的瑞士牛奶,上帝一口喝了下去。
然后上帝又问瑞士人:“显然,还有些你想要的东西。其他所有人都无休止地要求财富。你想要什么?”
瑞士人稍作迟疑说:“是的,还有一点小的要求。”
“那告诉我吧,那就是你的。”
“好吧,如果不嫌太过分的话,请为牛奶付一个法郎。”

“真棒,”Clayton说,“瑞士人岂止是有效率,他们的效率简直是一般人的两倍。他不要求财富,而是要求能带来收入的东西,即便上帝不再造物,也不再为牛奶付钱,这些东西还是能持续带来收入。”
“我想你是对的,Clayton。”我回答说。“就好像瑞士人一样,成功解决问题的领导能够创造一个环境,环境带来的回报要超出他们的付出。同时,这个环境似乎能帮助和它相关的所有人,没有人会受骗上当。”
……

注:

威廉·退尔:十四世纪,统治瑞士的奥地利总督肆意压迫人民,竟于闹市竖一长竿,竿顶置一帽,勒令行人向帽鞠躬。一日,农民射手退尔经其处,抗命不鞠躬,被捕。总督命于退尔幼子,头顶置一苹果,令退尔以箭射之,如射中,方得免罪。退尔射中苹果。同时又出示一箭,声明如不幸射中幼子,即以此箭返射总督。总督怒,食前言,再捕退尔。押解途中,登舟经一湖面,风浪大作,将士危惧,退尔趁机一箭射杀总督后逃脱虎口。民众拥之为首领,共同反抗奥地利统治,祖国终得自由。罗西尼曾为此创作歌剧《威廉•退尔》,其序曲非常有名。

海蒂:海蒂是苏黎士女作家约翰娜•斯皮利创作的儿童形象,海蒂出身贫寒,很小就到德国法兰克福一个贵族家庭当小佣人。后来,被亲戚带回瑞士,送到在阿尔卑斯山区的爷爷家。海蒂虽然年小,却具有感人的人格魅力,有“瑞士第一公民”之称。

题记:

李笑来老师的博客上有一个分类叫“想明白”,这个名字,我非常喜欢。
想明白,意味着动用自己的智力,认清现实,更重要的是,打破思维定势,找到问题的症结。
《精通正则表达式》里面,作者Jeffrey讲过一个故事:某个任务,他希望用正则表达式“完美解决”,多番尝试都无功而返,最终发现,正则表达式,再配合一个字符串判断,就能很好地解决这个问题。这个故事告诉我们:不要迷信正则表达式(工具),要跳出来,想想真正的问题是什么。
这个故事我印象很深。天气不那么冷的时候,骑车下班回家的路上,我有时会到马路另一边的超市买袋豆浆。有一天,超市门口停自行车不再免费,而且收费区域日渐扩大。为了找个免费停车的地方的(为买袋豆浆交2毛钱,实在有点不值,也不喜欢口袋里有大堆钢蹦),我要走的路越来越远。终于有一天,我发现自己其实没有“想明白”:我要做的是:停车,去超市买豆浆,这两个任务不是紧密捆绑的,而马路这一侧恰好有免费的停自行车位。于是我都不用推车过马路,只需要下车停好,走过去买豆浆,回来上车走人,就这么简单:)
补充一点,“想明白”还有其它的好处:你“想明白”的事情越多,“想明白”的能力就越强,也就能越来越快地“想明白”更多的问题——每多想明白一个问题,都有助于想明白将来的一系列问题。

技术领导之路:序

Jerry Weinberg讲过一个故事:天文学家在花园俱乐部演讲,介绍宇宙起源的“大爆炸”理论。介绍结束,后排一位女士大声说:“年轻人,事情不是这样的。世界其实是驼在一只大龟背上的。”

这样的说法常人无法想象,天文学家却毫不意外,他冷静答道:“那么,大龟趴在哪里呢?”,女士的回答同样冷静:“显然,在另一只大龟身上。”天文学家觉得自己胜券在握了:“那么,请您告诉我们,这另一只大龟趴在哪里呢?”。女士平静地笑笑,信心满满,“不,别客气,海龟是一只一只叠起来的。”

Jerry Weinberg的书很多时候类似他的故事——就好像层叠的海龟。他的书很难一口气读完,因为每一章的内容都像他讲的那些小故事,包含许多层的意思。我多次发现自己在停下来思考——思考Jerry刚刚说过的话,思考我针对Jerry的话的思考,思考我针对思考的思考……你知道我想说什么。所以我先给读者提个醒:Jerry的写法往往会引发严谨的思考。

一方面,《技术领导之路》是一份非常实用而详尽的指导。另一方面,全书又都在打比方,其中随处可见日常熟悉的事物——讲授管理技巧,用的是关于弹子球、Tinkertoy玩具(一套组合玩具,孩子可以发挥想象力,拼装出各种结构和形状——译者注)和电热毯的故事。再一个方面来说,这本书讲的是管理技术工程的哲学和心理学。

尽管本书令我偏爱有加,但也存在些问题。最主要的问题就是篇幅太长,Jerry在每一章中开列了太多关于思考和管理的想法和规则,如果你走马观花地看过去——为了写这篇序言,开始我就打算这么干——基本就会一无所获。问题之二是篇幅太短。你以为Jerry就要告诉你如何解决世界上的主要问题了,书也就读完了,你发现,其实Jerry只是鼓励你自主独立思考。

回头看看,我觉得自己是被标题误导了。我猜你甚至会说,这本书与成为技术领袖没什么关系。但是实际上,这本书的核心内容是与Jerry所有的书一样的:如何思考,以及如何审视你想问题的思维。循着层叠的海龟往下,Jerry指出,在管理和人事协调的实际问题中,大多数显而易见的解决办法其实偏离了问题的核心。所以,他提出简单易行、而又截然不同的办法,来看待我们自认为已然了解的事物。

读者有幸,Jerry Weinberg把剖析复杂的技术和管理问题——尤其是现代的组织中,两者不寻常的混合体——作为毕生的工作。他的每句话都直指要害。我一而再再而三地发现,自己一面开怀大笑,一面尴尬不已。

还有一点。任何一篇负责任的序言,都应该为书本推荐适合的读者群。本人当然也会这么做。对于这本书,我诚挚地将它推荐给三类人:(A)管理者;(B)被管理者;(C)认识A类或B类人群,或是在他们身边的人。如果你有幸落入其中一类,这本书你必须读。

Jun. 1986  Ken Orr, President
Topeka, Kansas Ken Orr & Associates, Inc

按:这大概是03年左右翻译的文章,今天见到牛博网李子暘兄转贴,仔细看过,发现若干错误,惭愧之下,勉力修正,重贴于此。

什么是奥地利经济学

Yurii 译

原文链接

奥地利学派的历史可以追溯到15世纪。当时西班牙萨拉曼卡大学(University of Salamanca)写作和教学的人里面,有些是圣托马斯·阿奎纳的追随者,他们试图解释所有的人类行为和社会组织,这可以算作奥地利学派的起源了。

这些晚期经院哲学家(Late scholastics)发现,世界上存在某些经济规律,或者说把原因和结果联系起来的不可抗力量,它们的作用和其他自然规律极为相似。此后的几代人经过努力,在这一基础上发现并解释了供给和需求的规律、通货膨胀的原因、交换汇率以及经济估价的主观性质——所以约瑟夫·熊彼得称赞他们是最早的真正的经济学家。

晚期经院哲学家是财产权、契约与贸易自由的支持者。他们赞颂商业对社会的贡献,固执地反对征税以及管制价格和商业机构的做法。作为道德神学研究者(moral theologians),他们强烈要求政府也必须服从道德规范,不得偷盗和抢劫。这些经院哲学家实践的正是后来路德维希·冯·米塞斯的准则:经济学家的首要任务是告诫政府,什么是政府不应当做的。

第一篇关于经济学的论述是1730年理查德·坎迪伦(Richard Cantillon)发表的《论商业的性质》(Essay on the Nature of Commerce),他是个受过经院哲学传统教育的人。坎迪伦生于爱尔兰,后来移居法国。他视经济学为一个独立的研究领域,并通过“思维实验 ”(thought experiment)解释价格的形成。他把市场理解为企业的经营行为,同时坚信奥地利经济学对增发货币的看法:增发货币对整个经济的影响是一点一点扩散开来的,同时这种扩散会扰乱价格体系。

紧随坎迪伦之后的是杜尔哥(Anne Robert Jacques Turgot),他是拥护市场制度的法国贵族,也是旧时代的财政大臣。杜尔哥的经济作品为数不多但思想深刻。他的《价值和货币》(value and Money)清楚地揭示了货币的起源以及经济选择的实质:这种选择反映的是经过主观排序的个人偏好。另外,杜尔哥不但解决了此后困扰古典经济学家的著名的钻石与水的悖论,还阐明了回报的递减规律,同时批判了对高利贷的控诉(这是与晚期经院哲学不同的关键点。经院哲学家无法解释利息存在的原因,因此他们认为高利贷是不道德的——译注)。身为古典自由主义经济政策的拥护者,杜尔哥主张废除与政府有牵连的行业的所有特权。

(more…)

Next Page »