﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-zhouyangLib-文章分类-转摘网文</title><link>http://www.blogjava.net/yangmage/category/37469.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 06 Feb 2009 20:32:05 GMT</lastBuildDate><pubDate>Fri, 06 Feb 2009 20:32:05 GMT</pubDate><ttl>60</ttl><item><title>做快乐的程序员_Posted on 2008-06-23 11:41 李战 </title><link>http://www.blogjava.net/yangmage/articles/253497.html</link><dc:creator>Solar</dc:creator><author>Solar</author><pubDate>Fri, 06 Feb 2009 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/yangmage/articles/253497.html</guid><wfw:comment>http://www.blogjava.net/yangmage/comments/253497.html</wfw:comment><comments>http://www.blogjava.net/yangmage/articles/253497.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangmage/comments/commentRss/253497.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangmage/services/trackbacks/253497.html</trackback:ping><description><![CDATA[<div class="postbody">
<p><span style="font-family: 宋体">同学们：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我要讲的，是怎样做快乐的程序员。什么是快乐的程序员呢？就是把编程当作兴趣和爱好的人，享受着编程的快乐的一群人。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">优秀的程序员都是从快乐的程序员开始的。因为，成为优秀的程序员是需要很长时间的磨练的，如果在编程中连快乐都没有，很难熬到优秀程序员的。事实上，做任何事情只要找到了快乐，成功是迟早的事情。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我们每一个程序员都希望在快乐的编程中成长为一名优秀的程序员。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt"><strong><span style="font-family: 宋体">一.什么是优秀的程序员</span></strong></p>
<p style="margin-left: 21pt; text-indent: 0cm"><span style="font-family: 宋体">先讲一个编程大师的传说：</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 楷体_GB2312">传说在很久很久以前，软件界出过一位大师。他能直接用二进制编写复杂高效且无错的程序；他写过的机器码比我们吃过的米还要多；他用眼睛看看闪烁的硬盘灯就知道程序当前的运行状态；他用耳朵听听机器的噪音就可以准确地判断出错误在哪个模块的哪一行代码上。</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 楷体_GB2312">他写的程序极为精简，10行代码就可以顶别人写的100行代码，且效率更高。他不轻易给人写程序，即使千金也难换来他的一行代码。但他一旦开始写编码，那可是潇潇洒洒一挥而就，代码都是一行千金。</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 楷体_GB2312">他从不困惑于软件的宏观体系和微观结构之中,因为他通晓软件的本原，预知软件的未来。他早已看透软件世界与现实世界的本质，面向对象只是他博大精深的武功中的一套长拳。他能使用所有的软件开发工具，从CASE工具到DEBUG。传说曾有人亲眼看见过他用一把小刀在硬盘表面刻写操作系统的一段内核。</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 楷体_GB2312">自他死后，软件界再也没有出现过真正的大师。世间只残存一些有关他的传奇，一代一代地流传下去</span><span style="font-size: 10pt; font-family: 宋体">&#8230;&#8230;</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">可能这个故事编得太玄了。</span><span style="font-size: 10pt; font-family: 宋体">但在我们的心里却真希望软件领域能有这样的神人，或许梦想自己有朝一日也能练出这样的道行。</span></p>
<p style="text-indent: 21pt"><span style="font-size: 10pt; font-family: 宋体">大家都知道：软件是计算机的灵魂！</span></p>
<p style="text-indent: 21pt"><span style="font-size: 10pt; font-family: 宋体">程序员是软件的创造者，是计算机灵魂的工程师。而优秀的程序员就是用灵魂书写代码的人，他们将自己的生命与软件机融为一体，从而让计算机世界充满生机和活力。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">优秀的程序员往往将编程当作艺术，对待自己的每一个程序，就像对待自己的艺术品一样。优秀的程序员总喜欢对自己的代码精雕细琢，他希望自己的代码都是精品，绝不愿意敷衍了事地将垃圾代码提供给他人。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">优秀的程序员大都有很好的人品修养。他们知道自己的长处，也更加知道自己的短处。在外人眼里他是神，但他自己明白他也是会犯错误的人。因此，优秀的程序员往往会在展现实力的同时，保持着谦虚的美德。偶尔狂妄，那也只是性情中人。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">优秀的程序员对计算机的本质了解很深，喜欢从哲学上去理解软硬件的关系和数据代码的运转规律。有时候，他们看起来更像个思想家，因为他们想像力非常丰富，小到蚂蚁，大到星云，都能联系到代码上。据说，他们走在大街上也能敏锐地感觉到两旁大楼里各种计算机的脉冲跳动。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">优秀的程序员对新技术有独特的洞察能力。他们的思想非常超前，总能提前做好准备，迎接新技术的到来，而不是被新技术推着走。即使遇到尚未涉足过的新技术领域，他们总能很快地把握新技术的本质，迅速适应该领域的工作，并成为这些技术的带头人。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">的确，一名优秀的程序员是让人敬佩和羡慕的。要想成为一名优秀的程序员，必须首先要坚信自己一定能行。再经过努力地修炼，总有一点你也能成为一名优秀的程序员的。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt"><strong><span style="font-family: 宋体">二.程序员的修炼历程</span></strong></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">如果大家都希望成为一名优秀的程序员，秘诀只有两个字：修炼！</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">程序员为什么要进行修炼呢</span>?<span style="font-family: 宋体">先给大家讲一个禅宗小故事，这个故事也是于丹讲过的：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体"><span style="font-family: 楷体_GB2312"><span style="font-family: 楷体_GB2312">
<p style="text-indent: 21pt"><span style="font-family: 宋体">有一座寺庙的香火很旺，多少年来人们总踩着那些石阶来到佛像面前进香。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">终于有一天，石阶们不服气了。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">石阶对佛像说：你和我们都生自同一块山石，为什么人们总踩在我们的身上，而却要对你顶礼膜拜？</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">佛像淡淡地说：因为你们只经过六刀就到了今天这个位置，而我却是经过千刀万剐，才最终成佛</span>...</p>
<p style="text-indent: 21pt"></p>
</span></span></span>
<p>&nbsp;</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">同样，在</span>IT<span style="font-family: 宋体">行业中要想成为一名优秀的程序员，必须需要经过千锤百炼，才能最终修炼成佛。事实上，程序员必须在</span>IT<span style="font-family: 宋体">大潮的实践中接受改造，不断取得进步，提高自己能力和修养。由一个幼稚的菜鸟，要变成一个成熟老道的大牛，往往需要经过一个很长的修炼的过程。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">首先，要想成为一名优秀的程序员，必须要热爱编程工作，完全将编程当作自己的兴趣和爱好，甚至毕生追求的圣神目标。如果你没有这样的想法，只是把编程当作工作，最好别做程序员，趁早改行。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">许多人说，编程是非常枯燥乏味的事情，程序员必须要耐得住寂寞，能忍受孤独。但真正的程序员却感受着编程的快乐，一点都不觉得孤独和寂寞。他们深信硬件的坚强，享受着软件的温柔，在计算机世界里，他们个个都是情种。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">许多人说，程序员职业是一碗青春饭，都是</span>20-30<span style="font-family: 宋体">岁的年轻人干的。超过</span>30<span style="font-family: 宋体">岁之后呢，就干不动了。是这样吗？的确，早些年一些目光短浅的软件企业确实为了降低成本，雇佣年轻的低价程序员来完成工作。不是老程序员干不动了，而是挨踢了，所以程序员就叫挨踢一族。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">但是，随着软件企业的不断成熟，老板们发现程序的开发和维护都是长期的事情。而有经验的老程序员编写的代码更加可靠和简洁，系统开发反而会减少很多麻烦事情，因此总体软件开发成本反而比雇佣大量年轻程序员要低。不但如此，老程序员而且还能帮企业带出一批新人，使得企业积累的技术经验能得到传承和发展。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">其实，在发达国家的程序员，那可是越老越吃香。现在，国内越来越多的企业都愿意招聘有经验的老程序员，甚至某些软件企业还专招</span>30<span style="font-family: 宋体">岁以上的老程序员。越来越多的软件企业认识到，由老中青三代人构成的开发团队，才是真正永远有战斗力的团队。因此，程序员职业将不再是一碗青春饭，同样也是可以干一辈子的。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">要成为优秀的程序员需要有很强的自学能力，必须不断地学习新技术和新知识。除了要学习前人的理论和经验之外，还必须亲自参加到具体的项目中去，在实践中运用所学的知识，解决和处理具体问题。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">只有这样，他才能够逐渐地体验和认识编程的规律性，才能真正深刻地认知编程的本质，才能发现自己的弱点和原来不正确的思想、习惯、成见，并加以改正，从而提高自己编程质量，改善编程的方法等。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">所以，程序员要改造和提高自己，必须参加具体项目，绝不能离开工作实践。更为关键的是，程序员必须要有自我学习和修炼的主动性，否则再多的项目实践也无法使自己进步。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">经常会看到这样的情况，几个程序员一起参加一个软件项目。项目结束之后，有些程序员提高很快，有的进步很慢，有的却原地踏步。这是什么原因呢？</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">提高较快的程序员大都勤奋好学，喜欢探究编程的规律，并能逐渐总结出自己的方法。而进步较慢的程序员虽然也勤奋努力，但往往只着眼于具体的代码，不善于抽象和总结规律。而原地踏步的程序员呢，大都是混饭吃的，根本没有主动学习和提高自己的意识。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">程序员不但要修炼自己的技术，还要善于修炼自己的人品。不是说编程中的大多数问题都是人品问题吗？当然，这里说的是程序员性格和人格的修养。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt"><strong><span style="font-family: 宋体">三.程序员的学习能力</span></strong></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">没有哪个人是天生就会编程序的。大多数刚毕业的学生走上工作岗位时，常常抱怨学校教的知识都派不上用场，一切都得重头学起。在</span>IT<span style="font-family: 宋体">行业，这种现象更加严重，知识更新的频度和密度是其他行业没法比拟的。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">学校的时光也许真的没有教给我们多少实用的知识，但却教会我们一个重要的法宝：自学能力！既然吃了程序员这碗饭，我们就必须牢记一句话：活到老，学到老。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">学习有很多方式，读书是最好的学习方法，喜欢读书的程序员大都是爱学习的人。不过，现在的技术书真是太多太杂，我们不可能有太多时间来读书，更不可能读遍所有的书，需要挑选好书来读。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">要挑一本好书也确实不容易，因为现在的技术书是鱼龙混杂。有优秀的精品，有滥竽充数的；有大家名作，也有误认子弟的。一般来说，我们可以购买两种图书，一种是可以反复阅读的精华，另一种是现用现查的资料类图书。网上购书是个不错的方式，可以参考销量排行榜和其他读者的评价。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">网上学习也是非常不错的方式。只要善于搜索，总能在网上找到需要的文章和资料。最近，人们发明了一个新词叫&#8220;搜商&#8221;，它衡量人的网络使用能力。搜商高的人把网络当作蕴藏宝藏的海洋，他们更能熟练地从垃圾网页中淘出自己需要的宝贝。这也可以称作&#8220;淘宝能力&#8221;，网上学习也是需要很强的淘宝能力的。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">此外，喜欢做实验也是非常好的学习方式。如果，书上有例子，不妨亲手试试。如果，学习中有什么新想法，也不妨马上试试。因为，通过实验不但可以加深对所学知识的领悟，还能增加对技术的感性认识，甚至带来某些意想不到的灵感。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">喜欢学习，是一个程序员最大的优点。不过，这学习也是大有学问的。再给大家讲一个故事：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">孔子曾跟师襄学琴，师襄就随手扔给他一首曲子，让他自已练习。孔子呢，把这首曲子都练了十几天，还是不厌其烦地继续练习。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">师襄忍不住了，对孔子说：&#8220;你可以再换个曲子练习了。&#8221;</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">孔子回答说：&#8220;我虽然已熟悉了曲调，但还没有把握曲中的韵律。&#8221;</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">过了好些天，师襄又说：&#8220;你已把握到曲中的韵律了，可以换曲子练了。&#8221;</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">谁知，孔子又说：&#8220;我还没有感受到曲中的人物形象呢。&#8221;</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">又过了一段时间，师襄又说：&#8220;你已经感受到曲中的人物形象了，可以换曲了！&#8221;</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">孔子还是说：&#8220;我虽已感受到曲中的人物形象，但还没有达到他的心智境界。&#8221;</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">终于有一天，师襄看到孔子神情庄重，器宇非凡，志向高远，仿佛完全变了一个人。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">还未等师襄开口，孔子便说：&#8220;我感悟到了，曲中人物黝黑高大，目光深邃，心怀天下苍生，真乃王者气象，此人必定是周文王！&#8221;</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">师襄听罢，大吃一惊，因为此曲就叫《文王操》，而他从未对孔子说过！</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">这是一种怎样的学习精神呢？</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">这就是一种把知识学透的精神！不但要学习人家的概念和技巧，还要学习方式和方法，更要学习人家的思想境界。没有那种刨根问底的精神，是很难将知识学透的。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">学习就要刨根问底！任何事情喜欢刨根问底的人，一定能成为优秀的程序员！</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">问大家一个问题：</span>Java<span style="font-family: 宋体">为什么要取名为</span>Java<span style="font-family: 宋体">？</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">如果你能回答这个问题，你一定喜欢刨根问底，我也相信你一定比其他人更加理解</span>Java<span style="font-family: 宋体">！</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">如果你回答不上来，就听我给你讲讲。</span></p>
<p style="text-indent: 21pt">Java<span style="font-family: 宋体">一词来源于印度尼西亚南端的一个岛名，即爪哇岛，那里以盛产咖啡闻名。当</span>SUN<span style="font-family: 宋体">公司的开发人员在给这种语言取名的时候，正好喝着爪哇咖啡，于是</span>Java<span style="font-family: 宋体">由此得名。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我怎么知道这个故事呢？不瞒您说，我从来就没有编过一句</span>Java<span style="font-family: 宋体">的代码，我那是刻意查过资料的。如果我要学</span>Java<span style="font-family: 宋体">，我一定要先搞懂</span>Java<span style="font-family: 宋体">是怎么来的，搞懂为什么要发明</span>Java<span style="font-family: 宋体">语言等一系列问题，这其实就是刨根问底。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">然后，我会先用记事本写一个</span>Helloworld<span style="font-family: 宋体">程序，看看怎么编译它，看看它怎么运行，需要哪些文件等等。至于语法语义等，编译器会告诉我该怎么写。然后边学边做，看书，查资料。实在搞不明白，我就像大家请教。相信一段时间下来，我也能编出地道的</span>Java<span style="font-family: 宋体">程序。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">在学习过程中，我会以自学为主，尽量自己解决问题。如果拿一些基础性的问题向各位高手请教的话，你们一定会回答：自己看书！我要请教各位的问题一定是那种雪天裸体</span>360<span style="font-family: 宋体">度空翻跪地拜求，书上没讲，网上查不到的疑难问题。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">事实上，这也是向高手和前辈们请教的学问，也是学习方式之一。作为编程高手，他们最喜欢帮助那些经过自身实践的探索和琢磨，快要入门但不得要领的人。这时，只需轻轻点化，新手就能体会到顿悟的快感，而高手也有渡人成佛的成就感。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt"><strong><span style="font-family: 宋体">四.程序员的思想境界</span></strong></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">年轻的程序员最喜欢追求新技术和新潮流，这是无可厚非的。我们应该大力鼓励年轻的程序员学习新知识，爱学习的都是好同志。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">不过，我们不但要学习技术的应用，更重要的是学习技术背后所蕴含的思想真谛甚至情感境界。一种新技术的诞生，一种新潮流的兴起，往往背后都有理论思想的指导。只有深刻地理解了这些技术背后的理论思想，才能更好地把握技术本身。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">比如，面向对象编程是大家都在用的技术吧。有的程序员已经能用</span>C++<span style="font-family: 宋体">或</span>Java<span style="font-family: 宋体">或</span>C#<span style="font-family: 宋体">写一个类，定义属性，编写方法，然后创建一个对象，就可以调用它的方法，操纵它的属性了。这样，他也可以编写出面向对象的程序。不过，他所看到的只是程序对象。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">深入学习和理解面向对象的思想之后，我们就会明白：所有的对象都是对现实世界的抽象，面向对象编程就是用人类最自然的思维模式来编写程序。这时，我们看到的分类就是现实世界的门纲属科，那些对象也就成了现实世界的活物，属性和方法也就成了他们的性格和活动。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">这时候，我们再写面向对象的程序，就像写作文一样。各种命名都很自然地用到现实世界的各种名词，代码本身就无需多少注释，因为它们大都是自注释的。编写代码逻辑，就像编写现实世界的游戏规则。整个程序的思路非常清晰明了，代码也显得非常简洁优雅，运行效率也自然会高些。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">因此，学会技术的思想之后会对使用技术的能力产生一个质飞跃，可以更深层次地使用这些技术，而不会被表现的形式所迷惑。事实上，只要掌握了面向对象思想的本质，即使不用面向对象的语言，也能编写有面向对象思想的程序。就好像武林高手用树枝也能玩剑法，虽然树枝不是剑，但处处体现剑法的精髓。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">学会编程思想就足够了吗？如果还想更上一层楼，就得追求编程的境界。境界这个东西很虚，看不见摸不着，但可以从内心感觉得到。这种感觉有点像心灵相通的默契，若有若无。编程的境界追求的是人与程序间的心灵相通和情感交融，将自己的身心与程序世界融为一体，与现实世界融为一体。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">编程境界这个东西的确有点玄，境界这个东西是因人而异的，每个人的感悟都不同。就像佛教里的禅的思想，什么是禅呢？禅是需要自己体验的东西，别人说的都不算，是不能用语言来描述的。所谓，不立文字，直指人心。我也是只知皮毛啊。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">如果要我说什么是禅？一句话：通过感悟生活，得到生命的快乐。</span></p>
<p style="margin-left: 21pt; text-indent: 0cm"><span style="font-family: 宋体">编程之禅也就是：通过感悟编程的真谛，得到编程的快乐。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">编程的境界只有高低之分，而且永远没有尽头。当你的编程境界到了一定高度，你的思想将会跳出编程的范畴。你将会发现，软件的根本实际上是哲学问题，很多方面都是和其他科学相通的。就像现代的量子理论发展到最后，发现量子论事实上是与哲学相关的一样。这个撤得就远了，但是喜欢哲学思考的程序员一定会成为一名优秀的程序员。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">不过，再高的思想境界也得落到实处。光玩思想境界也不行啊，毕竟大家都在软件企业工作，都得道成仙了，谁来编码呢？</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">优秀的程序员也一定是务实的程序员。务实就是理论与实践相结合，追求的是完美与现实的平衡。毕竟理想和现实是有差距的，我们只有胸怀远大理想，面对残酷现实。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">前段时间我还给人讲过一句话：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">为了玩刀而上战场的人大都死于刀下，临死时怪自己的刀没有选好。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">为了杀人而上战场的人大都成了将军，临死时放下屠刀立地成佛了。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">所以，程序员要想成佛，不但要追求编程境界，还要学会在残酷的现实中拼杀，解决具体的问题才行。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt"><strong><span style="font-family: 宋体">五.程序员的协作能力</span></strong></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">现代软件软件开发，都是多人协作的大规模软件开发。对于大中型应用系统，特别是大中型网站系统，基本上不会产生单打独斗的软件英雄了。在现代软件开发中，将诞生越来越多的英雄的团队，而我们这些程序员也只能是这个团队的一员。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">因此，程序员是否具有协作能力，成了衡量程序员水平的另一个重要指标。成员的协作能力对于一个团队来说，往往比个人能力更加重要。一个优秀的团队，并不一定要由优秀的个体组成。反过来，优秀的个体如果缺乏协作能力，也无法成就一个优秀的团队。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">沟通交流能力是最基本的协作能力。什么是沟通交流能力呢？很简单，一是能听得懂读得懂别人的话，二是能准确表达自己的思想和看法。不过，这看似简单的东西，却不是人人都会的。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">有的人并不善于倾听别人，常常误解人家的意思。有的人呢，说话都说不清楚，脑袋里装的东西说不出来也写不出来，或者说了半天人家无法理解。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">为什么会出现这样的问题呢？据我多年的观察和研究，主要有两个原因，一是没有耐心，二是没把话说清楚。什么意思呢？没有耐心听人说话，又懒得把话说清楚。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">都说倾听别人是一种美德，可有的人就只顾自己说，喜欢打断人家说话，甚者人家还没把话说完就否定别人。所以，我说沟通应该从倾听做起。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我在平常的生活中很喜欢与同事和朋友们交流，他们也都喜欢和我讨论问题。一些同事和朋友找我解决一些问题，我总是耐心得倾听，尽力去理解，不断地点点头。常常听他们说了一半，突然说：啊，我知道问题在哪里了！这种情况我都遇到好多次了。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">其实，有的时候只要做到了耐心的倾听，就能解决问题。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">其次是说话不清。这个说话不清并不是指说话的声音不清晰，而是指话中的用词不清，说话的逻辑不清，经常使用大量的指代词。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">比如我对你说：&#8220;点一下这个，就让它改变颜色。&#8221;，谁能听懂我在说啥？估计没人能听懂。如果我再说：&#8220;用鼠标右键点击一下网页上的字体颜色按钮，就可以让选中的文本变成相应的字体颜色。&#8221;，这下听懂了。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">为什么前一句话他家听不懂呢？因为我省略了大量的在自己脑海中的景象，没告诉大家，潜意识中是以自我为中心的。&#8220;这个&#8221;、&#8220;它&#8221;这些代词只有自己明白指代的是啥，而听者并不清楚，自然听不懂我在说什么？</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">第二句话能听懂，是因为我尽量把每个脑海中的事物都说全把细节说全。这样，听者就能很快进入角色，大家迅速建立起沟通交流的上下文环境。一旦这个交流的上下文环境建立起来，再使用一些指代词也就不会影响沟通过程了。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">其实，这些简单的道理不但适用于语言交流，还适用于客户调研，需求分析，书面协作，等等方面。今后有机会再给大家继续探讨。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">协作能力还有一个重要的方面，那就是按规矩办事。按规矩办事就是所谓的规范化，规范化是一个优秀的团队的头等大事。作为一名有协作精神的程序员，就必须遵守团队的规范。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">如果你有个人英雄主义，那么，对不起，在你那深刻独到的见解没有成为团队认可的规范之前，你必须保留个人意见。编程的命名规范，接口形式，注释要求，开发管理流程，必须要遵守。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">接下来考验一个人的协作能力就是：是否有责任心。也就是对待自己那部分工作的态度。说得高尚一点儿，就是程序员的职业美德。责任心就是对自己所属的工作负责，认真对待自己那部分代码，甚至象呵护自己的孩子一样。其实，责任心也不是什么沉重的东西，有智慧的程序员总是喜欢将工作当作乐趣，大家不妨试试。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">以前有句老话说，文人相轻，就是文人之间互相瞧不起。事实上，程序员相轻，也是很普遍的事情。不是经常都会听到程序员说，那人代码写得真烂，重构人家的代码还不如自己重写呢。其实，很多情况下，你留下的代码也常常被人骂。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">在一个团队中，程序员相轻的现象是会引发团队内耗的。而具有协作精神的程序员对待其他程序员的代码，总是有一颗包容的心。他们更愿意通过改变自己去影响他人，从而让整个团队共同进步。</span></p>
<p style="margin-left: 21pt; text-indent: 0cm"><span style="font-family: 宋体">接下来我再给大家讲一个故事：</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">再伸手不见五指的崎岖山路上，有一群结伴赶夜路的行人。大家都背着自己的行囊，跌跌撞撞地向前走。由于既难分辨前进的方向，有看不清前后的行人，不是你踩着我的鞋，就是我捧着你的腰。就这样，一群人艰难地缓慢前行。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">就在这时，有人从行囊里取出一个灯笼，点亮之后高高举起。这小小的灯笼无疑给黑暗中行进的人们带来了光明。大家借助这微弱的光亮看到了前进的方向，看清前后的行人。人群不再跌跌撞撞，从而有序地行进，大家也加快了前进的步伐。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">当抵达目的地之后，人们这才发现那个点灯笼的人竟然是个瞎子。人们都很奇怪，白天和黑夜对这瞎子来说不都一样吗，他干嘛要在黑夜点灯笼呢？正在大家疑惑的时候，有人说：他是为了方便大家才点起灯笼的，我们应该感谢他才是！</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">于是，大家都来到瞎子跟前，感谢他为大家点灯照亮的善心。可瞎子却不好意思地说：我这样做其实也是为了我自己，因为人们总是撞我，我点起灯笼只是希望大家能看见我，就不会再撞到我了。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">这个就是禅宗里面有名的&#8220;瞎子点灯&#8221;的故事，照亮自己也就是照亮了别人！</span></p>
<p style="margin-left: 21pt; text-indent: -21pt"><strong><span style="font-family: 宋体">六.做快乐的程序员</span></strong></p>
<p style="margin-left: 21pt"><span style="font-family: 宋体">一开始我就说过，优秀的程序员是从快乐的程序员开始的。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">什么是快乐呢？</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">快乐，谁不知道啊，大家都感受过快乐。但快乐怎么定义呢？</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">佛说：快乐</span> = <span style="font-family: 宋体">现实</span> / <span style="font-family: 宋体">欲望</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">什么意思呢？就是快乐的大小，与现实条件的多少成正比，与欲望的大小成反比。快乐就是现实对欲望的满足感，就等于现实除以欲望。你拥有的现实条件越多，钱越多，房越大，车越好，快乐就多；你的欲望越大，解决了温饱就想娇妻，刚成为白领就想当经理，个个都想成为马云和比尔盖茨，现实满足不了，你就不快乐。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">当然，每个人追求的目标不一样，就会有不同的快乐和痛苦。程序员也一样，想实现更多功能，想让程序跑得更快，现实世界的软硬件条件又满足不了，客户的需求又变来变去，开发确实是一件痛苦的事情。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">程序员怎样使自己快乐呢？最简单的办法就是&#8220;知足常乐&#8221;。知足常乐就是把欲望控制在现实条件可以满足的基础之上。在编程中呢，就是把功能控制在可以实现的范围只能。在软件工程中呢，就是把用户需求控制在开发成本和期限之内。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">当然，要做到知足常乐是很不容易的事情。人们难免会不被各种欲望引诱，程序员也难免不被新技术吸引，也总想给客户提供更加强大的软件功能。要知道，人的欲望总是无穷无尽的，而现实条件总是有限的。佛说，有欲望就有痛苦。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">削除欲望会怎样呢？就是欲望为零。学过算术的人都知道，任何数除以零，等于无穷大。当欲望为零的时候，任何一点点现实的满足，就能带来无穷的快乐。这可能就是佛所说的极乐吧，似乎有些道理。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">再给大家讲一个禅宗的故事：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">古时候，有个老婆婆在家里供养一位修行的僧人，那时候一般家里人都以供养出家人为荣。在被供养三年之后，这位僧人也俨然有些道行。老婆婆想试探一下这位僧人的修为成就，于是特意找来村里最美的女子来服侍这位僧人。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">当花枝招展的美女出现在僧人面前时，他一下就把持不住了，一幅惊慌失措六神无主的样子，所有的修为全都费了。老婆婆见状非常生气，抄起笤帚就将僧人猛打一顿。然后让他重新修行。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">又过了三年，这位僧人已经修炼得体态安然，任何世俗都不能扰其心。老婆婆又想试探一下他的修为，又找来那位美女来服侍僧人。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">当美女再次出现在僧人面前时，这位僧人纹丝不动，对美女视若未见。不管美女如何挑逗他，都不毫不理睬。老婆婆见状，又抄起笤帚将他痛打一顿，并大骂：没想到这三年竟养了一个行尸走肉。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">于是，又过了三年，僧人终于参透禅机，看起来却和普通人一样了。老婆婆又找来美女试探他，他却一点都不害羞，大大方方地行赏起美女来，和美女相谈甚欢。这是后的老婆婆才满意地点点头说：你已经得道了！</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">这个故事很有意思吧？</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">禅是让人快乐的东西。消除欲望固然可以让人快乐，但只是自己快乐，修的是小乘佛法。但欲望就像杂草，今天除了，明天有会长，就算用巨石压住，仍然会从石头缝里长出来。俗话说&#8220;斩草除根&#8221;，只有除去这欲望之根，才能消除欲望。那么这欲望之根是啥呢？就是&#8220;自我&#8221;。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">大乘佛法就是放下自我，没有自我，将自我融入整个宇宙，去体验生命真正的快乐。禅不但可以让自己快乐，还会给别人带来快乐。因为放下了自我，就不再有你我之分，对待他人就和对待自己一样。将自己的快乐带给他人，就是普度众生。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">同样在编程之禅的修炼中，也大致会经历三个阶段。第一个阶段，总是逃不出编程世界的各种诱惑，程序员都被花花世界给搞迷糊了。这个阶段就是&#8220;看山是山，看水是水&#8221;。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">第二个阶段呢，程序员已经修得很高的当行，对各种编程思想和概念都了然于心，并不再为之所动。这个阶段就是&#8220;看山不是山，看水不是水&#8221;。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">而第三个阶段呢，就是彻底放下了自我，将自己与编程融为一体，和团队融为一体，和世界融为一体。这时再看编程世界，就是另一个生机勃勃的世界。这个阶段又是&#8220;看山还是山，看水还是水&#8221;，但山是真正的青山，水也是真正的绿水。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">这就是返璞归真的境界。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">大家都知道金庸笔下的老顽童周伯通吧。一生的历练，什么样的武功没学过？什么样的风浪没见过？都不知多大年纪了？却始终象一个孩子般天真烂漫，对什么事情都好奇，任何时候都是快快乐乐的，最后还长出了黑头发。返璞归真啊。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">其实呢，我讲周伯通是想告诉大家：快乐的程序员还要有一颗童心。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">童心会使我们对任何事物都充满好奇心，这会让我们在学习和探索新知识的过程中，充满无限的乐趣。童心会让我们把编程当作游戏，编程就像玩过家家，用心呵护自己的程序。童心让我们跳出狭隘的自私心，与同事快乐地相处。充满童心真是可以为我们带来许许多多的快乐，这是快乐程序员的有一个秘诀。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">想起多年前写的一首小诗《童心》，念给大家听一下：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">化一朵白云</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">将蓝天擦净</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">再洒一阵春雨</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">便绿了大地</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">阳光露脸的时候</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我已不见</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我就躲在</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">彩虹的后面</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">夜里不数星星了</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我就变成月亮</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">挂在山崖的一角</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">偷偷地笑</span>...</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">其实，童心就是爱心，就是快乐的心。很多程序员都已经忘记了童心，就变得越来越不快乐。好了，我给大家放一个小电影，看看原来的你是怎样的。以此结束今天的讲座，希望大家喜欢。</span></p>
<p style="text-indent: 21pt"><script src="http://www.cnblogs.com/Script/getmediawindow.js" type="text/javascript"></script><script language="JavaScript">GetMediaPlayerWindow( 'http://www.leadzen.cn/video/tx.flv', 400, 300);</script></p>
<div style="border-right: #a3aab0 1px dotted; border-top: #a3aab0 1px dotted; border-left: #a3aab0 1px dotted; width: 410px; border-bottom: #a3aab0 1px dotted">
<div style="padding-right: 5px; padding-left: 5px; font-weight: bold; padding-bottom: 5px; color: #2f6b90; padding-top: 5px; background-color: #e7edf9; text-align: center"><img alt="Flash Video 文件" src="http://www.hjenglish.com/images/icon/swf.gif" /> Flash Video 文件</div>
<div style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; padding-top: 0px; background-color: #fff; text-align: center" valign="middle">
<div id="_player289" style="display: none; width: 400px; text-align: center"><img style="cursor: hand" onclick='ShowMedia2("player289", "http://www.leadzen.cn/video/tx.flv", 400, 316);' alt="点击播放" src="http://www.hjenglish.com/images/icon/click2play.jpg" border="0" /> <br />
<a style="font-weight: bold; color: #fc6a00" onclick='ShowMedia2("player289", "http://www.leadzen.cn/video/tx.flv", 400, 316);' href="http://www.cnblogs.com/leadzen/archive/2008/06/23/1227944.html###">点击开始播放</a> </div>
<div id="player289" style="margin-top: 5px; display: block">
<object height="316" width="400" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
<param name="_cx" value="10583" /><param name="_cy" value="8361" /><param name="FlashVars" value="" /><param name="Movie" value="http://www.hjenglish.com/images/hjplayer/hjflvplayer.swf" /><param name="Src" value="http://www.hjenglish.com/images/hjplayer/hjflvplayer.swf" /><param name="WMode" value="Window" /><param name="Play" value="0" /><param name="Loop" value="-1" /><param name="Quality" value="High" /><param name="SAlign" value="LT" /><param name="Menu" value="-1" /><param name="Base" value="" /><param name="AllowScriptAccess" value="" /><param name="Scale" value="NoScale" /><param name="DeviceFont" value="0" /><param name="EmbedMovie" value="0" /><param name="BGColor" value="" /><param name="SWRemote" value="" /><param name="MovieData" value="" /><param name="SeamlessTabbing" value="1" /><param name="Profile" value="0" /><param name="ProfileAddress" value="" /><param name="ProfilePort" value="0" /><param name="AllowNetworking" value="all" /><param name="AllowFullScreen" value="false" />
<embed src='http://www.hjenglish.com/images/hjplayer/hjflvplayer.swf' quality='high' type='application/x-shockwave-flash' flashvars='file=http://www.leadzen.cn/video/tx.flv' width='400' height='316'></embed></object></div>
    </div>
    </div>
    <p>&nbsp;</p>
    <p style="text-indent: 21pt"><span style="font-family: 宋体">原创：李战(leadzen).深圳 2008-6-23<br />
    &nbsp;&nbsp;&nbsp; 原文：</span><a id="Editor_Edit_hlEntryLink" title="view: 做快乐的程序员 - 在淘宝网的一次讲座" href="http://www.cnblogs.com/leadzen/archive/2008/06/23/1227944.html" target="_blank">http://www.cnblogs.com/leadzen/archive/2008/06/23/1227944.html</a></p>
    <br />
    <script src='http://bulo.hjenglish.com/musicbox/listcodemaker.aspx?hjptype=song&amp;player=7&amp;file=javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Editor$Edit$lkbDraft", "", true, "", "", false, true))&amp;caption=false&amp;lrc=&amp;_top=0&amp;backColor=FFFFFF&amp;frontColor=000000&amp;autoplay=false&amp;showDownload=true&amp;width=200&amp;height=20' type="text/javascript"></script></div>
 <img src ="http://www.blogjava.net/yangmage/aggbug/253497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangmage/" target="_blank">Solar</a> 2009-02-06 10:16 <a href="http://www.blogjava.net/yangmage/articles/253497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>