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

原创 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.你的代码有没有产生商业上的影响?

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


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

  共勉。

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

相关文章推荐

漫话程序员们的家庭装修——书房篇

书房作为程序员在公司战斗一天回家后的第二战场,身兼多职:码代码、打游戏、看电影...面对着本来就不太大的家,如何才能合理利用空间,打造独一无二的书房呢?...

了解一下 Nginx, 原来淘宝有这么多大神级程序员

Nginx 第三方模块-漫谈缘起 2012-03-30 10:10 by 轩脉刃, 6585 阅读, 1 评论, 收藏, 编辑 本文的部分内容和图片摘录于http://tengine.ta...

普通程序员与软件工程师的区别

   “程序员”和“软件工程师”的概念常常被混淆在一起使用,很多人以为搞软件就是编程序、就是“程序员”,而很多各种各样的培训学校却宣传培养的是“高薪软件工程师”;有很多资深的软件开发高手称呼自己为“老...

十大编程算法助程序员走上大神路

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速...

从程序员小白到大神的正确打开方式!

原文地址 一个程序员大神是如何炼成的?突然想到了个问题。于是乎思考了下这个问题感觉很有意思,在上网找了些答案发现了成为一名优秀的程序员必备5个技能。 NO.1 问题分解 ...

国外大神分享:给程序员的实用编程7+1条小贴士

这篇文章我已经构思了几个星期了,现在决定发表出来。请享用!   1. 编码之前想一想   用 10 分钟,20 分钟甚至 30 分钟的时间来想想你需要什么,想想什么样的 设计模...

入门程序员——从小白到大神

新人自传
  • weibo_dm
  • weibo_dm
  • 2017年03月16日 12:39
  • 10475

[一位大神]再谈“我是怎么招聘程序员的”

(请勿用于商业用途,转载时请注明作者和出处)   来自:酷壳 http://coolshell.cn 原文:http://coolshell.cn/articles/4506.htm...

十大编程算法助程序员走上大神之路

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速...

黑马程序员-一个菜鸟到大神

文章来源:黑马论坛,黑马程序员 下周一入职,不是名企业,但是是我喜欢的多媒体方面的产品。趁现在有时间,写点文字,好久没来这里了,仿佛梦回当初报名黑马的激动和惶恐,迷茫又坚定。       ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大神级程序员和普通程序员的区别
举报原因:
原因补充:

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