如果你要聘用一个软件开发人员,而现在同时有两人通过了审核。他们的技术、工程项目和成就等等工作经历和经验都差不多。怎么选?
这时候他俩中有一个说,有一次她在写代码的时候不小心写了个大bug,直到差不多要发布了才发现,可是这时候已经太迟了。所以最后只能带着这个bug一起发布了。这是他们不得不采取的权宜之计,直到重构。
还有一个没有说任何类似于第一个人的经历。潜意思是“我可没犯过这种错误,我比那个人好,快选我吧”。
我会选择聘用第一个一部分是因为我属于第一类,我不可能否决我自己。但是更多的是因为,我的经验告诉我,我们是不可能抓得住每一个bug的,每个人都会有他的盲点。而且,很多出人意料的问题还有那些巨大的、必须停止的bug,即使我们在开发过程中再怎么认真仔细地测试还是发现不了的,会成为漏网之鱼。
如果你发布的产品中从来没有出现过大bug,在你的内心深处,往往会生出这样的想法:我的过程这么严谨足以避免到任何大bug了。所以你会觉得像那种在发布产品中有大bug的愚蠢情况是绝对不会在自己身上不会出现的。事实上,我只能说,你太幸运了。没有人的过程会牛逼到能抓住任何bug。因此,尽管你认为你做的软件一点也没有大bug,或者你已经把所有的bug都检测出来了(那些小bug除外),但是事实上,你不过是在自欺欺人而已,它们客观存在着。
和我一样,你可能有着一个巨大的盲点
来应聘的第一个开发人员心中明白,即便再怎么细之又细地检测,bug还是会有遗漏的,有的时候甚至要发布了才能发现。而没有发现bug,并不意味着她的代码就是完美无暇的了。鉴于此,她会更深层次地去检测,哪怕是那种看上去无法验证或者没必要测试的代码。她会竭尽全力想好“万一”的对策,时刻准备着。而这一点是第二个开发人员不会考虑到的。并且如果这种大bug真的出现了,她也不会像后者一下子就变得沮丧和畏惧,她会和团队其他成员尽心竭力地去解决问题。
最后拍板前者被录用
后者忍不住抱屈。可是试想一下,一个没有犯过错误的人,能真正领会这种教训吗?
Maybe。虽然谁都不想也不会特意写个bug到要发布的软件中。关于不可预料最糟心的地方就是你无法预料其发生发展。关于犯错这种事,听别人的故事和自己亲身经历的感觉是完全不同的。前者是理论上的,而后者却是真真切切发生在自己身上的,你会为之痛苦,为之绞尽脑汁,然后受益。这是有积极的教育意义的。
还有一种可能得到这方面经验的方式是尝试做些自己力未能逮的事情,用困境来磨练自己。比如说,试着写一个你并不怎么了解的软件片段或者算法,得是那种你不确定自己能不能写出来的。在这种情况下写出来的设计和开发产品,肯定会有bug。通过这种“故意难为自己”的方式来学习,你会认识到,每个人的代码中都有可能出现大bug。
这是一个非常好的经验教训
录用前者第二个原因是,一时的错误并不意味着永远,她也不可能总是在她的代码里写进这种bug。不能说我们知道bug会出现,它就一定会出现,这只是一种可能。但是只要你还想在软件这片海域里继续航行,那么bug这些错误带给你的,绝对是无价之宝。
|