时隔三年后重读”The Pragmatic Programmer”,理解和三年前又有所不同,之前很多东西还无法完全理解透彻,而现在重读,大部分书中内容都已深有体会。
注重实效的哲学
注重实效的程序员的特征体现在他们处理事情的态度和哲学上。
我的源码让猫给吃了
程序员要学会承担责任。要提供各种选择,而不是找借口。不要说事情做不到,要说明做什么能够挽回局面。
软件的熵
不要让软件腐烂(无序增长)。及时修理”破窗户”,发现一个就修理一个,即便没有时间,起码也要标注下来。拖延症一定要治。
石头汤与煮青蛙
这一节教我们如何”温和的欺骗”。这是一个很好用的办法:在团队中,大家往往都会守护自己的资源,而不会随便调用他们帮你。可以先从小要求开始入手,慢慢的,一点点的让大家接受你提出的改变。
从另一方面来讲,我们也要警惕身边这种微小变化可能带来的灾难性后果,就像温水煮青蛙一样,不要到结果已经无法收拾时才猛然醒悟。
做团队的催化剂,但是在催化时,要考虑明白这是石头汤还是煮青蛙。
足够好的软件
软件做到多好才叫”足够好”,这是个问题。我们应该将软件质量作为一个需求来进行权衡,需要做好,但同样应该知道何时止步。因为,软件永远不可能完美。
你的知识资产
知识资产是程序员的核心资产,学会定期投资自己。
有如下的tip:
定期投资,要持续不断的学习。
多元化。要跟上潮流,学习不同的技术。
管理风险,不要将鸡蛋放在一个篮子里。
低买高卖,在还无人问津时就学习新兴技术的回报往往很大。
重新评估与平衡。像选股票一样及时调整投资策略。
在累积自己知识资产的同时,也要学会批判性思考,不要被搜索引擎欺骗。
交流
程序员应该学会交流。
这一节提出了一些有效交流的好办法,都比较实用:
知道自己想要说什么,说之前应该提前规划好。
了解自己的听众是什么水平,试图揣测他们的心意,然后提供给他们想要的信息。
选择一个好的时机进行交流很重要。
了解听众喜欢什么风格,然后试着使用他们喜欢的风格去表达。
做一份美观的文档,大家都喜闻乐见。
让听众参与,自己也学着做倾听者。倾听并改变,自己也能学到很多。
记得回复别人的邮件或者信息,这样才有礼貌。
注重实效的途径
重复的危害
DRY原则,Don’t Repeat Yourself,是本书提出的一个很重要的原则,也是每个程序员都应该学会的东西。
当你意识到在重复的时候,应该有意识的让他复用。有时候把一段代码复制粘贴n遍很简单,但是当你修改这段代码时,你就需要修改n遍。
不只是写代码,写文档,做设计亦是如此。好的程序员应该有意识的复用自己的东西,往往一时的偷懒,带来的确实无尽的灾难。
后面还有很多地方都引用了DRY原则,一定要记住并且将他应用到实际当中去。
正交性
正交性,即解耦,减少两部分之间的关联,这是软件设计时的重要目标。
需求总是在变化,当需求变化导致你需要改变一些地方时,你断然不会愿意出现”牵一发而动全身”的效果吧。
避免正交性的一个好办法是编写单元测试,测试用例会让你意识到你的代码耦合度有多高。
可撤销性
曳光弹
原型与便笺
领域语言
估算
基本工具
每一个好的程序员都应该有一套好的”工具箱”,这样工作起来才能得心应手。
我很认同这个理念,在工作与学习时构建自己的系统,不知不觉间就发现自己无比强大。
注重实效的偏执
弯曲,或折断
当你编码时
在项目开始之前
注重实效的项目
本文由金同尧原创,首发于JinTongYao’s blog,转载请注明出处。