`
hl756799782
  • 浏览: 77774 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

快,体现了真正的掌握(转载)

阅读更多
***************************************************************************************
中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有葵花宝典才是最厉害的,也只有掌握了葵花宝典,才能称为“不败”。

 

  但什么才是软件开发的葵花宝典?

 

  让我们先从一些现象出发。我们的前提是,软件开发是一项智力密集型劳动。对于智力密集型劳动,我们观察到的现象是,个体的表现差异很大,团队的表现差异很大,组织的表现差异很大,国家的表现差异很大。这不象体力占主要的劳动,象百米王跑百米的速度也仅比我快50%。但在棋类运动中,一个高手可以车轮战数位低手,而且毫无例外地将他们一一击败!

 

  这些智力运动员表现出的特点是,计算精确而且速度快。其行为很象东方不败。虽然关于葵花宝典的传说很多,但最准确的描述只有一个字“快”。东方不败已经快到了吓人的地步。就象卡斯帕罗夫已快到了深蓝的地步。

 

  有一则关于物理学家玻尔的轶事,有一次玻尔在普林斯顿大学听两个年青教授演讲他们的工作成果。期间玻尔突然发言说,如果照你们的研究算下去,会得到一个很有意思的推论。结果两个年青教授回去计算了两天,果然得出了同样的结论。玻尔是如何做到这样快的?

 

  在软件开发中,我们同样注意到这样一种高手,他们可以每天写出一千行左右的高品质代码。他们可以运用已有的一些软件包,迅速完成一个新的产品。他们可以在很短的时间内,学会一项新的程序语言或是新技术。他们表现出一种神奇的速度。

 

  在武侠小说中,所有的高手都有一些凡人不能企及的表现。象张无忌学太极,用龙爪手击败龙爪手名家;乔峰用太祖长拳击败天下英雄;姑苏慕容以其人之道还治其人之身,令狐冲一剑剌瞎十几双眼睛等等。我认为,之所以他们能做到这样,关键是在于他们快。

 

  快并不意味着不准或品质差。快与品质并不矛盾。

 

  高手的快,其实包含着很高的品质在其中。如果你因为高手的快,就质疑其品质,那就相当于在问:东方不败出手那么快,会不会刺不准?东方不败并不满足于刺死对手,他会在对手身上刺朵花。他把杀人变成了艺术。准确来说,他真正的兴趣不在杀人,而在于艺术。

 

  退一步说,就算东方不败第一击有点偏差,他稍作修正后,马上跟上的第二第三击,也会击中他想击中的地方。在武功差的对手剑还没拨出来的时候,他已杀死对方并刺上了一朵花。

 

  所以真正的软件高手,他并不满足于他的代码能有效地工作了,他认为编程是艺术,并醉心于其中。在低手能写出一个版本的时间里,他已经写出了第十版。其品质当然不可同日而语。就象一个九段棋手,在给定的时间里,他能计算十种可能,并将每种可能计算到100手之后,从中选择一种最有利的下法。低手岂有苟全的机会?

 

  高手写软件总是不停地在重构(refactoring)。高手喜欢迭代式开发。高手说,增量就是打补丁,迭代就是推倒重来。对于软件这种东西,写一遍它可能ok(做到这一点也不容易),写十遍就是一个伟大的产品,再多写一遍它就更伟大些。

 

  高手快的诀窍在于他很熟悉各种东西。高手看书很快,因为每一本新书里,值得他好好看的新技术只有一两章的内容。他能迅速看完,并准确领会这本书的中心思想和价值。而对于一个新手,每句话都是新的,他都需要去理解,每一段例子,他都需要去试。

 

  很少看到一种100%全新的技术或理论。就象java language specification里说的,java没有使用任何新技术,用的都是业界久经考验的技术。对于高手来说,那些技术都是他所熟悉的。自然,很快他就从一个c++高手变成了java高手。如果一个编程新手学java,学两年也不如一个高手学两个月的。高手学新东西快。

 

  高手写代码速度快。统计结果说,人均每人月的有效代码速度大概是300至400行。但那是业界平均生产效率。对于高手来说,这个数字太低了。每天写300至400行是完全有可能的。因为在写代码时,所有知识都已具备,已经没有任何需要他多花时间的事情了。他甚至很少需要debug。

 

  高手重用代码的能力很强,熟悉新的api的速度很快。这也是因为,他曾经使用过很多的api,重用过很多的代码。他知道哪些是可用的,哪些有缺陷。他既过用qt,也用过gtk+,也用过windows api & mfc,也用过awt & swing。新的api对他来说,也是老熟人。

 

  高手喜欢用轻量级的工具,象vi,notepad,最多到ultraedit这样复杂的。高手用这种工具写出很多的东西。这些工具就象东方不败的针。那根针已具有神奇的魔力,有时候它可以当激光枪来用。

 

  对于一些重量级的工具,高手虽不常用,但一经使出也威力大于常人。如果让东方不败用剑,最厉害的剑术名家也会败得很难看。高手其实用过很多的重量级工具,而且深知其优缺点。所以使出来,就会把威力发挥到最大,而把缺陷减少到最小。而低手则不然,总是把缺陷加以大大的发扬而浑不知其精髓何在。就象很多人学用uml、rup、xp、design pattern那样。

 

  高手所学博杂且融会贯通。高手做什么都快,当低手还在一愁莫展的时候,高手已经圆满解决问题,去干别的事去了。

 

  相信你有一点点想成为高手了。但是有一个问题亟等解决,那就是“欲练神功,必先自宫”的问题。这一点其实是有比喻意义的。就是说,你必需抛弃一些世俗的人们很看重的东西。有诗为证:

  世人都晓高手好,只是寂寞受不了

  世人都晓高手好, 只有名利忘不了

  世人都晓高手好, 只有金钱一定要

  世人都晓高手好, 天下美女都要抱

  世人都晓高手好, 不写代码最最好

 

  高手的武功不是一朝一夕练成的。还记得玻尔那件轶事吗,玻尔回答说,他年青时也计算过很多的问题。在很多计算的基础上,高手能培养起一种感觉。高手不写代码就能做设计是因为他以前写了很多的代码。而且他们会保持写代码,以保证自已的水平不下降。想一想九段高手是如何练成的。最难做到的是能忍受十年磨一剑的寂寞。别人在父母那里撒娇时,他们在一旁用功。十年磨一剑,剑就成了东方不败的针。

 

  在你下定决心要做高手之后,也就是下定决心抛弃那些世俗的追求之后,也就是你下决心忍受那些来自于庸俗的人的白眼、攻击和谩骂之后,你就具备了练成神功的必要条件。

 

  事实上其实你不必一开始就练神功,一开始大家可能是为了钱,房子,汽车,美女才编程序的,然而后来艺术就从中产生了。那时高手就不再关注那些东西了。卓别林曾说过,他开始进入那个圈子也是为了钱,后来艺术就从中产生了。当然,也有人一开始是为了艺术,后来变成为了钱。

 

  所谓三十而立,就是说到了三十,你找到了你的真爱,值得用一生去追求的那种。比如说有的人到了三十认为这一辈子应该赚尽可能多的钱,这也没什么不好,也可以把赚钱本身变成一种艺术,所谓资本运作是也。所以在三十以前,有些私心杂念没什么。三十以后还这样是可耻的。而我,想做一个程序员。

 

  每个人做自己最喜欢的事。这个世界需要程序员,也需要资本运作。所有真正的程序员,他最喜欢的事是编程和他自已。如果他后来去做ceo去了,不再编程,只说明他本来不是一个真正的程序员。

 

  在成为高手的路上,要有热情,要循序渐进,要持之以恒。

 

  要靠自己,书要快快地看。要试图迅速理解其主旨。其实你快快看所接受的信息量,与慢慢看接受的差不多。能明白多少很大程度上取决于你的功底。以后用到再回过头来看。一本对你来说新东西太多的书,不要指望看一次就全理解吸收。就象很多功力不够的人看design patterns那本书一样。慢慢看还不如找到多种 信息来源,都快快看一遍。对于一个完全陌生的领域,只看一本书很远远不够的。

 

  要靠自已,事要快快做。有一个朋友,几年前我介绍他去玩玩linux,他也表示想玩,但他现在还没碰过。他失去了很多机会。

 

  平时要有意识提高自己写代码的速度,其实你一天写15行有效代码,与你写50行有效代码,其品质是差不多的。你应该把那些业界平均水平抛诸脑后,把超越自己做为唯一目标。等到你写了很多各式各样的代码,你的水平就不一般了。一个老师曾向我介绍他的学英语的决窍,他说你去啃原版小说,啃到50本,就和一般人有很大距离了。就是这个理。如果你写得太慢,怎么能写得多?水平怎么能提高?

 

  要靠自己,学很多别人怕学的东西。低手总会说:这么多东西怎么学得过来啊。于是就少学或不学。这样就成不了高手了。高手有非常广的知识面,有很丰富的经验。知道很多低手不知道的事。玩过很多低手听都没听过的东西。

 

  要靠自己,努力满足客户的各种需求。个人技能是在满足客户的各种需求的过程中提高的。比如你喜欢用delphi,客户说一定要用vb,那你就答应他,然后把自己培养成为vb的高手。用户的需求看似**,但对你是一个机会。

 

  怎样才能做到看书快,写代码快,学新东西快,一个显而易见的途径就是将工作并行化。你在一台机器上make时,同时可以在看别的文档和聊天。对于计算机是这样,对人也是这样。如果你只能串行地处理问题,你的速度将提高有限。你的大脑有很大潜力可挖,它应该是一个多任务分时系统。努力减少它idle的时间。搞经济的samuelson被人称为human brain main frame,可见他的大脑有多快。

 

  让你的思维快起来,你就会区别于那些反应迟钝的人。如果你不能让人生的道路变长,就让它变宽。这世界变化快,需要你变得比它快才行。

 

  这样加快并不会让你短命,相反,你有更多的时间来享受生活和锻炼身体。你的生活将更有品质,更丰富,更有意义。面对变化,你将立于不败之地。我们都是和自己赛跑的人,需要跑得比昨天的自己更快。

分享到:
评论

相关推荐

    煤矿短距离转载皮带机的研究应用

    1. 设计创新:这种转载皮带机的创新设计可能体现在多个方面,包括传动系统、载带材质、转载效率以及作业环境适应性等方面,以满足井下复杂多变的作业条件。 2. 结构简单:结构简单是指转载皮带机的组件数量和种类较...

    如何识别真正的程序员

    他们不仅满足于掌握现有的技能,还会积极学习新的编程语言、框架和工具,保持与时俱进。比如,当Python、Go或Rust等新兴语言崭露头角时,真正的程序员会主动去了解它们的特点和应用场景,甚至在实际项目中尝试运用。...

    直方图中的标准差如何体现.pdf

    直方图中的标准差如何体现 在数据分析和可视化中,直方图是一种常用的图表类型,用于展示连续型数据的分布情况。然而,在直方图中如何...同时,本文还提供了一个实践步骤,帮助读者更好地掌握直方图中的标准差体现。

    2021版高考英语一轮复习Unit2Englisharoundtheworld课后达标检测新人教版必修1

    快速阅读的重要性不仅体现在速度上,更体现在其带来的效率上。在快节奏的社会环境中,快速阅读能够帮助人们在有限的时间内掌握更多的知识和信息。但值得注意的是,快速阅读并不适用于所有场景。对于深入的学术研究或...

    大型转载机变位焊接机全套图纸-几何文件

    5吨的载重意味着它可以处理相当大且重的部件,体现了设备的强大承载能力和适应性。 在实际应用中,设计人员会依据这些图纸和几何模型进行设备的制造和安装,包括选择合适的材料、计算力学性能、制定焊接工艺、设定...

    电子功用-快热电烙铁

    快热电烙铁的温度控制功能,也是其高效性能的重要体现。配备了恒温控制系统的电烙铁,能够使用户设定特定的工作温度,并通过内置的温度传感器和控制器来维持该温度的稳定。这样的设计,可以有效避免因烙铁头温度过高...

    命运掌握在自己手里.doc

    作者强调,只有持有积极的态度,相信自己有能力改变命运,人们才能够真正地把命运掌握在自己手里。 综合来看,《命运掌握在自己手里.doc》不仅是一篇关于教育和学习的论述文章,它更像是一份励志宣言。它鼓励人们...

    财务知识转载分享.doc

    总之,《财务知识转载分享.doc》这篇文档为企业管理者提供了一个全面了解和掌握财务知识的框架。通过学习这些基础财务知识,管理者可以更好地理解和评估企业的财务健康状况,从而做出更加明智和有效的决策。当然,这...

    配置Struts 2开发环境,了解和熟悉Struts 2的开发流程、了解和熟悉Struts2标签的使用方法.rar

    1.正确创建Action类;...6.要求在创建过程中,包的名称要体现班级和学号,项目名称不需要按照实验手册中书写。在做的过程中需要截图,以及关键代码或者截图,截图需要全屏截图。运行结果截图需要带IP地址那种形式

    小学语文1-6年级应掌握基础知识要点精华版.docx

    最后,变换句式是语言表达多样性的体现。学生需要学会将直接引语转化为间接引语,掌握“把”字句和“被”字句的转换,以适应不同的表达需要。在变换句式时,要保持原意不变,同时注意人称、语序和标点符号的调整。 ...

    快的繁体字怎么写.docx

    - 将要,接近:用来形容某个事件即将发生,例如“天快亮了”等表达,体现出时间上的迫近性。 - 灵敏,反应快:可以用来形容人思维敏捷或动作迅速,如“反应快”、“思路快”等。 - 锐利,与“钝”相对:常用于描述...

    安卓NZT9一键新机软件下载-转载版!DEB

    7. 转载与分享:描述中提到软件是从网络下载站转载而来,并分享至CSDN这样的技术社区,这表明NZT9可能受到了一定的用户认可,用户间的分享也体现了软件的实用性和口碑。 8. 注意事项:使用此类工具前,用户应确保已...

    参考资料-为什么要掌握电磁兼容技术.zip

    在实际工作中,这不仅需要理论知识,还需要实践经验,通过不断地学习和实践,才能真正地理解和应用电磁兼容技术。因此,对于任何希望在IT行业尤其是电子硬件领域发展的专业人士来说,电磁兼容技术是必须要掌握的一项...

    真正哲学是时代精神精华.ppt

    真正的哲学不仅是理论的构建,更是对现实世界的深刻理解和批判,是人类智慧的集中体现。在学习和研究哲学时,我们需要辨别哪些是真正的哲学,哪些只是片面的观念,以便从中汲取智慧,更好地理解和应对我们的时代。

    语文四翼在高考试题中的体现与教学对策.docx

    首先,【基础性】体现在对语文基本知识和技能的掌握,如阅读理解能力。教师需要帮助学生建立扎实的阅读基础,通过有针对性的训练提升他们的阅读理解水平。例如,教师可以指导学生如何静心阅读,把握文章的关键信息,...

    浙江专版备战2019高考化学一轮复习易题快速练5化学用语

    化学反应方程式的表示要求考生精确表达化学键的连接方式,这是化学用语掌握程度的直接体现。例如硝基苯的结构简式,乙醛的官能团表示,都能反映出学生对化学反应原理的掌握程度。 比例模型的准确性要求考生在绘制时...

    音频频谱分析,快速傅里叶变换

    它的“快速”体现在计算复杂度上,相比于直接计算DFT,FFT的时间复杂度显著降低,使得大规模数据的频谱分析成为可能。 在实现音频频谱分析时,通常会有一个用户界面,例如基于对话框的设计。这种界面允许用户选择...

    什么是真正的深度学习.pdf

    德国哲学家洪堡曾提出,一个民族的语言文字是该民族文化、精神和感情的体现,通过语言学习,我们不仅学习语音、语调,还在学习一个民族的文化和思想。 最后,深度学习是一种具有纯粹精神气质的学习。它强调求知是...

    极速掌握Tomcat

    由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了...

    三年级语文下册 真正的施主 2教案 北京版 教案.doc

    《真正的施主》这篇课文不仅能够帮助学生掌握新的汉字,理解课文内容,更重要的是能够培养学生的阅读和表达能力,同时对学生进行情感教育,引导他们体会到人与人之间的关爱。针对三年级语文下册的这篇课文,我们特别...

Global site tag (gtag.js) - Google Analytics