世界上有 10 种程序员。一种是遵守软件工程开发规则的,我们称之为工程师;一种是不遵守软件工程开发规则的,我们称之为码农。
软件工程,是为了让程序员能够更好地写代码、写出更好地代码。这两个好,都有多层次的含义,但本质上,都是在长期的跨度内,减少程序员的工作量并提高代码质量。
然而,世事总是不随人愿:长期跨度内的好,往往和短期利益会存在冲突。这也就是「短视」或者「目光短浅」的由来。在软件工程中,「写注释」、「保持良好的命名习惯」、「单元测试」、「设计思想」、「总结分析」、「时间记录」,这些是无数前辈总结出来的强而有效的工具。但是,从短期效果来看,使用这些工具(或者进行这些练习),无疑是耗费时间的——只要写出代码来就好了,谁管那么多事?
对此,我的解释和邹欣老师书中的解释一致:软件开发,是一个长期的、不断变化迭代的过程,而不是一个短期的、一锤子买卖的活动。既然如此,已经明确了软件开发不是一个短期活动,那么为了短期利益,放弃长远打算,显然是不明智的。
在作业中,软件工程的教师基本都会强调:要好好写注释,变量和函数命名要有意义,单元测试要随代码一起迭代修改,动手之前要先明确设计思想,动手之后要做总结分析、要写时间记录。然而,坚持做到这些的学生往往寥寥,在做到的学生里也有不少敷衍了事。
那么,「明智的你」应该已经知道如何将这对引号(←)去掉了,对吗?
另附邹欣老师对于这个问题的看法: