想要成为顶级程序员必须具备的思维,学会了少走三年弯路

《THe Effective Engineer》的作者Edmond Lau采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至少有以下5个共同的思维模式。看看你是否具备?

勇于去研究你不懂的代码

一般人都不愿意去研究自己不曾接触过的代码,很多人都没有尝试就放弃了。如果你经常去研究你没有接触过的代码,你就会越来越熟悉不同的代码结构和设计模式。现在人们很容易就接触到优秀的开源代码资源,你可以很方便的就下载下来做一些改动或者调试,去研究为什么代码可以这么写。

除了代码之外,很多人对于陌生的工作内容也会感到恐惧。每次换工作的时候,你可能都会遇到新公司的工作内容和以前工作的内容不一样的情况,以至于刚开始的时候工作效率没有以前那么高。很多人甚至觉得,他们是不是骗了面试官。

其实,大家都是在学习的过程中。在一个陌生的领域,没有人从一开始就是大神。如果你想变得越来越好,无论是写代码,与人沟通或者其它的技能,都是需要投入时间去学习的。

精通代码调试(debug)

很多人在写代码的过程中,经常会有的一个问题就是:为什么我写出来的代码不能运行?为什么运行的结果不是我想要的? 几乎所有的程序员写代码都不是一遍就能写好的。但是顶尖的程序员非常快的就明白自己代码的问题可能是什么。

这是一个很重要的能力,但是偏偏学校里不教,面试的时候考官也不经常提及。

那么怎么去调试代码呢?其实核心就是以下几个方法:

  • 不妨先猜测一下到底发生了什么。 假设你的猜测是对的,想想你的猜测会导致程序有什么结果。 试着观察这些结果有没有异常的地方。
  • 如果你没有发现异样,那么说明你的猜测就是对的。
  • 如果你发现了异样,那么说明你的猜测是错的,接下来换一个猜测试试。

对于顶尖程序员来说,这个过程在脑海中就是电光火石的一瞬间。只要你解决的问题足够多,你做出来的猜测就会越准确。

至于如何发现异样?你就需要有一套自己的工具或者方法论了。最简单的就是在代码里输出日志来判断。但是这是比较笨的办法,你需要去接触一些高级的工具或者直接带有Debug功能的编辑器。

重视能够节约时间的工具

打败人类的AlphaGo每天可以进行上百万局的下棋训练,我们人类一万个小时的训练却需要10年之久。也就是说,电脑运行几分钟,可能就等于人类工作好几年。

曾经在Facebook担任技术总监的Bobby Johnson描述过,高效率的程序员都把时间花在制作工具上。

很多人也认为工具是很重要的,但是他们并没有花时间去制作、整合自己的工具。但是,Jonson团队最出色的员工耗费了他们1/3的时间在工具制作上,这些工具可以用来发布代码,监控系统,以及能让他们花更少的时间去做更多事情。

总之,不要花时间去做机器可以代替你去做的事情。

优化你的迭代速度

假设你要花12秒钟去搜索某个函数是在哪里定义的。再假设你每天做这个动作60次,那么你每天就要花12分钟去搜索函数定义。

如果你用一个好一点的编辑器,每次找到函数定义只要2秒钟,那么你每天就会节约10分钟。每年你就可以节约40个小时。如果你能找到3个这样的场景去优化一下,那么你每年可以节约一个月的时间。

想想这一个月你可以做多少有意义的事情。再假如你在调试一个App的bug的时候,改完一次代码都需要重启一下App,然后点击4、5次才能看到bug有没有改好。那么你是不是可以先花几分钟设置以下,让App一启动就转到显示Bug的页面呢?

千万不要小看这些琐碎的细节,改善它们的回报是巨大。

系统性的思考方式

当你在写代码的时候,你很容易就认为只要你按照需求实现了指定的功能,你的代码就写完了。但是这其实只是冰山一角。

任何没有发布到生产环境的代码都不会产生任何价值。

  • 如果想写出真正有影响力的代码,你需要从整个系统去理解你的工作:
  • 你的代码和其他人写的代码在功能上是什么关系?
  • 你有没有好好测试你的代码?或者其他人是否很容易测试你的代码?
  • 为了部署你的代码,线上生产环境的代码是不是需要改动?
  • 新的代码会不会影响到已经运行的代码?
  • 在新的功能下,你的目标用户的行为是不是你期望的?
  • 你的代码有没有产生商业上的影响?

这些问题都不是很容易就能回答的,但是在写代码的时候,你需要明白你的代码最后会不会得到最好的结果。

出处:程序文摘

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

-END-

推荐关注“平凡文摘”公众号,一个平凡码农做的不平凡的公众号

原文发布于微信公众号 - 精讲JAVA(toooooooozi)

原文发表时间:2018-01-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏九彩拼盘的叨叨叨

写给初来简书的朋友

一转眼,我在简书写东西已经 3 年多了。在这过程中也收获了很多。因此,我也常推荐别人来简书上写博客。

803
来自专栏SeanCheney的专栏

《Python分布式计算》 0 序言 (Distributed Computing with Python)作者简介审稿人简介序言本书的内容

Python分布式计算 ---- 作者简介 Francesco Pierfederici是一名喜爱Python的软件工程师。过去20年间,他的工作领域涉及天文学...

3747
来自专栏编程

计算机编程新人入行指导

自加入公司以来,已经有6年的时间了,并且已经从一个新的电脑软件开发人员变成了一个老人。公司里有几个不同的项目,一些新同事会加入项目组,会有一些混乱和问题。这里有...

1967
来自专栏北京马哥教育

坚持的力量:Facebook向Python3迁移的过程回顾

Python3的使用量在过去几年有了明显增加,但它仍有很长的路要走。使用Python的大公司倾向于在其基础架构上运行Python2.7代码,Facebook也不...

1000
来自专栏CSDN技术头条

顶尖程序员的五种思维模式,你具备吗?

《THe Effective Engineer》的作者Edmond Lau采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至...

21410
来自专栏平凡文摘

想要成为顶级程序员必须具备的思维,学会了少走三年弯路

1643
来自专栏Java架构

顶尖架构师与普通程序员最大的5个区别!

《The Effective Engineer》的作者在写书的过程中,为了了解那些顶级程序员和普通程序员的区别,采访了很多硅谷顶级科技公司的顶尖软件工程师。他发...

1222
来自专栏华章科技

大数据圈盘点:你不知道的15个新技术

下面一起来看看吸引眼球的十五项大数据公告。虽然罗列了很多,但还不是全部内容,只是最近在加利福尼亚州圣何塞市Strata + Hadoop World大会上亮相的...

1041
来自专栏中国白客联盟

【免费】渗透测试室内一对一培训-工具篇更新

https://pan.baidu.com/s/1i5tEFQk910b_UNXk_N-ADw 密码:fu5s

2903

我们如何在大数据时代构建更智能的搜索引擎?

看起来,创新似乎来自意想不到的地方(毕竟,如果它来自预期的地方,那它会被称为创新吗?)。如今,许多事情已经聚集在一起,将搜索及搜索引擎置于全新的角度,来自意想不...

1641

扫码关注云+社区

领取腾讯云代金券