程序员人生 网站导航

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

栏目:综合技术时间:2016-06-17 08:41:24

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

  部份原文以下:


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


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

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

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

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


精通代码调试

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

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

  1.无妨先猜想1下到底产生了甚么。

  2.假定你的猜想是对的,想一想你的猜想会致使程序有甚么样结果。

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

  4.如果你没有发现异常,那末说明你的猜想就是对的。

  5.如果你发现了异常,那末说明你的猜想是错的,接下来换1个猜想试试。

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

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


重视能够节俭时间的工具

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

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

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


优化你的迭代速度

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

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

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

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

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


系统性的思考方式

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

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

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

  2.你有无好好测试你的代码?或其他人是不是很容易测试你的代码?

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

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

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

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

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


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

  共勉。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐