《程序员修炼之道》读后有感

《程序员修炼之道》读后有感

                                                  --------The Pragmatic Programmer From Journeyman to Master

                                                             Authors: Andrew Hunt & David Thomas

          首先不得不说这是一本熔知识,哲理,幽默与实践与一炉的奇书,引导你领悟程序设计的真谛,只可惜我没能好好的理解透彻,更加难得可贵的是它是一本英文原著,却有着丰富的难词和背景信息注释。本书出版之后,两位作者都参与起草了敏捷运动的纲领性文件《敏捷宣言》,所以敏捷软件开发可以视为Pragmatic Programmer 的自然延续,如果想对敏捷开发有更加深刻的理解,建议各位一定好好读读此书。

         本书首先给我们介绍了什么是注重实效,它是一门哲学,不仅仅体现在编程方面,涉及到对人,对事,对自己的态度和处世之道,紧接着作者尝试揭示注重实效的途径,结合自身体会给读者提供了若干意见,并且还介绍了一些基本工具。最后,具体到实际,当你编程时,当你开始某个项目之前,对于你应该做些什么,应该怎样开始你的项目,项目开发过程中应该注意什么,作者都提供了很好,很实际的建议。本书附录更是搜集罗列了若干专业协会和网络资源,以便感兴趣的读者进一步学习。

          什么是注重实效的哲学,注重实效的程序员有着哪些特征?

          一个最基本的特征:对你自己做的事情负责,正如‘猫把我的代码吃了‘一节那样,不要为过失和bug 寻找无力的借口。负责的另一个重要体现就是:不要容忍破窗。当你发现bug 时,一定要及早地修复,千万不要留在最后以至雪球越滚越大,引发其他一系列的问题。

       另外一个重要特征:不畏惧改变,鼓动和接受改变,同时牢记最终的picture,知道何时停止与结束。安于现状最终就是那只被煮的青蛙,要接受和鼓动改变,记住最终的目的,这一点对于一个团队尤其重要。何谓恰到好处的软件?不要过于追求完美软件,一名注重实效的程序员一定要知道何时停止绘制理想的蓝图。

       另外,他们都在不断地学习,阅读各种书籍,不论是技术的还是非技术的,专业的还是非专业的 。学习的同时他们不断地交流,博取众家之长。

       注重实效的途径?

       简单介绍几个非常重要的原则和习惯:

1, DRY—don’t repeat yourself

      由于各种原因,代码的复制有时候难以避免,为了你的代码效率,千万不要自我复制。复制的代价可想而知,当你修改一处时,你必须得修改其他代码,这样的代码是难以管理的,更不幸的是你常常忘记修改。

2, 正交性/独立性

     比如项目团队的正交性,设计的正交性,工具箱和库的正交性,代码编写的正交性,测试的正交性,文档的正交性,总之保持独立性,消除无关事物之间的相互影响,它能让你提高生产率,降低风险。

3, 可逆性

         始终保持灵活的架构,用户的需求是不断改变的,所以请记住—不存在最后的决定,什么都是可能改变的,所以一定要保持代码和架构的灵活。

4, 估算

duration

Quote estimate in

1-15 days

days

3-8 weeks

weeks

8-30 weeks

months

30+ weeks

Think hard before giving an estimate

        对软件使用的资源效率,项目开发的进度等进行估算,以免意外。那么,多么精确才算足够精确呢,不同的环境答案截然不同,恰到的单位非常重要,比如对时间的估算:

正确的使用计量单位能让你的估算更加容易理解,准确。

另外,记录并验证自己的估算水平,看看自己的估算水平是否在不断提高。

                                                                  
         最后,具体到实际问题,当你在编程时,当你的项目开始之前,应该注意一些什么呢?        

         本书作者郑重提倡开始编程之前,请深思熟虑,不要靠巧合编程,所谓巧合编程,就是不加思索,接到任务开始coding,run 一下,正常运行了,甚至于自己都不清楚它为什么能运行,作者批注这是由于一系列的巧合和隐含的假设,所以建议读者深思熟虑之后再开始coding 。

         关于测试,单元测试,集成测试,性能测试,可用性测试,回归测试等等,我们都知道测试无所不在,那么发现bug之时,还请保持现场,稍安勿躁,先重新bug,然后修复之,再按照原先步骤测试,看看是否真的修复了,我们需要的是从源头上修复bug,当然如果有需要,你还可以对测试代码进行测试,毕竟测试代码也是代码,也有bug的可能。

         本书内容博大精深,非三言两语可以道尽,感兴趣的读者可以一阅,一定收获多多,不论是编程的技艺还是为人处世之道。

最后附上作者对于不断学习的一些建议:

1, learn at  least one new language every year

2,read a technical book each quarter

3,read nontechnical books too

4,take classes

5,participate in local user groups

6,experiment with different environments

7,stay current

8,get wired

.

.

.

.

.

posted @ 2011-02-24 20:20  ustc_msra_ase  阅读(714)  评论(2编辑  收藏  举报