[程序员修炼之道]读书笔记(未完成)

时隔三年后重读”The Pragmatic Programmer”,理解和三年前又有所不同,之前很多东西还无法完全理解透彻,而现在重读,大部分书中内容都已深有体会。

注重实效的哲学


注重实效的程序员的特征体现在他们处理事情的态度和哲学上。

我的源码让猫给吃了

程序员要学会承担责任。要提供各种选择,而不是找借口。不要说事情做不到,要说明做什么能够挽回局面。

软件的熵

不要让软件腐烂(无序增长)。及时修理”破窗户”,发现一个就修理一个,即便没有时间,起码也要标注下来。拖延症一定要治。

石头汤与煮青蛙

这一节教我们如何”温和的欺骗”。这是一个很好用的办法:在团队中,大家往往都会守护自己的资源,而不会随便调用他们帮你。可以先从小要求开始入手,慢慢的,一点点的让大家接受你提出的改变。

从另一方面来讲,我们也要警惕身边这种微小变化可能带来的灾难性后果,就像温水煮青蛙一样,不要到结果已经无法收拾时才猛然醒悟。

做团队的催化剂,但是在催化时,要考虑明白这是石头汤还是煮青蛙。

足够好的软件

软件做到多好才叫”足够好”,这是个问题。我们应该将软件质量作为一个需求来进行权衡,需要做好,但同样应该知道何时止步。因为,软件永远不可能完美。

你的知识资产

知识资产是程序员的核心资产,学会定期投资自己。

有如下的tip:

  1. 定期投资,要持续不断的学习。

  2. 多元化。要跟上潮流,学习不同的技术。

  3. 管理风险,不要将鸡蛋放在一个篮子里。

  4. 低买高卖,在还无人问津时就学习新兴技术的回报往往很大。

  5. 重新评估与平衡。像选股票一样及时调整投资策略。

在累积自己知识资产的同时,也要学会批判性思考,不要被搜索引擎欺骗。

交流

程序员应该学会交流。

这一节提出了一些有效交流的好办法,都比较实用:

  1. 知道自己想要说什么,说之前应该提前规划好。

  2. 了解自己的听众是什么水平,试图揣测他们的心意,然后提供给他们想要的信息。

  3. 选择一个好的时机进行交流很重要。

  4. 了解听众喜欢什么风格,然后试着使用他们喜欢的风格去表达。

  5. 做一份美观的文档,大家都喜闻乐见。

  6. 让听众参与,自己也学着做倾听者。倾听并改变,自己也能学到很多。

  7. 记得回复别人的邮件或者信息,这样才有礼貌。

注重实效的途径


重复的危害

DRY原则,Don’t Repeat Yourself,是本书提出的一个很重要的原则,也是每个程序员都应该学会的东西。

当你意识到在重复的时候,应该有意识的让他复用。有时候把一段代码复制粘贴n遍很简单,但是当你修改这段代码时,你就需要修改n遍。

不只是写代码,写文档,做设计亦是如此。好的程序员应该有意识的复用自己的东西,往往一时的偷懒,带来的确实无尽的灾难。

后面还有很多地方都引用了DRY原则,一定要记住并且将他应用到实际当中去。

正交性

正交性,即解耦,减少两部分之间的关联,这是软件设计时的重要目标。

需求总是在变化,当需求变化导致你需要改变一些地方时,你断然不会愿意出现”牵一发而动全身”的效果吧。

避免正交性的一个好办法是编写单元测试,测试用例会让你意识到你的代码耦合度有多高。

可撤销性

曳光弹

原型与便笺

领域语言

估算

基本工具


每一个好的程序员都应该有一套好的”工具箱”,这样工作起来才能得心应手。

我很认同这个理念,在工作与学习时构建自己的系统,不知不觉间就发现自己无比强大。

注重实效的偏执


弯曲,或折断


当你编码时


在项目开始之前


注重实效的项目



本文由金同尧原创,首发于JinTongYao’s blog,转载请注明出处。