2006年3月30日

人月神话之编程的乐趣与苦恼


晚上学习《人月神话》时,在开篇重看到了下面的两部分文字,结合自己编程的经验,我感觉非常的贴切。留在这里和大家一起分享,如果你也有共鸣的话建议你也阅读一下这本好书,呵呵,在这里留言更好哦,大家一起学习啦:)


职业的乐趣

编程为什么有趣?作为回报,它的从业者期望得到什么样的快乐?

首先是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到愉快一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦。

其次,快乐来自于开发对其他人有用的东西。内心深处,我们期望其他人使用我们的劳动成果,并能对他们有所帮助。从这个方面,这同小孩用粘土为“爸爸办公室”捏制铅笔盒没有本质的区别。

第三是整个过程体现出魔术般的力量——将相互啮合的零部件组装在一起,看到它们精妙地运行,得到预先所希望的结果。比起弹珠游戏或点唱机所具有的迷人魅力,程序化的计算机毫不逊色。

第四是学习的乐趣,来自于这项工作的非重复特性。人们所面临的问题,在某个或其它方面总有些不同。因而解决问题的人可以从中学习新的事物:有时是实践上的,有时是理论上的,或者兼而有之。

最后,乐趣还来自于工作在如此易于驾驭的介质上。程序员,就像诗人一样,几乎仅仅工作在单纯的思考中。程序员凭空地运用自己的想象,来建造自己的“城堡”。很少有这样的介质——创造的方式如此得灵活,如此得易于精炼和重建,如此得容易实现概念上的设想。(不过我们将会看到,容易驾驭的特性也有它自己的问题)

然而程序毕竟同诗歌不同,它是实实在在的东西;可以移动和运行,能独立产生可见的输出;能打印结果,绘制图形,发出声音,移动支架。神话和传说中的魔术在我们的时代已变成了现实。在键盘上键入正确的咒语,屏幕会活动、变幻,显示出前所未有的或是已经存在的事物。

编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望,而且还愉悦了每个人内在的情感。



职业的苦恼

然而这个过程并不全都是喜悦。我们只有事先了解一些编程固有的烦恼,这样,当它们真的出现时,才能更加坦然地面对。

首先,必须追求完美。因为计算机也是以这样的方式来变戏法:如果咒语中的一个字符、一个停顿,没有与正确的形式一致,魔术就不会出现。(现实中,很少的人类活动要求完美,所以人类对它本来就不习惯。)实际上,我认为学习编程的最困难部分,是将做事的方式往追求完美的方向调整。

其次,是由他人来设定目标,供给资源,提供信息。编程人员很少能控制工作环境和工作目标。用管理的术语来说,个人的权威和他所承担的责任是不相配的。不过,似乎在所有的领域中,对要完成的工作,很少能提供与责任相一致的正式权威。而现实情况中,实际(相对于正式)的权威来自于每次任务的完成。

对于系统编程人员而言,对其他人的依赖是一件非常痛苦的事情。他依靠其他人的程序,而往往这些程序设计得并不合理,实现拙劣,发布不完整(没有源代码或测试用例),或者文档记录得很糟。所以,系统编程人员不得不花费时间去研究和修改,而它们在理想情况下本应该是可靠完整的。

下一个烦恼——概念性设计是有趣的,但寻找琐碎的bug却只是一项重复性的活动。伴随着创造性活动的,往往是枯燥沉闷的时间和艰苦的劳动。程序编制工作也不例外。

另外,人们发现调试和查错往往是线性收敛的,或者更糟糕的是,具有二次方的复杂度。结果,测试一拖再拖,寻找最后一个错误比第一个错误将花费更多的时间。

最后一个苦恼,有时也是一种无奈——当投入了大量辛苦的劳动,产品在即将完成或者终于完成的时候,却已显得陈旧过时。可能是同事和竞争对手已在追逐新的、更好的构思;也许替代方案不仅仅是在构思,而且已经在安排了。

现实情况比上面所说的通常要好一些。当产品开发完成时,更优秀的新产品通常还不能投入使用,而仅仅是为大家谈论而已。另外,它同样需要数月的开发时间。事实上,只有实际需要时,才会用到最新的设想,因为所实现的系统已经能满足要求,体现了回报。

诚然,产品开发所基于的技术在不断地进步。一旦设计被冻结,在概念上就已经开始陈旧了。不过,实际产品需要一步一步按阶段实现。实现落后与否的判断应根据其它已有的系统,而不是未实现的概念。因此,我们所面临的挑战和任务是在现有的时间和有效的资源范围内,寻找解决实际问题的切实可行方案。


这,就是编程。一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。对于许多人而言,其中的乐趣远大于苦恼。而本书的剩余部分将试图搭建一些桥梁,为通过这样的焦油坑提供一些指导。

2006年3月29日

笔记薄记下事项和结束时间,然后灵活完成

近日和Stream老师讨论了很多的关于时间管理的话题。

老师问如何进行高效的时间管理?其实这个问题,我一直在思考,在揣摩各种方法,也在不时的学习各种方法和理论。日前我的blog中转贴的"[时间管理经典]Do it now"(虽然反对转载,但是这个文章非常的好,道德些的我注明原文链接的基础上还是转贴了过来)。我没有直接回到老师的问题,而是向老师推荐了我转载的这篇文章。

文章很长,共有76段,12000字左右。其实一般遇到如此长的文章,我的处理方法(或者叫习惯)是开头认认真真的阅读其中的相关的一些章节,然后随着看的时间长了就用鼠标滚筒快速翻滚几下,然后看到文章的末尾。等到看完文章心里可能会有很多当时的感慨,有很多的想法。但是如果再过几天,我想留在脑海里面的只是那篇文章的主题,具体的内容和当时的一些想法可能也就忘在脑后了。

老师非常认证的阅读了这篇文章,我估计阅读时间得有20分钟以上。之后的第二天老师说他又非常认证的看了一遍。老师阅读这类文章的速度我很清楚,这篇文章老师花了这么多的时间和精力来阅读和体会它,可见这篇文章的重要程度。老师的感慨是文章些的很好,但是如何能够保证执行呢?老师的这个问题我认为非常的好。因为,我对这篇文章中看到的那些好的方法和技巧已经不能一一尽数了。忽然想到这个问题,为什么一片如此好的文章,在我的脑海中留下的印象如此浅呢。联想自己当初认证阅读论文准备Reading Group演讲的时候,一篇论文我能几乎从头到尾重述一遍,其中也能找到很多的灵感来支持我的研究工作。我想阅读这篇文章效果如此不好的本质原因,是我没有重视它,紧紧将它看成了一种文字而已,没有逐字逐句的去剖析它。

同样的情况在我的身上经常的发生。两年前向朋友们推荐过的“麻省理工人工智能实验室的如何做研究”。我在之后的两次重读中都体会颇深。我现在感觉到了这种级别的文章是需要剖析的。应该向准备Reading Group那样来学习这种文章,其中能够学习和领会到的东西一定会是让人受益无穷的。而且还有一点是,这些文章都是需要经常性的拿出来重读的,我感觉半年至少应该阅读一遍。因为在半年的经验积累的基础上,重新阅读就会有新的感受。

晚上我开始非常认真的去学习这篇文章,虽然此刻还没有学习完。我发现当我认真的领会和拜读这篇文章的时候我学习到了更多的东西,领悟的深度比几天前的那次阅读深了很多。认真在我的笔记薄上记载着我对这篇文章的一些摘抄和体会。我现在学习到了“一时一事”,那个部分的第一段给我了很深的感触。内容是:“我坚持非常基础的用纸-笔记录要做的事,而并非某些精细的组织系统。我唯一的组织工具只是一个笔记薄,在上面我写下所有任务以及它们的完成期限。我并不为预先的安排和次序而担忧。我我只需看一眼清单,选出适合空余时间的要事即可。一完成这个任务,就把它从列表里去掉。”其中提到的每次写下任务以及完成期限,之后随时找出事情来完成。这个技巧,对比于我的每次只列出任务而没有列出完成期限高明了很多很多。因为我的时间管理计划模式经常的出现问题,前一阵子我的工作状态低靡部分原因我想就是长期问题积累形成的。稳重的这个技巧是如此的简单明了,以至于能够马上执行。看着自己笔记薄上的事项列表没有完成期限我真的感觉自己需要纠正自己的行事方式。

找到了原因,学到了这个技巧,那就照做吧。我相信我的时间管理和计划执行能力会在这个技巧的辅助下提高很多的。

2006年3月28日

[Collection]如何才能去做喜欢的事情

如何才能去做喜欢的事情
Paul Graham
翻译: 王亮

修订历史
修订 1.0 2006年2月7日
初稿

摘要

本文译自Paul Graham的How To Do What You Love,原文链接为http://www.paulgraham.com/love.html 。欢迎到HowToDoWhatYouLove 讨论本译文。


--------------------------------------------------------------------------------

目录

工作
界限
诱惑
慎重
两条路
致谢
喜欢一件事才能做好它,这可不是什么新想法,用4个字概括:"Do what you love."(“做你喜欢的事”)。然而,知易行难。

小时候没有人告诉我们这些。当我还是个孩子的时候,以为工作和娱乐截然不同。生活分成两部分:有时候大人给点活干;剩下的时间就去玩,随心所欲。偶尔,大人让做的事居然挺有趣,而玩也会有不开心的时候,比如摔倒受伤。但这种情况不多见,通常,干活都没啥意思。

既然上学是为了工作,那它肯定也很枯燥。

生活有工作和娱乐两种状态,相应地,人被分成两种,大人和孩子。大人要辛苦地工作,孩子虽然不用工作,但他们得去学校学做一些简单的事,为将来打基础。就像孩子们不喜欢学校一样,大人们也都不爱工作,这似乎显而易见。

老师尤其相信工作没有乐趣可言,这并不奇怪,因为绝大多数教师没体会过教书的乐趣。就像孩子们不能玩躲球游戏(dodgeball),非要背各个省的省会一样,老师也不得不看着这些孩子,不能躺在海滩。谁都不能想干什么就干什么。

这么说并不代表我认为允许孩子自做主张是对的,他们总得学会点什么。但是,如果大人告诉孩子“工作不都是这么枯燥,现在之所以要做些很闷的事,恰恰是为了以后可以选择能带来乐趣的工作”[1]是不是效果更好呢?

在我9岁或者10岁的时候,父亲曾告诉我,只要我喜欢,长大了干什么都行。这话我记得很清楚,因为听起来好像有人告诉我水是干的一样怪异。虽然我不敢肯定父亲想告诉我什么,但肯定不是说工作能像娱乐一样带来乐趣。过了好多年,我才弄明白这一点。

工作
很多人读完高中就开始工作了,所以,大人会在孩子读高中的时候向他们讲些工作上的事,也允许孩子跑去看他们工作的样子。那时我总觉得大人都很喜欢各自的工作,现在回头想想,也许只有私人飞行员才真正喜欢,银行经理肯定不喜欢他的那份工作。

有一种说法,中高层人士都喜欢自己的工作。于是,人们都装模作样喜欢自己的工作,仿佛自己是中高层人士中的一员,否则不仅会影响其职业生涯,而且显得没有教养。

本文第一句话可以解释为什么人们都要装作喜欢自己的工作。如果一个人只能做好他喜欢的事情,那么,有些人能成功,就是因为喜欢自己的工作。如同在美国,家家户户都有250年前法国国王用椅的不同程度的仿制品一样(尽管主人可能并不太清楚),人们对工作的态度也是在不同程度上、有意无意地模仿成功人士。

假装喜欢自己的工作的做法必定把孩子弄得精神错乱,等他们到了开始思考喜欢什么工作的年龄,绝大多数人已经完全被这种“干一行爱一行”的观点所误导。一方面,学校教导他们工作是一种责任,但毫无乐趣可言,工作甚至比上学还辛苦。另一方面,身边的大人却口口声声说他们喜欢工作。孩子们会想:“我和他们不一样,我不属于这个世界。”这不是孩子的错。

学校和大人们不一致的说法使孩子们错误地认为:学校里学会做的事情并不是真正的工作;工作不比学习更糟;要么那些说喜欢工作的大人都在说谎。然而,三种说法全是错误的。

最危险的谎言来自孩子的父母。如果某人选择无聊的工作是为了让全家人生活得好一点――很多人也真的是这么做的――那么他的孩子很可能受其影响,也认为工作挺无聊的[2]。而如果父母能为自己多考虑考虑(选择自己喜欢的工作,尽管以牺牲全家人的生活质量为代价――译者注),教出来的孩子反而会好一些。热爱工作的父母对子女的影响是昂贵的房子无法带来的[3]。

读大学时,我才明白养家糊口不是工作的唯一目的。选择什么工作要比赚多少钱重要。虽然人们一般认为工作就是为了生存,但也有特别值得一提的故事(比如说爱因斯坦在专利局上班)说明,事实并非总是如此。

如今,工作的目的是为世界做出贡献,同时也要能够生存。可是这么多年来,我一直无法改变自己的错误想法,认为工作中令人痛苦的事情很多。工作中仍然需要不断钻研,所谓“天将降大任于斯人也,必先苦其心智,劳其筋骨……”。所以,人们不得不强迫自己做这些工作。

如果认为工作注定是件痛苦的事,当工作中出现错误就觉察不出来。这就是我在研究生院学习期间的思考所得。

界限
一个人能够喜欢工作到什么程度呢?如果他不知道这个问题的答案,就不知道该在什么时候停止寻找。另外,如果他像其他人那样,低估了对工作的热爱之情,又会过早地停止寻找。他或者会听从父母的安排,或者去追名逐利,又或者什么也不做。

一方面,“做你喜欢做的事”不意味着做此时此刻最想做的事,即便是爱因斯坦也会有想喝咖啡的时候,但他会告诫自己先完成手头的工作。

我总是无法理解有些人非常喜欢自己的工作以至于其它的事都不想做,因为我从来没有如此喜欢过一份工作。如果我可以选择(a)花一小时做点什么,或者(b)瞬间转移(teleport)到罗马,然后在那里闲逛一小时。我会更喜欢哪一个呢?说实话,都不喜欢。

然而,在某些特定的时刻,几乎每个人都会倾向去Carribbean飘流、做爱、或者享用美食,而不是去解决难题。做自己喜欢的事是有时间范围的。不能是只在某一刻特别想做的事,必须要持续一段较长的时间,比如一个星期或者一个月。

没有成果的快乐是无法持续的,如果厌倦了躺在沙滩上,而又想保持快乐,就得做点事情出来。

另一方面,必须得喜欢工作多一点,喜欢享受少一点,要有不做点事就闲得难受的劲头。当然也不能没日没夜地工作,可以坚持工作直到疲劳为止,然后可能想做点别的,甚至只是发呆。但不要把这种时刻当成一种奖励,或者辛苦工作的补偿。

我这么说是有原因的,如果一个人在做着自己并不喜欢的工作,那么不会有什么成就,因为强迫自己工作不可能比别人做得好。

要想工作得快乐,不仅要做自己喜欢的事,而且是令人佩服的事,是那种做完可以说“哇,太酷了”的工作。不一定非得制造点什么出来,学会开滑翔机,说一口流利的外语,都足以让人感觉很酷,至少是那一刻。可以用这种方法来测试自己。

我认为读书就不符合这一标准。除了某些数学书或者实用科学书籍,很难准确说读完一本书后的感受,这也是为什么读书和工作不太一样。只有在实践中运用了读到的知识,才会感觉有收获。

Gino Lee告诉过我一个好方法――做一件能让你的朋友说“哇”的事情。但这可能不适用于22岁以下的人,因为他们认识的人太少,碰不到真正的朋友。

诱惑
我认为,一个人不应该在乎别人的看法,除非是他的朋友。不要想着出名,不必太在意众人的意见。能够得到尊敬的人的意见就够了,何必在乎那些根本就不认识的人呢?[4]

说起来容易做起来难,对孩子来说更是如此[5]。出名极具诱惑力,甚至可以让人放弃其所爱,转而去做一些他渴望喜欢的事情。

比如,有些人之所以写小说,是因为他们喜欢读小说,而且发现写小说可以得诺贝尔奖,于是乎他们会想,难道还会有什么工作比成为一名作家更好吗?但是,渴望成为一名作家还不够,还要喜欢写作,喜欢编故事。

精诚所至,金石为开。把一件事做到最好,就能赢得声望。然而,做某些工作会带来声望是后来才有的,爵士乐就是一个例子,其它成熟的艺术形式也是如此。所以,尽管去做喜欢的事吧,声望自会随之而来。

声望对于雄心勃勃的人来说是最危险的诱惑,想让这种人办事,只需向其保证一定的声望即可,比如让其做演讲、作序、服务于某个委员会、以及做个部门头头,等等。所以最好的建议就是不要做这类工作,如果它有趣的话,人们就无需使其听上去很美了。

同理,如果同样喜欢两种工作,其中一种会带来更大的声望,那么就选择另外一个。声望会一点点地改变人们的爱好,所以如果自己无法区分的话,那么很可能真正喜欢的是不引人注目的那个。

金钱同样使人堕落。钱本身并不危险,有些工作虽然可以挣很多钱,却被人瞧不起,比如电话推销、卖淫、或者人身伤害诉讼。做这种工作的人最终会是那些“只求生存”的人(建议:如果某个行业的从业者这么说,不要做这个行当),有追求的人才不会被其诱惑。真正的危险来自于名利双收的职业,例如从事企业法律或者医学工作。一份既有保障又有前途的工作,再加上一点可以不劳而获的声望,才是对青年人最大的威胁,因为他们还没开始思考什么是他们真正喜欢的。

要想知道一个人是否喜欢他正在做的事,就看他会不会无偿地工作,即使不得不做另一份工作以求生存。究竟有多少企业律师愿意在非工作时间免费做他们正在做的工作,而以日常工作糊口呢?

这种方法对于选择从事哪种学术研究工作特别有帮助,因为不同领域之间的差别非常大。大多数优秀的数学家即使当不了数学教授也愿意从事数学研究,另一种情况恰恰相反,有人发表论文,就是想做英语教授,而不是在广告机构工作。即使没有数学系也会有人研究数学,但是如果没有英语专业,以及教学职位的存在,又怎么会有人长篇累牍地发表论文,研究Conrad小说中人物的性别和身分呢?没人会觉得研究这些东西很有趣。

做父母的往往会看重金钱。可以放心地说,孩子想当作家而父母想让其当医生的多,孩子想当医生而父母让其当作家的少。孩子认为父母太“实际”,其实未必。所有的父母对待孩子要比对待自己更慎重,因为作为父母,他们承担风险,却得不到好处。如果八岁的儿子打算爬树,或者10来岁的女儿要和坏男孩约会,父母无法体会孩子的兴奋,但是如果儿子从树上掉下来,或者女儿怀孕了,却要父母出面收场。

慎重
面对如此危险的诱惑,很难找到喜欢的工作就不奇怪了。大多数人从小就相信工作是受罪,不信邪的人也都栽在了名利的诱惑上。那么到底有多少人最终找到了他们所热爱的工作呢?10万,或者10亿。

找到自己爱干的工作是很难的。大多数人做不到的事肯定很难,所以,不要低估它的难度,同时,也不要因为暂时没有找到而气馁。其实,只要敢于承认自己对工作的不满,就比很多人更可能成功了,那些人还在自欺欺人呢。如果周围的同事都说工作得很开心,而自己却对这份工作一点也看不上眼,那也许是同事在自己骗自己,虽然未必都是,但可能性很大。

做大事不像人们想像的那样艰苦,因为只有喜欢自己工作的人才能成就大事,他们根本不需要勉强自己,但是,寻找爱好的过程却得非常认真。有些人特别幸运,他们12岁就知道自己想做什么,然后沿着这条路茁壮成长。但这样的人毕竟是少数,对于更多成就大事的人来说,其职业生涯就像乒乓球的轨迹,他们在学校里学A,工作后做完全不相关的B,最后成名于C。

有时候,更换工作是精力旺盛的表现,但也可能是因为懒惰。通常,你无法区分自己究竟是掉队了,还是在另辟蹊径,即使许多成就大事的人,在最初寻找人生定位时往往很失望。

有什么方法可以让自己保持诚实吗?一种方法是无论做什么都要做好它,即使不喜欢。这样至少知道自己不是在为懒惰找借口。更重要的是,往往会养成把事做好的习惯。

另一种方法是“坚持实践”。例如,如果想成为一名作家,又不想因为日常工作而浪费精力,那么,就要坚持练习写作。尽管写得不好,但还是要坚持写。只要坚持实践,就会知道想成为作家是不是想想而已。如果写的东西实在糟糕,选择这份工作就不现实。

坚持实践是一种启发式的方法,可以帮助找到喜爱的工作,甄别出那些本以为会做好的工作,最终选择真正喜欢的,就好像水在地球引力的作用下可以找到屋顶的漏洞一样。

当然,明白喜欢什么工作并不意味着能够以它为工作,这是两码事。有追求的人更要把两者分清楚,喜欢做什么和能做成什么是不一样的。[6]

这一点看得越清楚,内心就会越痛苦,很多人因此降低标准。例如,如果在街上随便找人问问,他们能否和Leonardo画得一样好,就会发现很多人说他们根本不会画画。这更像是一种心理暗示,而不是事实。他实际想说,我不会去干那个。因为如果想方设法让他做画20年,他会为自己获得的成就而吃惊。当然那需要非常刻苦,可能要在头几年每天都得面对失败。所以如果有人说“我不行”,不要相信他。

另一个经常听到的说法是,不能每个人都做自己喜欢的事,总得有人做令人讨厌的工作。真的吗?这个结论是如何得出的呢?在美国,唯一强迫人的方式是征兵,但我们已经30年没有这么做过了,而是一直利用名利吸引人工作。

如果仍然有些事没人愿意做,那么人们就不得不自己做,过去发生在家奴身上的事就是这样。家奴的工作是经典的例子,在公元10世纪时,似乎那份工作总得有人来做。然而在20世纪中期,发达国家已经没有仆人了,有钱人得自己干活。

所以,也许有些事情总得有人做,但是谈到具体的某项工作时这么说就不合适了。糟糕的工作可以自动化完成,或者根本就不做,如果没人愿意做的话。

两条路
有一种情况确实不是每个人都可以做他喜欢做的工作。人首先要生存,做自己喜欢的工作会很难赚到钱。这时有两条路可以走:

成长渐进法:随着能力的增强、名气的增大,逐渐放弃不喜欢的工作,选择喜欢的工作。
齐头并进法:做不喜欢的工作赚钱,以便做自己喜欢的事情。

成长渐进法更常用,工作做得好的人一般选这种方法。年轻的建筑师开始时不得不什么活都干,等到他做得很好之后就可以挑选项目了。这种方法也有不好的地方,就是太慢,而且不确定,即使是终身聘用也无法做到真正的自由。

齐头并进法有多种做法,取决于需要用多少时间赚钱。一个极端是白天上班,靠一份工作时间固定的工作赚钱,而在闲暇时光做自己喜欢做的事。另一个极端是先拼命赚钱,直到不再为钱发愁。

齐头并进法用的人比较少,因为需要事先做好周全的打算,而且这种方法更危险。随着年龄的增长,对生活的要求也越高,所以为了赚到足够的钱,可能需要比预期更长的时间工作。更糟的是,人可能会被工作内容改变。如果做无聊的事情太久,脑子可能就锈掉了。钱给的越多的工作越危险,因为需要付出全部的精力。

齐头并进法的好处是可以让人摆脱障碍[7]。职业发展不都是一片坦徒,不同工作之间的差距变化很大。从结构设计工作转行到产品设计工作还有可能,要转向音乐方面就不太可能了。有两份工作的人多一分选择,尽管其中一份只为赚钱。

到底该选哪条路走呢?这取决于你是否明确想做什么,是否擅长分清主次,能承担多大的风险,以及是否有人愿意为你喜欢做的事情付钱。如果知道自己想干什么,也知道有人愿意为此付钱,那么就选择成长渐进法。如果还不了解自己想干什么,或者不喜欢非黑即白的二元逻辑,那么可以选择齐头并进法,只要你能承担由此带来的风险。

不要太早下决定。很小就知道自己未来做什么的孩子似乎让人印象深刻,就像他们比其他孩子更善于做数学题目一样。可惜,他们得到的答案往往是错误的。

我有一位非常成功的医生朋友,她不停地抱怨自己的工作。当有人向她咨询申请医学院事宜的时候,她很想握着他们的手说“不要去”(但是她从没这么做过)。她怎么会这样呢?她在高中的时候就想成为医生,而且她雄心勃勃信誓旦旦,克服了所有的困难,令人遗憾的是,她甚至克服了对这份工作的厌烦。

结果,她现在的生活实际上是一名高中生为她做出的选择。

年轻的时候,我们相信有足够的信息事先做出选择,工作却是个例外。试图做出选择时,手上只有少得可怜的信息。即使上了大学,我们也很少知道工作到底是个什么样子。最好的情况也就是做过几次实习生,但不是所有的工作都提供实习机会,而那些提供实习的工作,也不会教你太多东西,就好像做球童不可能学会打棒球一样。

人生规划和其它规划一样,多尝试会有更好的结果。所以,除非十分确定,最好还是选择一份可以应用成长渐进法或齐头并进法的工作。这也是我选择计算机行业的部分原因。在这个行当,做教授也行,想赚很多钱也行,也可以向一些相关专业转行。

尽早从事涵盖面较广的工作也是很明智的,这样就可以很快知道各种工作都是做什么的。相反,极端的齐头并进法很危险,因为无法得知自己喜欢什么。如果一个人做了十年的债券交易商,当他攒够了钱决定不再继续而转行写小说时,却发现自己并不是真得喜欢写小说,却已为时已晚。

多数人都会说,这好办,给我一百万,我就能弄明白该做什么。但是说起来容易做起来难,环境塑造人,离开了自己生活的环境,多数人都会不知所措,看看那些中了彩票或继承了大笔财产的人就知道了。就像每个人都说他们在意财务安全,然而最快乐人不是那些拥有它的人,而是那些喜欢他们在做的事的人。这么看来,有一份明确的计划未必是件好事情。

选择哪条路,是要经历一番思想斗争的。找到喜欢做的工作很难,大多数人都没能做到这一点。即使能做到,也要等到三、四十岁。但是,只要有这个愿望,就很可能会实现。如果知道自己会喜欢工作,就胜利在望了,如果知道自己具体爱做什么工作,就已经实现了这个目标。

致谢
感谢Trevor Blackwell, Dan Friedman, Sarah Harlin, Jessica Livingston, Jackie McDonough, Robert Morris, Peter Norvig, David Sloo, 以及Aaron Swartz阅读本文初稿。



--------------------------------------------------------------------------------

[1] 现在,我们做的恰恰相反:当我们让孩子做无聊的事情,比如算术练习,我们没有坦白地说它很无趣,而是假装它很有趣。

[2] 有位父亲告诉我一个相关的现象:他特意向家人隐瞒有多爱自己的工作,当他周末想去工作时,发现说一些不得不去的借口很容易,而不原意承认自己更原意工作,而不是和家人待在一起。

[3] 郊区的情况也差不多。父母搬到郊区,为了他们的孩子生活在安全的环境,但是郊区索然无味,不够自然,十几岁的孩子会以为整个世界都是这个样子。

[4] 我并不是说只能跟朋友说这些事情,帮忙的人越多越好,但是朋友的意见最重要。

[5] Donald Hall说,那些有望成为诗人的年轻人错误地执迷于发布作品。但是你可以想象,如果一个二十四岁的年轻人在“纽约客”杂志上发表一首诗,那会是什么情形,他会在聚会上被当成真正的诗人,尽管他和从前没什么两样。但是,对于其他不知情的人,能不能在权威杂志上发表文章是有很大不同的。所以说,实际情况比Hall认为的要困难。年轻人之所以特别在乎名气,是因为他们想打动的那些大人往往搞不清楚状况。

[6] 就像我们要警惕,事情不会因为我们希望它发展成什么样子就会成什么样子,这是同样的道理。很多人分不清两者之间的区别,宗教越来越受欢迎就是证据之一。

[7] 一个更形象的隐喻是,以各种工作为节点的图,并没有连通得很好。

2006年3月26日

[Collection]python上面的图形开发wxPython

原文链接:http://sirsunny.cnblogs.com/archive/2005/07/18/194998.html

最近正在研究Flash RIA,经人推荐到sf上面下载了一个开源免费的AS IDE,叫做SEPY,不经意之间发现SEPY竟然是用Python写的!于是又下载了SEPY的源代码观摩了一下,结果更吃惊,惊叹Python做图形桌面应用程序代码竟然如此简洁,表现力竟然如此丰富,如果不是特别留意,绝想不到SEPY竟然不是Windows本地代码编写的软件。就此关注了一下 Python的桌面应用程序开发,这一下更加吃惊,发现现在使用python写的桌面应用程序已经非常丰富了,sf上面一抓一大把。然后还找到了 Python的几个IDE,其中BOA给我极大的震撼,安装跑起来一看,俨然就是Delphi!可视化的托拽方式放置桌面控件,完全面向对象的编程。

经过半天时间简单的了解,我得到了如下的结论:Python做桌面应用程序的前景非常好,而相形之下,已经事实上宣判了Java做桌面应用程序的死刑!

Java 做桌面应用程序,无法脱离JRE,这是一个很大的限制,你必须下载安装很大的一个JRE运行环境,并且一旦安装那就涉及到了JRE版本的问题,你基于 JDK5.0开发的应用就没有办法在人家JRE1.4上面正常的跑。虽然JWS可以做到应用程序的Online update,但是终究无法做到JRE的online update!

此外,Java的图形API严重分裂为Swing和SWT。 Swing是一个扶不起的阿斗,bug很多,做出来的界面不伦不类,而且无法处理一些类似系统托盘之类和操作系统关系比较大的功能,并且性能非常糟糕,可以这样说,Java成也Sun,败也Sun;SWT要比Swing好得多了,但是可惜的是, Sun拒绝接受SWT,这样就使得SWT始终处在地下状态,得不到良好的发展。并且SWT也无法脱离JRE运行,而且API直接封装操作系统调用,很多地方有MFC痕迹,没有办法OO起来,受到很大的限制,但不管怎么说,SWT总算是给Java图形编程留下了一线希望。

而Python从一开始就是走SWT的思路,绝不愚蠢的自己去构建桌面组件,而是用C++编写组件,用Python去调用,这样的思路走到现在,已经有了良好的回报。现在 Python编写的应用软件,可以脱离Pthon运行环境,单独编译为pyd(Python DLL)和exe直接运行在Windows操作系统上。其速度表现和内存占用两个方面都要比Java好,就我现在的用下来的感觉,和VB开发的桌面应用程序,或者和dotnet开发的桌面应用程序处在同一个级别。

其实现在Windows桌面应用程序开发处在一个告别旧的时代,但是又没有迎来新的时代的尴尬时期:MS力主推出的dotnet winforms并没有取得预期中的成功,至今仍然使用者寥寥,推了那么多年都没有普及开来,并且又是注定的一个过渡时期技术,这些都说明 winforms不会有更好的前途;而MS下一代桌面应用技术尚未拉开神秘的面纱,至于普及,也是n年以后的事情了;所以现在就很尴尬,经过几年 Internet Application和dotnet winforms的喧嚣之后,传统的Desktop Developer又重拾昔日的Delphi利器,然而连Borland自己都不再对自己保存足够的信心,而去搞Delphi.net去了,于是大家只好拿出来怀旧的Delphi7,VB6,VC6来应付桌面应用技术开发。

在有像BOA这样IDE的强力支持下,Python也当仁不让的加入了这一行列,以现在的桌面应用开发技术来说,Python在开发效率,执行性能,学习曲线方面全面不落下风,甚至在很多方面有优势,特别是在跨平台这一点上,做到了Java多年都做不好的方面。由于Python的出色表现,我已经找不出来用Java编写桌面应用程序的任何理由了。我可以理直气壮的宣布, Java桌面应用开发已死!

Python在服务器应用开发方面,也同样非常强大,不过考虑到Java在服务器领域多年的成绩和诸多大公司的投入,显然还无法取代Java的地位,但是我可以预言,将来淘汰Java的必定是Python,而不是dotnet!

2006年3月25日

gnuplot 让您的数据可视化

gnuplot 让您的数据可视化
自由控制高级图表和数据绘图
级别: 初级

Nishanth Sastry, 专职软件工程师, IBM


2004 年 8 月 01 日

使用 Gnuplot 4.0 将数据和函数转换为专业的图表,Gnuplot 4.0 是一种免费分发的绘图工具。本文是 gnuplot 的实践指南,着重讲述了有效使用此工具的一些惯例。
Gnuplot 是一种免费分发的绘图工具,可以移植到各种主流平台。它可以下列两种模式之一进行操作:当需要调整和修饰图表使其正常显示时,通过在 gnuplot 提示符中发出命令,可以在交互模式下操作该工具。或者,gnuplot 可以从文件中读取命令,以批处理模式生成图表。例如,如果您正在运行一系列的实验,需要每次运行后都查看结果图表;或者当您在图表最初生成很久以后需要返回图表修改某些内容时,批处理模式能力会特别有用。当在 WYSIWIG 编辑器中很难捕获用于修饰图表的鼠标单击事件时,您可以很容易地将 gnuplot 命令保存在文件中,六个月后将其加载到交互式会话中重新执行。

全文请见:http://www-128.ibm.com/developerworks/cn/linux/l-gnuplot/index.html

2006年3月24日

Gnuplot 使用技巧

转自: http://202.127.203.201/jilei/Gnuplot.htmGnuplot 使用技巧


郑小宏

2005-10-21

对于在Linux下工作的人,如果你经常要画一些二维图和简单的三维图的话,那么,gnuplot无疑是一个非常好的选择,不仅图形漂亮,而且操作简单。当然如果需要质量更高的三维图,请用其他的一些专业绘图软件。建议大家学会使用gnuplot。这个小软件通常都是Redhat Linux自带的,但自带的版本是3.7的,建议将其升级到4.0,新版本具有很多新功能。最新版本可以到http://www.gnuplot.info下载。

一些最基本的操作请大家看说明书。这里总结一下我在使用过程中遇到的一些问题以及解决的办法,目的是让那些以前不会的或不熟练的能快速入门,会画自己想要的图,因为原来的说明书很长,较难有针对性地很快找到自己想要的信息。这里简单的总结不可能面面俱到,所以大家不要抱怨我写的不全,更全面的了解还是请看说明书,网上的资料也多的是。其实这也是我们从网上一点一点搜集和摸索出来的。我相信看完后,应该平时最常见的问题基本上都能在这里找到答案。如果大家在使用过程中摸索到了我没有写到的技巧和体会,或有其它建议,请大家提告诉我,以不断完善这篇总结,谢谢!



一、 基础篇:

在linux命令提示符下运行gnuplot命令启动,输入quit或q或exit退出。



1、plot命令

gnuplot> plot sin(x) with line linetype 3 linewidth 2 或

gnuplot> plot sin(x) w l lt 3 lw 2 %用线画,线的类型(包括颜色与虚线的类型)是3,线的宽度是2,对函数sin(x)作图

gnuplot> plot sin(x) with point pointtype 3 pointsize 2 或

gnuplot> plot sin(x) w p pt 3 ps 2 %用点画,点的类型(包括颜色与点的类型)是3,点的大小是2

gnuplot> plot sin(x) title 'f(x)' w lp lt 3 lw 2 pt 3 ps 2 %同时用点和线画,这里title ‘f(x)’表示图例上标'f(x)',如果不用则用默认选项

gnuplot> plot sin(x) %此时所有选项均用默认值。如果缺某一项则将用默认值

gnuplot> plot ‘a.dat’ u 2:3 w l lt 3 lw 2 %利用数据文件a.dat中的第二和第三列作图



顺便提一下,如这里最前面的两个例子所示,在gnuplot中,如果某两个词,按字母先后顺序,前面某几个字母相同,后面的不同,那么只要写到第一个不同的字母就可以了。如with,由于没有其它以w开头的词,因此可以用 w 代替,line也可以用 l 代替。



2、同时画多条曲线

gnuplot> plot sin(x) title ‘sin(x)’ w l lt 1 lw 2, cos(x) title ‘cos(x)’ w l lt 2 lw 2 %两条曲线是用逗号隔开的。画多条曲线时,各曲线间均用逗号隔开就可以了。



以上例子中是对函数作图,如果对数据文件作图,将函数名称换为数据文件名即可,但要用单引号引起来。



3、关于图例的位置

默认位置在右上方。

gnuplot> set key left %放在左边,有left 和right两个选项

gnuplot> set key bottom %放在下边,只有这一个选项;默认在上边

gnuplot> set key outside %放在外边,但只能在右面的外边

以上三个选项可以进行组合。如:

gnuplot> set key left bottom %表示左下边



还可以直接用坐标精确表示图例的位置,如

gnuplot> set key 0.5,0.6 %将图例放在0.5,0.6的位置处



4、关于坐标轴

gnuplot> set xlabel ‘x’ %x轴标为‘x’

gnuplot> set ylabel ‘y’ %y轴标为’y’

gnuplot> set ylabel ‘DOS’ tc lt 3 %其中的tc lt 3表示’DOS’的颜色用第三种颜色。

gnuplot> set xtics 1.0 %x轴的主刻度的宽度为1.0,同样可以为y轴定义ytics

gnuplot> set mxtics 3 %x轴上每个主刻度中画3个分刻度,同样可以为y轴定义mytics

gnuplot> set border 3 lt 3 lw 2 %设为第三种边界,颜色类型为3,线宽为2

同样可以为上边的x轴(称为x2)和右边y(称为y2)轴进行设置,即x2tics,mx2tics,y2tics,my2tics。

gnuplot> set xtics nomirror

gnuplot> unset x2tics %以上两条命令去掉上边x2轴的刻度



gnuplot> set ytics nomirror

gnuplot> unset y2tics %以上两条命令去掉右边y轴的刻度



5、在图中插入文字

gnuplot> set label ‘sin(x)’ at 0.5,0.5 %在坐标(0.5,0.5)处加入字符串’sin(x)’。

在输出为.ps或.eps文件时,如果在set term 的语句中加入了enhanced选现,则可以插入上下标、希腊字母和特殊符号。上下标的插入和latex中的方法是一样的。



6、在图中添加直线和箭头

gnuplot> set arrow from 0.0,0.0 to 0.6,0.8 %从(0.0,0.0)到(0.6,0.8)画一个箭头

gnuplot> set arrow from 0.0,0.0 to 0.6,0.8 lt 3 lw 2 %这个箭头颜色类型为3,线宽类型为2

gnuplot> set arrow from 0.0,0.0 to 0.6,0.8 nohead lt 3 lw 2 %利用nohead可以去掉箭头的头部,这就是添加直线的方法。



注意,在gnuplot中,对于插入多个的label和arrow等等,系统会默认按先后顺序分别对各个label或arrow进行编号,从1开始。如果以后要去掉某个label或arrow,那么只要用unset命令将相应的去掉即可。如:

gnuplot> unset arrow 2

将去掉第二个箭头。



7、图的大小和位置

gnuplot>set size 0.5,0.5 %长宽均为默认宽度的一半,建议用这个取值,尤其是画成ps或eps图形的时候

gnuplot>set origin 0.0,0.5 %设定图的最左下角的那一点在图形面板中的位置。这里图将出现在左上角。



8、画三维图

gnuplot>splot ‘文件名’ u 2:4:5 %以第二和第四列作为x和y坐标,第五列为z坐标。





二、提高篇:

1、如何在同一张图里同时画多个图

gnuplot>set multiplot %设置为多图模式

gnuplot>set origin 0.0,0.0 %设置第一个图的原点的位置

gnuplot>set size 0.5,0.5 %设置第一个图的大小

gnuplot>plot “a1.dat”

gnuplot>set origin 0.0,0.5 %设置第二个图的原点的位置

gnuplot>set size 0.5,0.5 %设置第二个图的大小

gnuplot>plot “a2.dat”

gnuplot>set origin 0.0,0.0 %设置第三个图的原点的位置

gnuplot>set size 0.5,0.5 %设置第三个图的大小

gnuplot>plot “a3.dat”

gnuplot>set origin 0.0,0.0 %设置第四个图的原点的位置

gnuplot>set size 0.5,0.5 %设置第四个图的大小

gnuplot>plot “a4.dat”

当然,如果后一个图中的某个量的设置和前一个的相同,那么后一个中的这个量的设置可以省略。例如上面对第二、第三和第四个图的大小的设置。前一个图中对某个量的设置也会在后一个图中起作用。如果要取消在后面图中的作用,必须用如下命令,如取消label,用

gnuplot>unset label





2、作二维图时,如何使两边坐标轴的单位长度等长

gnuplot> set size square %使图形是方的
gnuplot> set size 0.5,0.5 %使图形是你要的大小
gnuplot> set xrange[-a:a]
gnuplot> set yrange[-a:a] %两坐标轴刻度范围一样
gnuplot> plot ‘a.dat’



3、如何在同一张图里利用左右两边的y轴分别画图

gnuplot> set xtics nomirror %去掉上面坐标轴x2的刻度
gnuplot> set ytics nomirror %去掉右边坐标轴y2的刻度
gnuplot> set x2tics %让上面坐标轴x2刻度自动产生
gnuplot> set y2tics %让右边坐标轴y2的刻度自动产生
gnuplot> plot sin(x),cos(x) axes x1y2 %cos(x)用x1y2坐标,axes x1y2表示用x1y2坐标轴
gnuplot> plot sin(x),cos(x) axes x2y2 %cos(x)用x2y2坐标,axes x2y2表示用x2y2坐标轴
gnuplot> set x2range[-20:20] %设定x2坐标的范围
gnuplot> replot
gnuplot> set xrange[-5:5] %设定x坐标的范围
gnuplot> replot
gnuplot> set xlabel 'x'
gnuplot> set x2label 't'
gnuplot> set ylabel 'y'
gnuplot> set y2label 's'
gnuplot> replot
gnuplot> set title 'The figure'
gnuplot> replot
gnuplot> set x2label 't' textcolor lt 3 %textcolor lt 3或tc lt 3设置坐标轴名称的颜色



4、如何插入希腊字母和特殊符号

一般只能在ps和eps图中,且必须指定enhanced选项。在X11终端(即显示器)中无法显示。

gnuplot> set terminal postscript enhanced

然后希腊字母就可以通过{/Symbol a}输入。例如

gnuplot> set label ‘{/Symbol a}’



各种希腊字母与特殊符号的输入方法请见安装包中gnuplot-4.0.0/docs/psdoc目录下的ps_guide.ps文件。


另外还可参见:
http://t16web.lanl.gov/Kawano/gnuplot/label-e.html#4.3



5、gnuplot中如何插入Angstrom(埃)这个符号(A上面一个小圆圈)

脚本中在插入前先加入
gnuplot>set encoding iso_8859_1
这个命令,然后就可以通过“{\305}”加入了。如横坐标要标上“k(1/Å)”:
gnuplot>set xlabel 'k(1/{\305})

如果是multiplot模式,则这个命令必须放在
gnuplot>set multiplot
的前面。

如果后面还要插入别的转义字符,那么还要在插入字符后加入如下命令:
set encoding default

安装包中gnuplot-4.0.0/docs/psdoc/ps_guide.ps文件中的表中的‘E’代表那一列的所有符号都用这个方法输入。


6、gnuplot画等高线图

gnuplot>splot ‘文件名.dat’ u 1:2:3 w l %做三维图

gnuplot>set dgrid3d 100,100 %设置三维图表面的网格的数目

gnuplot>replot

gnuplot>set contour %设置画等高线

gnuplot>set cntrparam levels incremental -0.2,0.01,0.2 %设置等高线的疏密和范围,数据从 -0.2到0.2中间每隔0.01画一条线

gnuplot>unset surface 去掉上面的三维图形

最后用鼠标拽动图形,选择合理的角度即可。或者直接设置(0,0)的视角也可以:

gnuplot>set view 0,0

gnuplot>replot



这里注意,画三维图的数据文件必须是分块的,也就是x每变换一个值,y在其变化范围内变化一周,这样作为一块,然后再取一个x值,y再变化一周,作为下一数据块,等等。块与块之间用一空行格开。



7、输出为ps或eps图时,以下几个选项值得特别注意

gnuplot>set term postscript eps enh solid color

其中eps选项表示输出为eps格式,去掉则表示用默认的ps格式;enh选项表示图中可以插入上下标、希腊字母及其它特殊符号,如果去掉则不能插入;solid选项表示图中所有的曲线都用实线,去掉则将用不同的虚线;color选项表示在图中全部曲线用彩色,去掉则将用黑白。



8、如何画漂亮的pm3d图

gnuplot> set pm3d %设置pm3d模式

gnuplot> set isosamples 50,50 %设置网格点

gnuplot> splot x**2+y**2 %画三维图

gnuplot> splot x**2+y**2 w pm3d %画成pm3d模式,注意比较变化

gnuplot> set view 0,0 %设置视角,(0,0)将投影到底面上去

gnuplot> splot x**2+y**2 w pm3d %重画,注意看变化

gnuplot> unset ztics %把z轴上的数字给去掉

gnuplot> set isosamples 200,200 %使网格变细

gnuplot> replot %重画,注意看变化,主要是过渡更光滑



9、利用脚本文件避免重复输入

有时候对某个数据文件做好一张图后,下次可能还要利用这个数据文件作图,但某个或某些设置要作些细微变化。这时候,可以把第一次作图时的命令全部写到一个文件里,如a.plt,下次只要将相应的设置做修改后,用下面的命令就会自动运行文件所有的命令而最后得到你要的图:

gnuplot>load ‘a.plt’

作为一个例子,假设文件名为a.plt,里面的内容为:

set pm3d

set view 0,0

unset ztics

set isosamples 200,200

splot x**2+y**2 w pm3d

set term post color

set output ‘a.ps’

replot



那么启动gnuplot后,只要运行如下命令就可以了:

gnuplot>load ‘a.plt’



如果我们要得到的仅仅是.ps或.eps图,那也可以在linux命令提示符下直接运行如下命令:

[zxh@theory zxh]$gnuplot a.plt



10、在gnuplot模式下运行linux命令

在gnuplot提示符下也可以运行linux命令,但必须在相应的命令前面加上 ! 号。例如,假设很多参量都已经设置好了,但需要对某个数据文件a.dat进行修改后再画图,则可以用如下方式

gnuplot>!vi a.dat

通过这种方式,所有的linux命令都可以在gnuplot环境里运行。



另外,也可以在gnuplot的提示符后输入shell,暂时性退出gnuplot,进入linux环境,做完要做的事情后,运行exit命令,又回到gnuplot环境下。

gnuplot>shell

[zxh@theory zxh]$vi a.f

[zxh@theory zxh]$f77 a.f

[zxh@theory zxh]$a.out (假设生成a.dat数据文件)

[zxh@theory zxh]$exit

gnuplot>plot ‘a.dat’ w l



如有其它问题,欢迎共同探讨。E-mail:exhzheng@163.com

2006年3月23日

Jobs说:你必须要找到你所钟爱的东西

June 19th, 2005

‘You’ve got to find what you love,’ Jobs says ★★★★★

This is the text of the Commencement address by Steve Jobs, CEO of Apple Computer and of Pixar Animation Studios, delivered on June 12, 2005.

我今天很荣幸能和你们一起参加毕业典礼,斯坦福大学是世界上最好的大学之一。我从来没有从大学中毕业。说实话,今天也许是在我的生命中离大学毕业最近的一天了。今天我想向你们讲述我生活中的三个故事。不是什么大不了的事情,只是三个故事而已。

第一个故事是关于如何把生命中的点点滴滴串连起来。

我在Reed大学读了六个月之后就退学了,但是在十八个月以后——我真正的作出退学决定之前,我还经常去学校。我为什么要退学呢?

故事从我出生的时候讲起。我的亲生母亲是一个年轻的,没有结婚的大学毕业生。她决定让别人收养我, 她十分想让我被大学毕业生收养。所以在我出生的时候,她已经做好了一切的准备工作,能使得我被一个律师和他的妻子所收养。但是她没有料到,当我出生之后,律师夫妇突然决定他们想要一个女孩。 所以我的生养父母(他们还在我亲生父母的观察名单上)突然在半夜接到了一个电话:“我们现在这儿有一个不小心生出来的男婴,你们想要他吗?”他们回答道:“当然!”但是我亲生母亲随后发现,我的养母从来没有上过大学,我的父亲甚至从没有读过高中。她拒绝签这个收养合同。只是在几个月以后,我的父母答应她一定要让我上大学,那个时候她才同意。

在十七岁那年,我真的上了大学。但是我很愚蠢的选择了一个几乎和你们斯坦福大学一样贵的学校, 我父母还处于蓝领阶层,他们几乎把所有积蓄都花在了我的学费上面。在六个月后, 我已经看不到其中的价值所在。我不知道我想要在生命中做什么,我也不知道大学能帮助我找到怎样的答案。 但是在这里,我几乎花光了我父母这一辈子的所有积蓄。所以我决定要退学,我觉得这是个正确的决定。不能否认,我当时确实非常的害怕, 但是现在回头看看,那的确是我这一生中最棒的一个决定。在我做出退学决定的那一刻, 我终于可以不必去读那些令我提不起丝毫兴趣的课程了。然后我还可以去修那些看起来有点意思的课程。

但是这并不是那么罗曼蒂克。我失去了我的宿舍,所以我只能在朋友房间的地板上面睡觉,我去捡5美分的可乐瓶子,仅仅为了填饱肚子, 在星期天的晚上,我需要走七英里的路程,穿过这个城市到Hare Krishna寺庙(注:位于纽约Brooklyn下城),只是为了能吃上饭——这个星期唯一一顿好一点的饭。但是我喜欢这样。我跟着我的直觉和好奇心走, 遇到的很多东西,此后被证明是无价之宝。让我给你们举一个例子吧:

Reed大学在那时提供也许是全美最好的美术字课程。在这个大学里面的每个海报, 每个抽屉的标签上面全都是漂亮的美术字。因为我退学了, 没有受到正规的训练, 所以我决定去参加这个课程,去学学怎样写出漂亮的美术字。我学到了san serif 和serif字体, 我学会了怎么样在不同的字母组合之中改变空格的长度, 还有怎么样才能作出最棒的印刷式样。那是一种科学永远不能捕捉到的、美丽的、真实的艺术精妙, 我发现那实在是太美妙了。

当时看起来这些东西在我的生命中,好像都没有什么实际应用的可能。但是十年之后,当我们在设计第一台Macintosh电脑的时候,就不是那样了。我把当时我学的那些家伙全都设计进了Mac。那是第一台使用了漂亮的印刷字体的电脑。如果我当时没有退学, 就不会有机会去参加这个我感兴趣的美术字课程, Mac就不会有这么多丰富的字体,以及赏心悦目的字体间距。那么现在个人电脑就不会有现在这么美妙的字型了。当然我在大学的时候,还不可能把从前的点点滴滴串连起来,但是当我十年后回顾这一切的时候,真的豁然开朗了。

再次说明的是,你在向前展望的时候不可能将这些片断串连起来;你只能在回顾的时候将点点滴滴串连起来。所以你必须相信这些片断会在你未来的某一天串连起来。你必须要相信某些东西:你的勇气、目的、生命、因缘。这个过程从来没有令我失望,只是让我的生命更加地与众不同而已。

我的第二个故事是关于爱和损失的.

我非常幸运, 因为我在很早的时候就找到了我钟爱的东西。Woz和我在二十岁的时候就在父母的车库里面开创了苹果公司。我们工作得很努力, 十年之后, 这个公司从那两个车库中的穷光蛋发展到了超过四千名的雇员、价值超过二十亿的大公司。在公司成立的第九年,我们刚刚发布了最好的产品,那就是Macintosh。我也快要到三十岁了。在那一年, 我被炒了鱿鱼。你怎么可能被你自己创立的公司炒了鱿鱼呢? 嗯,在苹果快速成长的时候,我们雇用了一个很有天分的家伙和我一起管理这个公司, 在最初的几年,公司运转的很好。但是后来我们对未来的看法发生了分歧, 最终我们吵了起来。当争吵不可开交的时候, 董事会站在了他的那一边。所以在三十岁的时候, 我被炒了。在这么多人的眼皮下我被炒了。在而立之年,我生命的全部支柱离自己远去, 这真是毁灭性的打击。

在最初的几个月里,我真是不知道该做些什么。我把从前的创业激情给丢了, 我觉得自己让与我一同创业的人都很沮丧。我和David Pack和Bob Boyce见面,并试图向他们道歉。我把事情弄得糟糕透顶了。但是我渐渐发现了曙光, 我仍然喜爱我从事的这些东西。苹果公司发生的这些事情丝毫的没有改变这些, 一点也没有。我被驱逐了,但是我仍然钟爱它。所以我决定重头再来。

我当时没有觉察, 但是事后证明, 从苹果公司被炒是我这辈子发生的最棒的事情。因为,作为一个成功者的极乐感觉被作为一个创业者的轻松感觉所重新代替: 对任何事情都不那么特别看重。这让我觉得如此自由, 进入了我生命中最有创造力的一个阶段。

在接下来的五年里, 我创立了一个名叫NeXT的公司, 还有一个叫Pixar的公司, 然后和一个后来成为我妻子的优雅女人相识。Pixar 制作了世界上第一个用电脑制作的动画电影——“玩具总动员”,Pixar现在也是世界上最成功的电脑制作工作室。在后来的一系列运转中,Apple收购了NeXT, 然后我又回到了Apple公司。我们在NeXT发展的技术在Apple的复兴之中发挥了关键的作用。我还和Laurence 一起建立了一个幸福的家庭。

我可以非常肯定,如果我不被Apple开除的话, 这其中一件事情也不会发生的。这个良药的味道实在是太苦了,但是我想病人需要这个药。有些时候, 生活会拿起一块砖头向你的脑袋上猛拍一下。不要失去信心。我很清楚唯一使我一直走下去的,就是我做的事情令我无比钟爱。你需要去找到你所爱的东西。对于工作是如此, 对于你的爱人也是如此。你的工作将会占据生活中很大的一部分。你只有相信自己所做的是伟大的工作, 你才能怡然自得。如果你现在还没有找到, 那么继续找、不要停下来、全心全意的去找, 当你找到的时候你就会知道的。就像任何真诚的关系, 随着岁月的流逝只会越来越紧密。所以继续找,直到你找到它,不要停下来!

我的第三个故事是关于死亡的.

当我十七岁的时候, 我读到了一句话:“如果你把每一天都当作生命中最后一天去生活的话,那么有一天你会发现自己是正确的。”这句话给我留下了深刻的印象。从那时开始,过了33年,我在每天早晨都会对着镜子问自己:“如果今天是我生命中的最后一天, 你会不会完成你今天想做的事情呢?”当答案连续很多次被给予“不是”的时候, 我知道自己需要改变某些事情了。

“记住你即将死去”是我一生中遇到的最重要箴言。它帮我指明了生命中重要的选择。因为几乎所有的事情, 包括所有的荣誉、所有的骄傲、所有对难堪和失败的恐惧,这些在死亡面前都会消失。我看到的是留下的真正重要的东西。

你有时候会思考你将会失去某些东西,“记住你即将死去”是我知道的避免这些想法的最好办法。你已经赤身裸体了, 你没有理由不去跟随自己的心一起跳动。

大概一年以前, 我被诊断出癌症。我在早晨七点半做了一个检查, 检查清楚的显示在我的胰腺有一个肿瘤。我当时都不知道胰腺是什么东西。医生告诉我那很可能是一种无法治愈的癌症, 我还有三到六个月的时间活在这个世界上。我的医生叫我回家, 然后整理好我的一切, 那就是医生准备死亡的程序。那意味着你将要把未来十年对你小孩说的话在几个月里面说完.;那意味着把每件事情都搞定, 让你的家人会尽可能轻松的生活;那意味着你要说“再见了”。

我整天和那个诊断书一起生活。后来有一天早上我作了一个活切片检查,医生将一个内窥镜从我的喉咙伸进去,通过我的胃, 然后进入我的肠子, 用一根针在我的胰腺上的肿瘤上取了几个细胞。我当时很镇静,因为我被注射了镇定剂。但是我的妻子在那里, 后来告诉我,当医生在显微镜地下观察这些细胞的时候他们开始尖叫, 因为这些细胞最后竟然是一种非常罕见的、可以用手术治愈的胰腺癌细胞。我做了这个手术, 现在我痊愈了。

那是我最接近死亡的时候, 我还希望这也是以后的几十年最接近的一次。从死亡线上又活了过来, 死亡对我来说,只是一个有用但是纯粹是知识上的概念的时候,我可以更肯定一点地对你们说:

没有人愿意死, 即使人们想上天堂, 人们也不会为了去那里而死。但是死亡是我们每个人共同的终点。从来没有人能够逃脱它,也应该如此。 因为死亡就是生命中最好的一个发明。它将旧的清除以便给新的让路。你们现在是新的, 但是从现在开始不久以后, 你们将会逐渐的变成旧的然后被清除。我很抱歉这很具有戏剧性, 但是这十分的真实。

你们的时间很有限, 所以不要将他们浪费在重复其他人的生活上。不要被教条束缚,那意味着你和其他人思考的结果一起生活。不要被其他人喧嚣的观点掩盖你真正的内心的声音。还有最重要的是, 你要有勇气去听从你直觉和心灵的指示——它们在某种程度上知道你想要成为什么样子,所有其他的事情都是次要的。

当我年轻的时候, 有一本叫做“整个地球的目录”振聋发聩的杂志,它是我们那一代人的圣经之一。它是一个叫Stewart Brand的家伙在离这里不远的Menlo Park书写的, 他象诗一般神奇地将这本书带到了这个世界。那是六十年代后期, 在个人电脑出现之前, 所以这本书全部是用打字机,、剪刀还有偏光镜制作的。有点像用软皮包装的google, 在google出现三十五年之前:这是理想主义的,其中有许多灵巧的工具和伟大的想法。

Stewart和他的伙伴出版了几期的“整个地球的目录”,当它完成了自己使命的时候, 他们做出了最后一期的目录。那是在七十年代的中期, 你们的时代。在最后一期的封底上是清晨乡村公路的照片(如果你有冒险精神的话,你可以自己找到这条路的),在照片之下有这样一段话:“保持饥饿,保持愚蠢。”这是他们停止了发刊的告别语。“保持饥饿,保持愚蠢。”我总是希望自己能够那样,现在, 在你们即将毕业,开始新的旅程的时候, 我也希望你们能做到这样:

保持饥饿,保持愚蠢。
(Stay Hungry. Stay Foolish.我读出了苦其心志, 劳其筋骨, 饿其体肤, 空乏其身的涵义,你呢? )

非常感谢你们。