程序员修炼之道:从小工到专家阅读笔记5

发布时间 2023-12-19 22:29:04作者: 欧吼吼

程序员所应该遵循的实用主义原则。

 

我的源码让猫给吃了:出现错误时,要诚实,不要推诿或者找借口。要提供各种可能的解决方案与后果并与他人沟通,而不是提供借口。

 

软件的熵:这是著名的破窗户原理。项目中一个小的、无人料理的问题可能带来后续编码时的懈怠,从而造成更大的问题。不要容忍任何小的错误,解决它或至少打上TODO标签。

 

石头汤与煮青蛙:这个小节很有趣,它讲述了小的变化如何能渐进式地演变为大的变化。

一方面,在面对一个毫无生气的团体、试图催生积极的变化时,可以去做第一个带来改变的人。这样,就会有人随之作出改变。可能每个改变都非常微小,但可以渐变式地带来大的改变。

另一方面,不管是个人和团体都很容易对于小的改变疏忽大意。这意味着有些时候小的改变会在不经意间催生出巨大的改变。不管是有人恶意为之还是意外累积而成,小的坏习惯、坏改变可能会积累成很大的问题,而程序员又可能最后才看出问题来。

这里有一个有趣的问题。石头汤显示我们可以通过小的积极改变催生大的积极改变,而煮青蛙显示我们可能会被小的消极改变迷惑,而忽略了他们在催生大的消极改变。在个体试图催生变化时如何判断是哪一种,消极与积极的改变又以什么作为判断标准?

我以为,催生改变有些时候是有用的,但仅当团体已经死气沉沉、无法通过常规方式作出改变时。当一个团体活力旺盛时,不应用欺骗式的方式催生改变,而应该对所有改变保持警觉,并保持良好的沟通,保证大家时刻都知道自己在做什么。这同样适用于个人。

 

足够好的软件:完美的软件是不存在的,幸运的是我们只需要制作足够好的软件。判断软件是否“足够好”时要让用户需求加入判断。

 

你的知识资产:cs行业变化迅速,所以不应止步不前。只有对知识投资才能有回报。要定期学习新的东西,并学习多元化的知识、管理风险。本书建议了一个知识投资计划:

每年至少学习一种新语言;每季度阅读一本技术书籍;也要阅读非技术书籍;上课;参加本地用户组织;试验不同的环境;跟上潮流;上网。

学习过程中,遇到问题时,要作为挑战并积极地寻找解答。另外,学习时要养成批判性的思维,不要迷信任何知识(大概也包括这本书提供的知识)。

 

交流:交流非常有用,但要学会高效交流。注意这些问题:想清楚自己要说什么,了解自己的听众,选择时机、选择风格,让文档保持美观并让用户加入文档的编写,也要倾听并回应他人。