第79期 | 像程序员一样思考:解决问题四步法
你好,这里是卖桃者说。
之前在 Medium 网站上看到一篇文章,标题是:How to think like a programmer — lessons in problem solving,意思就是如何像程序员那样解决问题。这篇文章的作者是 Richard Reis,他在文章中提出了一个解决问题的思维框架,而这个框架,是优秀工程师常用的解决问题法则。
经常有人问我为什么最终选择给 IT 从业者做产品,如果你对互联网或苹果产品感兴趣的话,可能听过乔布斯说过的一句话:每个人都应该学习编程,因为它会教你如何思考。
这句话是乔老师在二十多年前说的,目前正一步步变成现实。为什么要像优秀的程序员那样思考呢?为什么编程反而会教会我们如何思考呢,这篇文章要说明的就是这个问题,并教给了我们一套解决问题的思维框架。
今天就和大家聊聊这套思维框架。
无论是工作还是生活,其过程就是遇到问题,分析问题,解决问题,然后再遇到下一个问题。这是一个递归的过程,永无休止。优秀的人就是让正确的事情持续发生,解决了一个问题,然后又解决了一个问题。
如何解决问题呢?很多人的步骤是这样的:
- 尝试一种解决方案
- 失败了,再尝试另一种
- 又失败了,然后再重复 Step 2,直到幸运女神的降临。
这种方式是最低效的,也是最浪费时间的。最好的方式是建立一个思维框架,然后在这个框架上不断练习自己解决问题的能力。这种思维框架就像是编程语言中的分析、调试和系统设计。而基于计算思维分解大型复杂问题的能力恰恰是计算机擅长的,也是程序员们的攻坚利器。
好了,现在我们先来说说这套思维框架。
普通程序员只会学习技术和编程语言,优秀的程序员则学习如何解决实际问题。当我们碰到一个新问题的时候,如何解决呢?可以尝试用一下四步法则:
理解
碰到一个问题先要真正去理解它,而不是走马观花。很多人语文理解水平不达标,听题看题都不能抓住重点,导致走弯路,解错题,都是常有的事。如何证明你理解了这个问题呢?用自己的话把问题讲出来给别人听,给自己听也行。如果你能讲出来,说明你自己理解了。
编程也是一样,为什么程序员会写下自己的问题,画各种时序图和交互流程,或者与其他的工程师交流讨论,就是确保自己对问题的理解没有偏差。
计划
没有计划,最好不要轻举妄动。如果你不能写清楚接下来要干什么,那没什么人能帮到你。很多人说现在计划赶不上变化,即便如此,计划也是必要的。
我们常说,没什么作战计划在与敌人遭遇之后依然绝对有效,但做计划的过程依然是必要的。缺乏计划会让产品失掉节奏感,员工失去方向,并且很难专注。计划制定的过程,本身是一个制定战略,统一思想,上下齐心的过程。也就是说,大家要登船渡海,扬帆起航了,得弄个罗盘,定好灯塔,然后再出发,这样在行进的过程中,无论怎么折腾,方向总归不会有大的偏差。
做出一个好的计划,并且回答这个问题:如果输入是 X,那我们采用什么步骤可以得到结果 Y?
分解
计算机中的大量算法都用到了分治的方法。分治算法不仅可以帮助我们解决实际问题,还可以提高我们思维的量级。
分治算法的原理就是把复杂的大问题分解成很多的小问题,然后分别求解,再把小问题的解,合并成原始问题的答案。比如归并排序法,比如 MapReduce 算法等,比如现在流行的微服务架构等。遇到难以解决的问题,不妨把大问题分解为小问题,这样即便于分配给别人,也可以实施并行计算或并行实施,还可以量化目标完成的进度。
OKR 其实就是这样一种分解任务的方式,不过平时你可以采用更简单的任务分解,粒度到你能掌握的程度即可,比如任务、子任务,然后进行结果归并等等。
卡壳
即使我们理解了问题,做了计划,对任务进行了分解,也会遇到卡壳的时候。比如产品专栏作者二爷说,我就是解决不了这个子问题咋办吧。你能扣我专栏费用吗?不能。
首先让我们深呼吸,北京最清新空气,然后告诉自己,卡住很正常。别担心,别人也卡,都不是神。好程序员和差的最大区别是,他们对解决问题更感兴趣,而不是恼火。我们该怎么做呢?
1.调试,一步步的跟踪,看看到底是哪里出了问题。程序员叫这个过程为 debug,或捉虫。调试的过程就是找到程序真正做了什么,而不是你认为程序做了什么。程序调试是一门艺术,解决问题也是。
2.重新评估,退一步海阔天空,往回退一退,看看问题的另一面,是不是有其他的解决方案,最初的方向是不是就错了。当我们陷入细节的时候,可能会忘记出发时的方向,这时候就需要我们重新回顾自己解决问题的过程。另外,重新评估还有一种方式,就是推到重来,删掉所有的东西,以全新的视角去看待问题,这个风险很大,但有时候可以绝处逢生。
最后是练习
不要以为有了这四步法则就可以解决所有的问题。这只是个过程,在过程中你需要不断的练习练习练习。如果你想成为一个解决问题的专家,那么你就需要解决足够多的问题。
基于这四个法则不断练习,才是解决问题的终极之道。很多成功人士就是这么来的,他们之所以成功,是因为他们做了很多成功的事情。
你平时是怎么解决问题的?可以在留言区说说。
好,今天的话题就先到这儿。卖桃者说,明天见。
(编辑:成敏)