写了多年代码,做了好多的工程,不停地完成项目,但如果你一直仅仅停留在重复这个过程,那么就不会得到真正的成长与提高。你得从这些重复做工程的过程中,抽象提炼出真正解决问题的工程思维,用来指导未来的工程实践。
什么是工程思维?我从自己过往经验中提炼出的理解是:一种具备科学理论支撑,并成体系的系统化思维。做了多年的软件开发工程,碰到和解决了数不清的问题,最终这些问题,我发现稍微抽象一下,可以归为以下两类:
上面的描述可能有点抽象,那具体该怎么理解呢?这里我分别举两个例子:线上有个 Bug,找到了有问题代码片段,需要一个优化实现方案来解决,这就是第一类问题,原因和结果非常明确清晰;线上老是出故障,而且反复总出意外故障,对于这个结果,它的原因是什么,这就很难简单归因了,就属于第二类问题。
对于这两类问题,我想讲讲两种不同的思维框架提供的解法。
科学与理论
第一类问题,现象清晰,归因明确,那么它唯一的难处就是为这个问题找到最优的解决方案。求解最优化问题,就需要科学与理论的支持,也即:科学思维。
先讲一个其他行业的故事:造船工程。很早以前,关于应该造多大的船,人们都是靠感觉摸索的。后来(十九世纪中期)有个英国工程师布鲁内尔(Brunel)意识到船应该尽可能造得大些,于是他设计了当时世界上最大的船。这是一艘挑战当时工业极限的船,该设计甚至还引发了当时社会激烈的辩论。