其次,让一个人修复另一个人的BUG,是效率非常低下的作法。每个人都有自己写代码的风格和技巧,代码里面包含了一个人的思维方式。人很难不经解释理解别人的思想,所以不管这两人的编程技术高下,都会比较难理解。不能理解别人的代码,不能说明这人编程技术的任何方面。所以让一个人修补另一个人的BUG,无论这人技术多么高明,都会导致效率低下。有时候技术越是高的人,修补别人的BUG效率越是低,因为这人根本就写不出来如此糟糕的代码,所以他无法理解,觉得还不如推翻重写一遍。
当我在大学里做程序设计课程助教的时候,我发现如果学生的代码出了问题,你基本是没法简单的帮他们修复的。我的水平显然比学生的高出许多,然而我却经常根本看不懂,也不想看他们的代码,更不要说修复里面的BUG。就像上面提到的,有些人自己根本不知道自己在写什么,做出一堆垃圾来。看这样的代码跟吃屎的感觉差不多。对于这样的代码,你只能跟他们说这是不正确的。至于为什么不正确,你只能让他们自己去改,或者建议他们推翻重写。也许你能指出大致的方向和思路,然而深入到具体的细节却是不可能的,而且不应该是你的职责。这就是我的教授告诉我的做法:如果代码不能运行,直接打一个叉,不用解释,不用推敲,等他们自己把程序改好,或者实在没办法,来office hours找你,向你解释他们的思想。
如果你明白我在说什么,从今天起就对自己的代码负起责任来,不要再让其它人修补自己的BUG,不要再修补其他人的BUG。如果有人离开公司,必须要有人修补他遗留下来的BUG,那么说话应该特别特别的小心。你必须指出需要他帮忙的特殊原因,强调这件事本来不是他的错,本来是不应该他来做的,但是有人走了,没有办法,并且诚恳的为此类事情的发生表示歉意。只有这样,程序员才会心甘情愿的在这种特殊关头,修补另外一个人的BUG。
不要嚷着要别人写测试在很多程序员的脑子里,所谓的“流程”和“测试”,比真正解决问题的代码还重要。他们跟你说起这些,那真的叫正儿八经,义正言辞啊!所以有时候你很迷惑,这些人除了遵守这些按部就班的规矩,还知道些什么。大概没有能力的人都喜欢追究各种规矩吧,这样可以显得自己“没有功劳有苦劳”。这些人自己写的代码很平庸,不知道如何简单有效地解决困难的问题,却喜欢在别人提交代码让他review的时候叫喊:“测试很重要!覆盖很重要!你要再加一些测试才能通过我的review!”
本来code review是让他们帮忙发现可能存在的问题,有些人却仿佛把它作为了评判(judge)其他人能力,经验,甚至智商的机会。他们根本不明白别人代码的实质价值,就知道以一些表面现象来判断。我在Google实习,最后提交了质量和难度都非常高的代码,然而一些完全没能力写出这样代码的人,不但没表示出最基本的肯定,反而发出沉闷的咆哮:“快——写——测——试!” 你觉得我会高兴吗?
当我在大学里做程序设计课程助教的时候,我发现如果学生的代码出了问题,你基本是没法简单的帮他们修复的。我的水平显然比学生的高出许多,然而我却经常根本看不懂,也不想看他们的代码,更不要说修复里面的BUG。就像上面提到的,有些人自己根本不知道自己在写什么,做出一堆垃圾来。看这样的代码跟吃屎的感觉差不多。对于这样的代码,你只能跟他们说这是不正确的。至于为什么不正确,你只能让他们自己去改,或者建议他们推翻重写。也许你能指出大致的方向和思路,然而深入到具体的细节却是不可能的,而且不应该是你的职责。这就是我的教授告诉我的做法:如果代码不能运行,直接打一个叉,不用解释,不用推敲,等他们自己把程序改好,或者实在没办法,来office hours找你,向你解释他们的思想。
如果你明白我在说什么,从今天起就对自己的代码负起责任来,不要再让其它人修补自己的BUG,不要再修补其他人的BUG。如果有人离开公司,必须要有人修补他遗留下来的BUG,那么说话应该特别特别的小心。你必须指出需要他帮忙的特殊原因,强调这件事本来不是他的错,本来是不应该他来做的,但是有人走了,没有办法,并且诚恳的为此类事情的发生表示歉意。只有这样,程序员才会心甘情愿的在这种特殊关头,修补另外一个人的BUG。
不要嚷着要别人写测试在很多程序员的脑子里,所谓的“流程”和“测试”,比真正解决问题的代码还重要。他们跟你说起这些,那真的叫正儿八经,义正言辞啊!所以有时候你很迷惑,这些人除了遵守这些按部就班的规矩,还知道些什么。大概没有能力的人都喜欢追究各种规矩吧,这样可以显得自己“没有功劳有苦劳”。这些人自己写的代码很平庸,不知道如何简单有效地解决困难的问题,却喜欢在别人提交代码让他review的时候叫喊:“测试很重要!覆盖很重要!你要再加一些测试才能通过我的review!”
本来code review是让他们帮忙发现可能存在的问题,有些人却仿佛把它作为了评判(judge)其他人能力,经验,甚至智商的机会。他们根本不明白别人代码的实质价值,就知道以一些表面现象来判断。我在Google实习,最后提交了质量和难度都非常高的代码,然而一些完全没能力写出这样代码的人,不但没表示出最基本的肯定,反而发出沉闷的咆哮:“快——写——测——试!” 你觉得我会高兴吗?