小Z昨天听老仙直播星际,涉及到的一个话题十分有意思,说的是100分与99分的区别。得到99分说明只能得到99分,能力有限;得到100分只是说明游戏规则封顶100分,限制了获得满分选手的能力,该选手可能具有更大、甚至深不见底的潜力和能力。
小Z联想到在那个60分万岁,多一分浪费的学生时代,在那个只求及格,优秀已经骄傲,满分则为大神的青春岁月。对比作为学渣的小Z与满分大神,剩下的只有仰望。是什么让小Z潜意识中认为99分也是一个了不起的成就,和100分只有一步之遥呢?小Z意识到99分到100分直接的一分差距,是数量级的差距。如同我们做一个系统的安全模型,任何一个设计、开发、运维中的漏洞都会造成系统在安全性的扣分,而无死角、无漏洞又只能说明我们不知道我们不知道,没有漏洞只能说明我们没有看到漏洞,潜在攻击者没有看到漏洞而已。这1分的差距,即是天壤之别。
不得不说我们在工程中、生活中,其实对自己的要求是很低的。不采用100分的定量期望,我们更多采用定性期望,诸如好与坏、优与良等来设定我们的目标。然而,不得不问自己,好与坏的区别是啥?优与良的界限又在哪里?我们其实在心里抱有侥幸,暗示自己,这是小概率事件,没有关系的,不太可能发生。然而觉得不太可能发生,就真的不发生了么?回顾一下自己的经历,多少事是抱有侥幸,现实在之后的进程中给了我们当头一棒的呢?别的不说,小Z在近期的系统研发审核中,就不断的遇到前期侥幸、轻视甚至无所谓的诸如需求调研、设计、开发、测试等各个环节上的疏漏,导致系统功能运行存在这样那样的缺陷。
虽然当今软件研发崇尚敏捷思维、快速迭代,但小Z看到了太多对其的误解与乱用,只是追求概念,无法提升系统质量,最后终将导致项目失败。我们应该具有严谨的工程思维与责任心,尽可能多的发现各种各样的不完善、缺陷并且付诸努力去修改。
我们要注意到,我们并不是走在完美主义的路上,我们只是走在了你自以为99分是很高的标准,而其实在现实的眼里,你的99分标准其实只有59分,及格分都没达到。我们快速迭代的前提,是要达到普世意义上的60分以上,积极向该标准的90分迈进,随后权衡成本与收益,向100分迈进。只有这样,我们才算是真正的尽力,而不是躺在所谓快速迭代的概念上开发缺陷频出、极不健壮的系统。
最后问一句,你对于软件工程上的100分与99分的区别,是怎么理解的呢?欢迎留言。