程序员,错错更优秀!

jopen 10年前

英文原文: MAKE BETTER MISTAKES

        如果你要聘用一个软件开发人员,而现在同时有两人通过了审核。他们的技术、工程项目和成就等等工作经历和经验都差不多。怎么选?

程序员,错错更优秀!

        这时候他俩中有一个说,有一次她在写代码的时候不小心写了个大 bug,直到差不多要发布了才发现,可是这时候已经太迟了。所以最后只能带着这个 bug 一起发布了。这是他们不得不采取的权宜之计,直到重构。

        还有一个没有说任何类似于第一个人的经历。潜意思是“我可没犯过这种错误,我比那个人好,快选我吧”。

        我会选择聘用第一个。

        一部分是因为我属于第一类,我不可能否决我自己。:P 但是更多的是因为,我的经验告诉我,我们是不可能抓得住每一个 bug 的,每个人都会有他的盲点。而且,很多出人意料的问题还有那些巨大的、必须停止的 bug,即使我们在开发过程中再怎么认真仔细地测试还是发现不了的,会成为漏网之鱼。

        如果你发布的产品中从来没有出现过大 bug,在你的内心深处,往往会生出这样的想法:我的过程这么严谨足以避免到任何大 bug 了。所以你会觉得像那种在发布产品中有大 bug 的愚蠢情况是绝对不会在自己身上不会出现的。事实上,我只能说,你太幸运了。没有人的过程会牛逼到能抓住任何 bug。因此,尽管你认为你做的软件一点也没有大 bug,或者你已经把所有的 bug 都检测出来了(那些小 bug 除外),但是事实上,你不过是在自欺欺人而已,它们客观存在着。

        和我一样,你可能有着一个巨大的盲点。

        来应聘的第一个开发人员心中明白,即便再怎么细之又细地检测,bug 还是会有遗漏的,有的时候甚至要发布了才能发现。而没有发现 bug,并不意味着她的代码就是完美无暇的了。鉴于此,她会更深层次地去检测,哪怕是那种看上去无法验证或者没必要测试的代码。她会竭尽全力想好“万一” 的对策,时刻准备着。而这一点是第二个开发人员不会考虑到的。并且如果这种大 bug 真的出现了,她也不会像后者一下子就变得沮丧和畏惧,她会和团队其他成员尽心竭力地去解决问题。

        最后拍板前者被录用。

        后者忍不住抱屈。可是试想一下,一个没有犯过错误的人,能真正领会这种教训吗?

        Maybe。虽然谁都不想也不会特意写个 bug 到要发布的软件中。关于不可预料最糟心的地方就是你无法预料其发生发展。关于犯错这种事,听别人的故事和自己亲身经历的感觉是完全不同的。前者是理论上 的,而后者却是真真切切发生在自己身上的,你会为之痛苦,为之绞尽脑汁,然后受益。这是有积极的教育意义的。

        还有一种可能得到这方面经验的方式是尝试做些自己力未能逮的事情,用困境来磨练自己。比如说,试着写一个你并不怎么了解的软件片段或者算法,得 是那种你不确定自己能不能写出来的。在这种情况下写出来的设计和开发产品,肯定会有 bug。通过这种“故意难为自己”的方式来学习,你会认识到,每个人的代码中都有可能出现大 bug。

        这是一个非常好的经验教训。

        录用前者第二个原因是,一时的错误并不意味着永远,她也不可能总是在她的代码里写进这种 bug。不能说我们知道 bug 会出现,它就一定会出现,这只是一种可能。但是只要你还想在软件这片海域里继续航行,那么 bug 这些错误带给你的,绝对是无价之宝。

        译文链接:http://news.html5tricks.com/make-better-mistake.html

        翻译作者:IT 新闻 – 蒋丽丽