大神级程序员和普通程序员的区别

原创 2016年05月31日 14:34:47

  标题说的有点玄乎,在网上看到的一篇文章,提到了一些大牛具备的几种素质(或者说应该养成的习惯),值得反思。

  部分原文如下:


  为了了解那些大神级程序员和普通程序员的区别,采访了很多世界高端科技公司的软件工程师。发现这些给世界带来巨大影响的的工程师们至少有以下几个共同的思维模式:


勇于去研究自己不懂或不熟悉的代码

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

  除了代码之外,很多人对于陌生的工作内容也会感到抵触。每次换工作的时候,可能都会遇到新公司的工作内容和以前工作的内容不一样的情况,以至于刚开始的时候,工作效率没有以前那么高。

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


精通代码调试

  很多人在写代码的过程中,经常会有的一个问题就是:为什么写出来的代码不能运行?为什么运行的结果不是我想要看到的?

  几乎所有的程序员在写代码娿过程中,都不是一遍就能写好的。但是大神级的程序员会很快的就明白自己代码的问题。这是一个很重要的能力,需要在工作中日积月累。那么怎么去调试好代码呢?以下几个方法,看文章的你可以借鉴下:

  1.不妨先猜测一下到底发生了什么。

  2.假设你的猜测是对的,想想你的猜测会导致程序有什么样结果。

  3.试着观察这些结果有没有异常的地方。

  4.如果你没有发现异样,那么说明你的猜测就是对的。

  5.如果你发现了异样,那么说明你的猜测是错的,接下来换一个猜测试试。

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

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


重视能够节约时间的工具

  最近打败人类的AlphaGo(阿尔法)每天可以进行上百万局的下棋训练,人类一万个小时的训练却需要10年之久。也就是说,电脑运行几分钟,可能就等于人类工作好几年。这么一比,人力的思维好渺小。。。

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

  总之,不要花时间去做没有意义的事情。


优化你的迭代速度

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

  如果你用一个好一点的编辑器,每次找到函数定义只要2秒钟,那么你每天就会节约10分钟。每年你就可以节约40个小时。

  如果你能找到3个这样的场景去优化一下,那么你每年可以节约一个月的时间,想想这一个月你可以做多少有意义的事情啊。

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

  所以千万不要小看这些琐碎的细节,改善它们对你的回报是巨大,细节决定成败啊。


系统性的思考方式

  当你在写代码的时候,很容易就认为只需要按照需求实现了指定的功能,这个代码就可以算是写完了。但是这其实只是沧海一粟。任何没有发布到生产环境的代码都不会产生任何价值的。

  如果想写出真正有影响力的代码,需要从整个系统去理解属于你的工作:

  1.你的代码和其他人写的代码在功能上是什么关系?

  2.你有没有好好测试你的代码?或者其他人是否很容易测试你的代码?

  3.为了部署你的代码,线上生产环境的代码是不是需要改动?

  4.新的代码会不会影响到已经运行的代码?

  5.在新的功能下,你的目标用户的行为是不是你所期望的?

  6.你的代码有没有产生商业上的影响?

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


  上面谈到的几点,很容易就可以想到,但是你做到了吗?

  共勉。

版权声明:本文为博主原创文章,未经博主允许不得转载。

程序员进阶之路:如何从零开始成为技术大神

知乎上有人问,成为顶尖的程序员是否需要学会武术,获赞最多的评论是一定要会武术,而有必要在公司年会上表演出来。 什么单手开砖,空手道,双截棍等均可,因为这样的话产品在提需求的时候一定会非常小心谨慎,也保...
  • u011606348
  • u011606348
  • 2015年07月17日 11:49
  • 2589

某阿里大神想和java程序员说的话

引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体...
  • wuhao13601400547
  • wuhao13601400547
  • 2016年09月18日 11:50
  • 1866

每个程序员都该知道的10大编程格言

 每个程序员都该知道的10大编程格言(Kevin Pang): 编程格言1:无风不起浪 (There is no smoke without fire) ...
  • Andrewniu
  • Andrewniu
  • 2016年07月15日 16:10
  • 1387

架构师与程序员的区别

Simon Brown 是全球知名软件架构独立咨询师、讲师,创办了专门讨论软件架构问题的网站“编码架构”(CodingTheArchitecture.com)。他自称是写代码的软件架构师和明白架构的软...
  • qq1175421841
  • qq1175421841
  • 2016年07月02日 23:23
  • 2924

你离大神级程序员只差这几步

各种设计模式,用不用没关系,要会吹。 各种数据结构,各种树,堆,栈,图,名字都要记住了,越拗口的越重要。 各种奇葩算法,都要心中有数,名字听起来越是不知所云的,越要烂熟于胸。 千万别和人争语言,...
  • ceshi986745
  • ceshi986745
  • 2016年06月22日 12:21
  • 1771

程序员苹果电脑使用入门

第一次接触苹果系统,会有很多不习惯 遇到的问题,大部分百度都很容易解决。这里汇总一些程序员经常遇到的问题 问题(1)使用命令行安装程序的时候会提示密码,命令行输入密码不显示 解决:这是正常现象,保...
  • wei_chong_chong
  • wei_chong_chong
  • 2016年12月26日 15:26
  • 591

攒了个程序员笔记本,做个记录

品牌型号:Asus/华硕 N551VW6700 内存:16GB(DDR4 2133MHz) 硬盘:512GB SSD固态硬盘(威刚) 显示屏:15.6英寸 分辨率1920×1080 独立显卡:4G显存...
  • u010232305
  • u010232305
  • 2016年04月19日 20:57
  • 1686

如何成为一个程序员高手

程序员学习编程需要攻克的8个障碍 2015-06-17    分类:程序员人生、首页精华7人评论 分享到:更多8 本文由码农网 – 王国峰原创翻译,转载请看清文末的转载要求,欢迎...
  • boshuzhang
  • boshuzhang
  • 2016年04月01日 15:45
  • 1185

顶级程序员和普通程序员在思维模式上的5个区别!

《The Effective Engineer》的作者在写书的过程中,为了了解那些顶级程序员和普通程序员的区别,采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至少...
  • kl28978113
  • kl28978113
  • 2017年06月09日 09:45
  • 503

普通程序员如何入门深度学习?

转自CSDN公众号。2017-11-14 普通程序员如何入门深度学习? 2017-11-14 Anymake CSDN 点击上方“CSDN”,选择“置顶公众号” 关键时刻,第一时间送达! ...
  • MessiGodLike
  • MessiGodLike
  • 2017年11月14日 11:14
  • 673
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大神级程序员和普通程序员的区别
举报原因:
原因补充:

(最多只允许输入30个字)