论软件工程里解决问题的思维

今天在项目开发中,遇到一个问题,在尝试解决无果后,对解决问题的思维产生一番思考。记录如下。

在我看来,解决一个项目问题的思维能拆分成若干个环节,这些若干个环节彼此相互互斥,解决问题的过程被映射为一环环固化思维的串接。问题得到解决存在一个最小思维量。当认知超过最小思维量时,就能推测、预判问题的变化。

思维量存在且不限于以下两个属性:思维复杂度和环节确定性。思维复杂度表示解决问题的可能性数量或方向多少。环节确定性指的是:互斥并且单一的指向下一个思维环节。互斥和单一指向两者缺一不可。当一个环节在这个思维过程中与其它环节形成互斥,即表示这个思维环节是解决问题的有效组成成分;单一指向的作用是能促成思维导向同一个结果:解决问题。一个方向而不是多个方向,这大大的降低思维复杂度。

另一方面,每个思维环节的确定性大小会影响下一个环节的确定性。如果一个环节不确定是对是错、正确程度未知,就会导致该环节的指向不再单一而是多个。所以,不高的环节确定性会造成较高的思维复杂度,这是不利于工程问题的顺利解决的。

结论:基于上述认知,工程能力提高的过程其实就是增加思维环节确定性和数量的过程。