职场最重要的技能是什么?是看得见的解决问题的能力。
但是我们如何培养解决问题的能力?
做了多年程序猿的我总结了程序员的思考方式,希望能给你一些启示。
你可能会在想这究竟是什么意思,为什么学习程序员的思考方式?需要怎么才能做到呢?
古人早就知道每个人都有问题,但是很多时候我们并不是用心解决问题的。
除非你有一套解决问题的系统,否则的话你“解决”问题的方式就是以下的情况(我开始编码时就是这样):
1、尝试一种解决方案 2、如果这种解决方案无效,再试另一种。
如果还是没有用,重复第二步直到你走运。
有时候你会有很不错的运气,解决了问题。但这是最差的解决问题的方式!而且非常浪费时间。
你要形成一种属于自己的框架
怎么形成自己的框架呢?最简单的方式就是学习别人的框架,借此来完善自己的框架。
1、理解问题
准确了解问题是什么。只有了解问题是什么才能知道怎么解决?这就是第一步。
怎么才知道你是否理解了问题了呢?其实很简单,就是你把他说出来的时候。
你还记得问题卡住的时候,你开始解释问题,然后马上看到了此前看不到的逻辑漏洞的时候吗?
大多数程序员都知道这种感觉。
遇到问题你应该把问题写下来,画张图,或者把问题告诉其他人。
2、计划
不要在制订计划之前就匆忙投入到问题解决当中!
在编程中,你要学会先制定好计划,清楚每一步,给你的大脑一点思考的时间。
3、分解
这是最重要的步骤。
别想着解决一个大问题,你会哭的。
相反,要把问题分解成小问题,这些小问题解决起来要容易多了。
然后一个个地解决这些小问题,从最简单的开始。
一旦你解决了每一个小问题,再将他们汇总起来。
把所有解决后的问题拼接起来,就会得出原本问题的答案。
比方说,假设你是一名新程序员,有人要你写一个程序读10个数字并找出第3大的那个。对于初入坑的人来说,这可能会是一个难解决的问题,即便这只需要基本的变成语法。
不过,你可能会想“这的确很酷,但如果我连小问题也没法解决又该怎么办呢?”这在正常不过了。
你无需担忧,所有人都会有这样的过程!
不同的是最好的程序员会对bug更加好奇而不是感到气愤。
实际上,在遭受打击时这里有三件事情是需要你尝试一下的:
调试:仔细检查你的方案一步步找出什么地方出问题了。程序员称之为调试(实际上,所有的调试工具都要做这个)。
再评估:后退一步。换个角度审视问题。有没有什么东西可以抽象为更通用的方法?
实践:别指望一周之后你就会变得很棒。如果你想要成为一名好的问题解决者,那就请先解决各种问题!
练习,重复地练习。这样下去你意识到“这个问题很容易就能用[在此处插入概念]加以解决。”只是个时间问题。
这些你可以用以练习 数学难题、数独、围棋、视频游戏、cryptokitties等等等等……
这是否意味着你就应该去玩视频游戏呢?完全不是。
视频游戏是干什么的呢?是的,解决问题!
最后,我希望你不是一帆风顺的,希望当你以为你已经成功解决了一个问题的时候,新的问题又出现了。但人生之所以有成长正是因为如此……