前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >同样是腰间盘,为何程序员如此突出?

同样是腰间盘,为何程序员如此突出?

作者头像
HyperAI超神经
发布2019-12-01 00:07:56
4720
发布2019-12-01 00:07:56
举报
文章被收录于专栏:HyperAI超神经HyperAI超神经

Steve Jobs 有一句名言:「我们国家的每个人都应该会编程,它能教会你如何思考」。

这里并非让大家都去从事程序员的工作,而是像程序员一样去思考问题,解决问题。在美国、意大利等西方国家,编程已经成为中小学甚至是幼儿园课程的一部分。2014 年,奥巴马曾亲自上阵,编写了一段代码,鼓励民众学习编程,培养编程思维。

很多人,包括一些初级程序员,在面对复杂问题时。习惯从历史经验出发,随机尝试各种解决方案,成功与否就看经验够不够了。他们很少从框架性思维出发,寻求解决问题的方法。

这会导致解决问题的过程耗时耗力,最终效果还不见得好。

HackerRank 在 2018 年开发人员技能报告中就提到,在不强调技术重要性的前提下,拥有框架思维或分解大型复杂问题的能力,比熟练掌握编程语言更重要。

很多有经验或者擅长解决问题的程序员,优势就在于这种框架思维,也可以理解为程序员思维或者编程思维,这种思维除了编程时适用,也可以帮助所有人解决中的问题。

什么是程序员思维?

Tim Ferriss 的著作《 The 4-Hour Chef 》(译作:每周四小时下厨房),或许能给你一些启示,不过这本书目前似乎还没有中文翻译版。这位作者是著名的效率学家,TED 上也有非常经典的演讲,他还写了《每周健身四小时》和《每周工作四小时》,指导人们高效生活。

另外 V·Anton Spraul 的《像程序员一样思考》(英文书名:Think Like a Programmer),已有中文译本,阅读更方便噢。

下面讲解一下编程思维,可以从以下几个方面来理解:

1.理解问题

一个问题之所以困难,是因为你不够了解它。著名物理学家 Richard Feynman 曾说过,「如果你不能用简单的语言来解释某件事,就证明你并不了解这件事」。

所以在解决一个问题时,要先理解这个问题,直到能够用简单的语言描述出来。

很多程序员都有过这样的经历,在向别人解释一个问题的过程中,总能发现一些此前没有留意到的逻辑漏洞,而这些发现很可能是帮助他们解决问题的关键。

2.制定计划

也就是制定解决问题的步骤,不要在没有想清问题解决步骤的前提下,盲目执行。

对程序员来讲,就意味着在编程时,不要直接开始写代码,而是要先理清思路,分析问题,处理信息,制定一个输入 X,输出 Y 的所需步骤。

3.分解问题

在面对一个不能马上解决或者比较复杂的问题时,最好的办法是把它解构成好几个子问题,然后从最简单的问题着手解决。一旦你解决了这些子问题,只要将这些子问题连接起来,大问题也就顺利解决了。

举个例子,一名初级程序员要编写一个程序,要求从 10 个数字中找出第三大的数字。虽然该程序只需要掌握一些最基本的编程语言,但对于一个刚接触编程的人来讲仍然很困难。

这时你可以试着把这个问题分解一下,而不是直接寻找第三大的数字。

比如先确定 10 个数字中最大的那个,再以三个数字一组找出其中最大的,或者在两个数中找出最大的。然后再把这些组内最大的数字重新排列组合,直到确定第三大的数字。

将一个大问题进行分解,分解的最小单位一定是你能直接得出答案的,然后把这些子问题连接起来,稍微扩展一下就能得到最终答案。

4.面对困难

将一个大问题分解成数个子问题后,如果我们连子问题都无法解决,该怎么办呢?这时候不要因畏难情绪而退缩,反而要继续寻找解决问题的办法。

调试:也就是重新检查解决方案的每一步,看看是不是解决方案出现了 Bug,如果是,找到并解决它,这个过程用程序员的话来讲就是「调试」。

重新评估:如果没有找到 Bug 那就换个角度重新审视这个问题,看有没有更一般的方法来解决。注意,这里的重新评估是指从一个全新的角度确定解决方案。

常年在编码挑战网站 Coderbyte 上排名前三的 C. Jordan Ball 说过:「有时候我们会迷失在问题的细节中,而忽略解决该问题的一般性方法。比如在计算 1+2+3+……+n 时,利用公式 n(n+1)/2 可以很快得到答案,避免了做一些冗长,甚至会出错的加法。」

研究历史案例:很多问题其实前人已经给出了答案和解决方案,研究他们的案例可以帮你解决很多类似或者新的问题,还能在研究过程中提炼思考问题的方式,这对解决其他问题很有益处。

如何培养程序员思维?

如果你想成为一个优秀的问题解决者,最好的办法就是在日常生活中,培养自己解决问题的思维和能力。很多事情都是相通的,解决问题 A 的能力,同样可以用到问题 B 中。

也就是说,你可以在很多不用付出太大成本,比如游戏或者其他你感兴趣的事情上,训练自己解决问题的能力,培养解决问题的思维。

PayPal 创始人 Peter Thiel 就经常通过下棋来培养这种思维,Elon Musk 则是通过电子游戏。此外,Linkedin 联合创始人 Reid Garrett Hoffman、Facebook 创始人 Mark Zuckerberg 等知名企业家也曾表示在玩电子游戏的过程中,找到了解决实际问题的办法。

举这些例子不是说玩游戏就能成功,只是想告诉大家,培养解决问题的思维并不难,通过生活中的一些微观问题就能做到。

另外,如果你是程序员,或者对编程感兴趣,可以在 Coderbyte 上尝试一下编程挑战,对提升编程思维很有帮助。

面对问题,解析问题,然后逐个击破,就是「编程思维」

虽然不敢说所有的程序员都会这样去思考问题,但这种方法确实很有效。而且,你经历的问题越多,解决问题的能力就越强。

这样看来,资深程序员的工资之所以比初级程序员高,原因可能不在编程技巧或工具上,而是思维上的不同,很多公司招人时都强调工作经验,多少也有这方面的因素。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HyperAI超神经 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档