初心算法

编程中经常会碰到令人头疼的问题,这里有一个方法论上的解法:
一种是刚正面,但是尽量不要用,因为令人头疼本身就证明了正面刚不动。如果继续刚下去,损失会非常大。
另一种是智取,这也是推荐的做法。承认问题的复杂性,然后尝试规避问题。
但是如何规避呢?答案就是看的更高、更远。

我们遇到的问题本身并不是一定要解决的,我们的最终目标是实现一个效果,这个要牢记在心。
条条大路通罗马,对计算机而言更是如此,绝对有不止一条路径能够实现最终效果,令我们头疼的问题可能是一条路上的大石头,此时应该先初步评估一下解决问题的成本,如果过高,就换一条路。

当你的心里是最终效果而不是头疼的问题时,思路会豁然开朗。
去探索其他的可能性,利用创造性思维,曲线救国。
永远记住,解决问题不是最终目的,达到设定的效果才是最终目的。

将以上思路概括出来,就是“初心算法”。

当遇到难以逾越的问题时,要问自己:我最初的目的是什么?
为何初心算法能解决问题呢?因为当我们专注于解决问题时,视野会越来越狭窄,局限于某一个局部,目标会与最初的产生偏差。
初心算法的用意就在于让自己摆脱思维束缚,看到并不只有一条路通向你的目标。
如果这个问题很难解决,那就规避掉,换一条路,换一个思维,往往有奇效。

而且还应该理解到,初心算法是递归的,也就是说我们在使用初心算法时遇到问题,可以反复使用初心算法,这是因为入口条件都是一样的:一个难以解决的问题。
具体而言,就是不断问自己:我最初的目的是什么?

当然初心算法不是万能的,尤其要注意逃避主义的问题。
初心算法的实质是规避掉难以解决的问题,代之以一个相对容易的问题。反复使用则可能出现不断还原的情况,直到不解决问题。
比如说工作中遇到问题,不断使用初心算法,最后得到结论:我之所以在解决这个难问题,是因为我要挣钱。挣钱不一定非得干这个工作,所以我不干了。换一个工作,问题对我来说也就解决了。
这当然不是初心算法的初衷了。
另外只有在遇到难以解决的问题时,初心算法才能发挥最大价值。这是因为简单问题想一想就可以克服,并不需要转换思路。