The Pragmatic Programmer: Your Journey to Mastery

你要为自己的人生做主。精心营造,与人分享,为之喝彩。好好享受吧!

一年前在UCB上cs61B的时候,最后一次section讲的是软件工程相关的东西。随着时间的推移,那节课里我唯一记住的东西就是”变化”这两个字(是的,这两字的上下文我也忘完了)。今天结束了对《程序员修炼之道》的阅读,巧合的是(或许不是巧合)这本书里无数次强调了”变化”,遂开始回忆起一年前的”往事”,又去找了当年的课程材料,具体而言所谓的变化其实是”Design for change”。

是啊,世界无时无刻不在变化,时间在变化,我们在长大。

和软件相关的也不例外,需求在变化,技术在变化,组件在变化,输入在变化甚至开发者也在变化,开发者之间的关系也在变化。变化是常态,也是唯一能确定的东西。(因此我对某老师的打趣: 如果一个公司经常改变需求,那尽早还是离职为妙的说法非常不认可)。

一个设计良好的软件一定是能够有效应对内部和外部变化的软件,也只有这样的软件才能活下去。这是评价一个项目代码质量的标准。

回到《程序员修炼之道》这本书,真的真的受益良多,很庆幸在毕业之前读完了这本书。也感谢这本书陪我走过了大学最后一个学期,走过了毕设项目、SuperNES安卓项目以及很多小的编程实践。从此我的编码有了方向!!!!

如果要说这本书的内容如何总结,我想其实很简单,就两个字”务实”,凡是和编码相关的事情,如果无法做决定,考虑一下哪种方式更加务实,那便按那种方法去做吧。当我把”务实”这件事逐渐带入生活中时,我发现可以进一步总结为责任。是的,责任!对朋友、对所爱之人、对同学、对老师、对陌生人、对你所写的代码、对你参加的项目、对你的工作的责任。当然,你的人生是你的,具体怎么做,由你自己决定。

因此我觉得这本书的英文标题非常非常非常非常好,没有像中文标题那样故弄玄虚和高大上(程序员修炼之道),明明白白的就是”The Pragmatic Programmer”,我想这不正是符合了本书的中心思想吗。当然书中还提到了很多很多非常有用的和程序员各个方面相关的方法学以至哲学思考。

随手记录一下倒数第二章提到的”敏捷”的本质。敏捷不是一个工作流程,它是一种如何做事(做人)时该有的精神和责任,归结起来就是如何处理不确定性

  1. 弄清楚你在哪里。
  2. 朝想去的地方迈出有意义的最一小步。
  3. 评估在哪里终结,把弄坏的东西修好。

最后,真心祝愿自己能成为一个务实的系统程序员/pragmatic system programmer