在父亲去世前,我曾与他深入探讨过两周编程相关的话题。
当时我 22 岁,是一名攻读美术设计的大学四年级学生;父亲 62 岁,一位经验丰富的长者。早在 20 世纪 60 年代,他就在田纳西理工大学从事编程工作,在打孔纸带上进行 FORTRAN 开发。他的知识储备十分丰富。
这个学期我才刚刚开始接触编程,整个思维都被它深深吸引。编程非常神奇且强大,在许多方面比图像设计更具创造性。
假期回家时,父亲向我分享了无我编程的十条诫律。他将其打印出来,逐条与我讨论。这是他意外去世前我们仅有的关于编程的对话。这也正是让我对此念念不忘的原因。
这十条诫律源自 1971 年发表的文章,内容如下:
- **理解和接受自己会犯错误。**关键是要尽早发现,在错误进入最终产品前修正它们。幸运的是,除了少数开发火箭导航系统的人员外,软件行业中的错误通常不会导致灾难性事故。我们可以也应该从错误中吸取教训,微笑面对并继续前进。
- **你不是你的代码。**记住代码审查的全部目的是去发现问题,相信问题会被我们发现。当出现疏漏时不要自责。
- **不管你对'空手道'有多了解,一定会有人知道的更多。**如果你去问,这样的人可以告诉你一些新的招数。从别人那里寻找和接受新的知识,特别是那些你认为不需要的知识。
- **不要在没有讨论的情况下重写代码。**在'调整代码'和'重写代码'之间有一条很细致的界限,你应该在代码审查的制度下做风格上的调整,不要独断专行。
- **对那些不如你的人要尊敬,礼遇,有耐心。**经常跟开发人员打交道的非技术人士通常持有这样的观点:程序员凭借一技之长狂放不羁。不要让你的发怒和缺乏耐性让他们心中的这种形象加深。
- **这世界上唯一不变的就是变化。**开放思考,面带微笑地接受它。把需求上、平台或工具里的每个改变都视作一种新的挑战,而不是把它们当作大麻烦来抵制。
- **真正的权威来自知识,而不是职位。**知识造就权威,权威带来尊敬——所以,如果你想在一个无私的环境中获得尊敬,去培养自己的知识吧。
- **为信仰奋斗,但我文雅地接受失败。**要理解,有时候你的想法会被拒绝。即使你是对的,你也不要报复或说"I told you so."千万不要让你心爱的被抛弃的想法变成殉道者或抱怨素材。
- **不要成为'角落里的程序员。'**不要成为隐藏在黑暗办公室里、只因为口渴才出现的人。藏在角落的程序员短视、与世隔绝、不受控制。这样的人在公开的合作工作环境中无法发声。参与到交流中,成为办公室团体中的一员。
- **批评代码而不是人——对编码人友善,但不要对代码友善。**尽可能的让你的批评具有积极性,以改进代码为目标。批评要联系本地标准、编程规格文档和提高后的性能等。
这十条诫律至今伴随着我。它让我成为了一名更好的程序员。有时我在想,如果父亲还在我身边,他还会给我哪些建议?虽然我不知道,但我相信,他会为我一直记住这些而高兴。

