研究复杂问题的一般方法

前言

有时候项目中突然出现一个棘手问题,项目又这么大,似乎不好解决,怎么定位问题呢?

我的方法步骤

要做事的事
  • 对问题提出尽可能多的猜想,用文档写出来,文档里分记录、现象、问题、猜想、结论各个要素。
  • 根据猜想写一些细小demo。
  • 通过这些细小的demo得出明确的小结论。
  • 从这些结论来分析大的环境问题,验证过得出的结论是靠谱的,把相当然的当做结论是危险的,尤其人类思想里的"我做的大概不会出错"这种想当然的思想在很多场景会引发问题。
  • 如果压力太大,说明你定的目标太高,如果目标确实高,要么去请教别人,如果自行研究,就只能自己适度调低目标。不要想着一步登天,我们最重要是发现有价值的线索,有时候如果踏实推动了一点,复杂问题可能就会豁然开朗,柳暗花明。相反,如果压力过大,目标过大,目标不可行,只是浪费时间,让人越来越慌张。
  • 研究基础信息,基础有时候能让你对提出问题和分析问题都有很好的思路。
  • 将大问题分解为小问题后,要善于借助搜索引擎来搜寻问题,有句话说“搜索引擎是最好的老师”。
  • 好好休息,最难的问题要在你精力充沛的时候来分析,精力充沛(比如对我来说,就是休息好后的早晨,最差的是晚上)意味着你的创造思维越强,越可能解决复杂问题,我多次遇到一些中等和初级问题,晚上一小时都没解决,但是早上二十分钟就解决了。
不要做的事
  • 在一个大环境里,不停做单一变量测试,没有排除,这样做很多其实做无用功。
  • 如果你不是特别聪明,就要用文档形式来做排除,因为复杂的环境里,平均智商(我也是平均智商)的工程师不会考虑非常周全。
  • 不要心慌,要有古代大将那种临危不乱的素质,这种素质能稳定你的情绪也能影响别人,但其实说容易,做起来很难,容易恐惧是人的本性,但可以慢慢练习改进。可以听听歌(抒情、轻音乐),让自己冷静,让自己尽可能集中在想更多思路上,而不是胡乱慌张。

我的一个分析模板

调试方法

  • 1
  • 2
  • 3

现象

  • 1
  • 2
  • 3

提问

  • 1
  • 2
  • 3

原因

  • 1
  • 2
  • 3

怎么解决

  • 1
  • 2

难点

  • 1
  • 2

总结

有人说工程师就是侦探,这说的是靠谱的,有时候问题隐藏在成千上万甚至上百万的代码里,怎么找到呢,是需要分析方法的。这总结为一句话就是:
从整体中分离出个体,有效排除,减少变量,通过个体总结中分析总体,最终锁定问题。
想到Chairman mao的军事思想: 将整体分割为个体,集中优势兵力,各个击破,消灭个体,进而整体上消灭敌人。

最后

擅于合作,请教别人,争取1+1> 2,这是非常重要的方法途径。合作分享能突破你个人的极限。这是门大学问。

你可能感兴趣的:(研究复杂问题的一般方法)