大家可以回忆一下,生活中遇到难题时,我们是不是经常采用这样的解决步骤:
1.尝试一种解决方案;
2.失败了,尝试另一种;
3.如果再次失败,重复第二步,直到侥幸成功。
这套方法看似没毛病,但却被美国人理查德·瑞斯(Richard Reis)定义为解决问题最糟糕的方式。因为这套方法不但浪费时间,而且能不能达到目的还得看运气。
理查德曾在Medium上发布过一篇文章——《如何像程序员一样思考——解决问题的方法论》,他在文中分析了优秀程序员在编程时的思维框架,他认为普通人如果建立了这样一个思维框架,并在这框架下反复练习,就能成为一个解决问题的高手。
为此,理查德提出,可以用以下5个步骤,帮助人们建立高效解决问题的思维框架。
第一步:理解
遇到问题时,先要弄明白问题本身。
如何确定自己是否真正理解一个问题?最有效的方法是,尝试用自己的语言说出它,看有没有逻辑漏洞。当你能讲清楚一个问题时,说明你理解了它。
优秀的程序员编程时,总会写下自己遇到的问题,勾画出序列图,或同其它程序员一起讨论。这个过程,就是在确定自己对问题的理解没有偏差。
第二步:计划
没有明确的计划时,不要轻易着手解决问题。
制定计划,就是制定解决问题的战略步骤,当计划不清晰时,暂停一下,给你的大脑一些分析问题和处理信息的时间,切记不要一条路走到天黑。
理查德建议,尝试像程序员做思维导图那样,做出一个好的计划,然后思考下面这个问题:如果你输入X,采用哪些步骤可以得到结果Y?这样可以训练你的思维计划性。
第三步:分解
这是思维框架中最重要的一步。
不要尝试一次解决一个复杂问题,而应把复杂问题分解成若干简单问题。从最简单的开始,一个一个逐级解决。一旦你解决了所有的子问题,把它们串联起来,就意味着你解决了之前那个复杂的问题。
这也是优秀的程序员在编程中最常用到的技能,对于他们来说,分解问题的能力,要比编程语言的熟练度、系统设计等技术更重要。
第四步:应对卡壳
当你理解了问题,做出了计划,分解了复杂任务后,依然卡壳怎么办?
首先,深吸一口气;然后告诉自己,这很正常。
优秀程序员以及解决问题的高手,与普通人之间的差别就在于,他们的注意力更多在如何解决棘手问题上,而不是为此恼火或害怕。
卡壳时,可以试试这几种方法:
1、调试错误,直到找出究竟哪里出错了。这一方法在编程的世界里叫做“dubug”,“debug的艺术关键在于你究竟让软件干了些啥,而不是你以为你让软件干了些啥。”
2、重新评估问题:切换到宏观视角,从另外的角度审视问题,别让自己迷失在细节里,甚至可以删除所有已做的事,重新开始,有时这是非常行之有效的。
3、利用百度等搜索引擎找到相似问题的解决者,向他们学习。事实上,即使问题已经解决,你也应该经常这么做,因为这样你会收获很多。
第五步:练习。
罗马不是一天建成的,你也不可能一周就做得很棒。
以上四个步骤,或许已能让你建立一套解决问题的思维框架,但距离成为一个解决问题的高手,还差一步,那就是:练习,练习,再练习。在问题中练习,训练你的思维系统。
结语
对于成年人而言,我们常常羡慕拥有这样思维框架的人,但成年以后再去改往往是比较艰难的。
但在小码世界学编程的孩子,借助体系化的学习,从小练习这样的思维方式,解决问题的能力就能领先同龄人很多。这也是全世界重视教育的国家都开始大力推行编程教育的重要原因。
学少儿编程,就来小码世界(*^_^*)