在 code 时,为了保证程序的健壮性,我们要全面思考各种可能的异常,并针对每种异常设计对应的处理逻辑。例如 catch 异常,参数合法性校验等。
若有一种异常我们没有想到,则程序在一定条件下就会报错,导致服务可用性降低。
所谓工程师思维,就是把各种极端情况,各种异常都想到并处理,这样才能写出更少 bug 的程序这样的想法,也既只有当各种情况都清楚了准备好了,才认为这个事情是对的没问题的。
工程师思维泛化一下,可以表述为:当各个因素都已经确定无风险后,才认为一件事情是 OK 的。
因此可见工程师思维是偏向保守的,当然这是职业要求。在工作中,工程师需要想到各种异常情况,并设计有针对性的解决方案。
创新性的工作,总是会面临一些不确定的情况。比如一项新的制度颁布后,可能在社会运转过程中出现制度漏洞。
在进行创新性工作的时候,如果我们总是盯着可能出现的极端情况,可能出现的风险,那创新的 idea 就永远也没有准备好。
按照工程师思维,这个 idea 并没有解决所有可能的异常风险,因此它可能会失败。
因此我们说工程师思维的希望万事俱备的特点会阻碍创新。
在进行创新性工作时,不再追求万事俱备,不再无穷无尽地追究如何应对各种小概率事件。
未来是不确定的且不可预测的,因此接受一部分不确定性,承担一定的风险,我们才能将创新落地。
例如区块链技术,其初始目的是建立基于 code 的信任,但没想到会引发数字币的疯狂炒作。