你可能听过这句话:“这个国家的每个人都应该学会编写计算机程序,因为它教会你思考。”这句话来自著名的苹果公司创始人史蒂夫·乔布斯。不过你可能很疑惑,到底是什么像程序员一样思考,以及怎么才做到像程序员一样思考。

 

其实,所谓的“像程序员一样思考”,就是寻找更有效的解决问题的方法,而解决问题是一项技能。那么怎么学会这项技能,往下看,小码哥教育来教你。

 

 

第一点:了解问题

 

确切地知道你究竟遇到了怎么问题。而大多数困难的问题之所以是困难的,因为你不理解它们。那么什么时候你可以知道你理解了这个问题,是当你可以用你自己的话解释它的时候。

 

当你迷失在一个问题上的时候,你应该尝试去用自己的语言解释你所遇到的问题,而当你开始一步一步解释这个问题的时候,你有可能就会看到你之前没有发现的逻辑漏洞。而大多数程序员都知道这种感觉。

 

理查德·费曼就说过:“如果你不能简单地解释某事,你就无法理解它。”

 

第二点:制定计划

 

不要在没有任何计划的情况下就去解决问题,你要想清楚你即将实施的步骤,不然解决不了问题。

 

就像在编程中,这意味着不要立即开始敲代码,要给自己时间来分析问题和处理信息。要想得到一个好的计划,请回答这个问题:给定输入X,返回输出Y所需的步骤是什么?而程序员有一个很好的工具来帮助他们回答这个问题,那就是技术网站上网友的评论。

 

第三点:分解问题

 

这是最重要的一步。不要试图解决一个大问题,因为你会哭的,相反,将一个大问题分解成一个一个子问题,这些子问题就相对更容易解决。然后,逐个解决每个子问题。

 

从最简单的问题开始。最简单的意思是你知道答案(或者更接近这个答案),接下来就是那些不需要通过解决其他子问题才能解决的子问题,然后一点一点将这些问题解决,一旦你解决了每个子问题,连接你所有的“子解决方案”会给你原来问题的解决方案。

 

例如,假设您是一个新的程序员,并被要求编写一个程序来读取十个数字,并计算出哪个数字是第三高的。对于一个全新的程序员来说,这可能是一项艰巨的任务,尽管它只需要基本的编程语法。

 

如果你被难住了,你应该把问题减少到更简单的事情上。而不是第三高的数字,如何找到最高的整体呢?还是太难了?找出三个数字中最大的一个怎么样?还是两个人中更大的?

将问题减少到知道如何解决问题并编写解决方案的程度。然后稍微扩展问题,重写匹配的解决方案,然后继续进行,直到回到原来的问题。

 

第四点:还是很难

 

当然,还有一种情况,连子问题都解决不了,别灰心,你有三个方法可以帮助你。

 

首先,一步步检查自己的解决方案,找出哪里出问题了,程序员称之为调试;其次,换一个角度看问题 退后一步。从另一个角度来看待这个问题,别把什么任何问题都想的很复杂,有可能它很简单;再者,你还可以重新开始,你可能再来一次时会有新发现;最后,上网搜啊,你的问题可能也是别人的问题,而且有可能已经被解决了。

 

当然,别搜最大问题的答案,只需要搜索那些子问题的答案,否则你什么都学不到。

 

第五点:多多练习

 

你不能一下子就成为一个解决问题的高手,如果你想成为这样的人,那就去解决更多的问题,熟能生巧,思路和方法都会被你学会,之后还能举一反三,你就成功了。