优秀的程序员和普通的程序员差别在哪里
这几年项目管理的事情做了不少,管理过不少程序员,有一些程序员确实会比其他人突出一些,他们在升职加薪方面确实会快很多,如果你也想成为优秀的程序员,
多和直属领导交流,千万不要等着领导找你;
可以定期主动汇报一下最近的工作,不用很正式,时不时地找领导聊几句:最近做了什么,有什么成果,遇到什么问题...如果遇到问题,要拿着解决方案去找领导,方案A or 方案B,让领导做选择题;
如果没有解决方案,要说自己的思路;
总之,要证明自己思考过;
进一个从0到1的项目,更容易出成绩,如果有机会进新项目的话,一定要把握住机会。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的
参考:
在我看来,大多数程序员是属于宅男类型,一天到晚编码,特深奥。
但总会有所差别,我觉得优秀的程序员,除了在编码上能力超群以外,他们不会像普通的程序员一样疯狂地找插件,类库和框架,而是更在学习钻研、吃苦耐劳、精益求精、态度谦虚上做的更好。
就在最近一两年,仿佛雨后春笋一般,身边开始涌现出很多年薪百万的程序员朋友,清一色集中在阿里、腾讯、京东、
其中有一个程序员朋友对我说:“技术大牛是怎么来的,你绝对想不到。
”出于好奇,我开始了解了这群特别的程序员,他们的工作总是和人工智能、IE工业大脑、大数据这些字眼挂钩,充满了高大上的感觉,没想到朋友口中的程序员,居然还亲自养猪、到深山里搞研究、在车间写代码,太接地气了。
其实这几年,ET工业大脑已经是大热门,阿里云让程序员进入工厂、实地考察交流,将人工智能和大数据技术嫁接到生产线,帮助企业实现生产流、数据流与控制流能协作,提升产能,实现工业智造,也不是稀罕事儿了。
在这些程序员之中,不仅有海归博士、高学历90后,还有来自金融界、咨询公司的跨界人士。
他们可以除了帮中策橡胶将良品率提升了3%-5%,让天合光能电池片A品率提升7%,营收增值超过2000万;
还提升了京信通信产品调试定标工序35%的生产效率,让迪森热能的锅炉健康能提前6-12小时发出预警......普通公司的程序员可做不到。
在我看来,这些看似不善言辞的优秀程序员,绝不像普通的程序员一样码字交任务,他们既能爬8米高的锅炉看看运作流程,也能不怕碱中毒做试验,用数据优化企业工作流程、提升效率及产能,背后靠的除了能吃苦、能钻研、能学习的
作为普通人,也由衷感谢这些程序员用每一行代码改变了世界。
参考:
我带软件软件开发团队多年,接触过不少程序员,其中有一些非常优秀的程序员,简单的总结一下,这些优秀的程序员往往具备
程序员是一个对基础知识结构要求比较高的工作岗位,健全的知识结构能够充分的体现在工作能力上,所以对于普通程序员来说,要想成为优秀的程序员就一定要从健全自身的知识结构开始,尤其是基础内容,包括数学、计算机操作系统、计算机网络、算法设计等。
第二:较强的学习能力。
学习能力较强是优秀程序员的重要特征之一,能根据不同的项目采用不同的解决方案,而且能够紧跟技术发展的脚步,这些都需要较强的学习能力。
学习会伴随着程序员整个职业生涯,学习能力往往决定了程序员能够达到的高度。
第三:较强的理解能力。
理解能力体现在很多方面,简单的说就是能把握住问题的关键部分,在研发一个产品的过程中,能够把握住产品的关键所在,不被旁枝错节所影响,这对程序员来说是一个较大的挑战。
第四:较强的沟通能力。
优秀的程序员往往能进行有效的沟通,简单的说就是有结果的沟通,沟通一定要达成一个共识,这是沟通的基本原则。
优秀的程序员往往具备进行有效沟通的能力,问题往往都会得到圆满的解决。
第五:强烈的责任心。
责任心是职业素养的重要体现,优秀的程序员往往都具备强烈的责任心,把软件产品看成是一件艺术品,不断的进行打磨进而追求一种完美。
所以,很多人也把程序员看成是艺术家。
第六:有团队合作意识。
优秀的程序员不仅要具备较强的
作者简介:中国科学院大学计算机专业研究生导师,从事IT行业多年,研究方向包括动态软件体系结构、大数据、人工智能相关领域,有多年的一线研发经验。
参考:
苏联著名的物理学家朗道提出了一种按照水平和贡献划分物理学家的方法,被称为物理学家的等级:物理学家可以分为五个等级,第一级最高,第五级最低,每一级之间能力和贡献相差十倍。
吴军博士仿照朗道的理论,将工程师划分为了五个等级:第五级:能独立解决问题,完成工程工作;
第四级:能指导和带领其他人一同完成更有影响力的工作;
第三级:能独立设计和实现产品,并且在市场上获得成功;
第二级:能设计和实现别人不能做出的产品,也就是说他的作用很难取代;
第一级:开创一个产业。
下面我们就按照这个标准来看看各个级别的程序员之间有什么差别:一个合格的工程师至少是五级工程师,对于计算机专业的学生,毕业后经过一段时间的锻炼,能够熟练应用代码知识解决问题,独立完成所分配的工作,而不需要他人指导,就算是一个合格的五级程序员了。
第四级的工程师需要有领导能力和在工程上把大问题化解为小问题的能力。
他们能够寻找出实现比较大的目标的道路,在现有的条件下考虑好和坏的解决方案。
在软件开发环节,第四级程序员需要考虑用户需求的特点、平台的选择、不同方案的效率和人员投入等多种因素,并根据公司能提供的现实条件选择最合适的方案。
第三级的工程师就应该能够独立带领人做出一个为公司挣得利润的产品了。
第三级的工程师,本身也必须是一个非常好的产品经理。
第三级程序员除了要具备上述两个等级的能力外,还必须具备对市场的判断和营销能力。
除了要考虑一个产品最佳的实现方案,还必须能够判断这个产品是否被市场需要,是否能为公司带来利润。
第二级是能够做出先前没有的东西的人,世界因为他们多少有点不同。
比如,Google云计算的发明人迪恩(Jeff Dean),他和他的搭档盖莫沃特一起开创了云计算时代。
迪恩等人发明了GFS文件系统(Google File System),让一个大文件能够分布地存储到成百上千台服务器中,解决了大量数据存储效率低的问题。
我们熟知的AlphaGo背后的Google深度学习算法也是迪恩发明的。
第一级是开创一个产业的人。
众所周知,计算机的出现大大促进了科学技术和社会生活的进步。
冯·诺依曼对人类的最大贡献就是对计算机科学、计算机技术和数值分析的开拓性工作。
计算机的逻辑
按照这个等级划分原则,吴军博士将自己定位为2.5级,那么2.5级是什么样的一个概念呢?
吴军曾任职于Google公司,和同事一同开创了搜索反作弊研究领域,成立了中、日、韩文产品部门,设计了Google中、日、韩文搜索算法,领导了Google自然语言分析器、自动
除此之外,他也是著名的学者,风险投资人,著有《数学之美》、《浪潮之巅》、《文明之光》等畅销著作,并多次获得包括文津奖、中国好书奖、中华优秀出版物在内的国家级
各位程序员也可以分析一下自己目前正处在哪一个等级,离下一个等级还有多远。
有了清晰的努力方向,距离目标的实现也就不远了。
参考:
由于本人从事互联网行业,平时接触到的程序员比较多,不仅有本公司的同事,还有一些合作公司的朋友。
同样是程序员,有的特别优秀,有的很平庸,他们之间的差距有上百万吧。
现在社会上有些声音说,程序员的门槛很低,随随便便上个培训班就能入行。
我觉得,这种说法就是对大牛程序员的侮辱。
按照
入行较早,可能也没刷过 leetcode,基本的数据结构和算法能力都没有,一招 if else / for 走天下。
2)新时代的码农,刷过无数的算法题,校招笔试信手拈来。
但是,对如何写出优雅的代码以及高性能的代码缺少经验。
3)这一档次的程序员算法能力合格,编码时能够遵循编码规范,对计算机硬件、操作系统和编译原理有一定研究,对性能有较深的理解。
而且掌握软件工程的构建原理,理解重构和设计模式。
4)这类程序员在 3)的基础上多了一项开源能力,阅读过一定量的开源代码,能够把开源框架引入到项目工程里。
而且,能够从软件工程可扩展性、后期好维护等角度全局考虑问题。
5)最牛逼的程序员,也就是所谓的架构师了。
在一家公司工作年限很长,亲眼目睹一个大型软件产品从诞生到成熟(包括优化、支持高并发、可运维)的整个过程,而且负责过关键模块的设计和编码。
对该产品中所用到的先进框架及技术了解透彻。
最后:一个程序员会多种编程语言不定牛逼,但如果他精通一门语言,注意是精通,那么他真的很厉害。
参考:
我们从程序员的日常工作来简单地聊一下吧:1、任务(需求)来临的时候:优秀程序员:跟对方(产品经理)不断的确认注意事项以及想到达到的效果,提前规避一些问题;
普通程序员:表示知道,然后看着需求列表,直接开始埋头敲代码。
2、开始写代码时:优秀程序员:脑海中思维清晰,他的脑海是有一系列详细步骤的,按部就班,一步步向前;
普通程序员:写代码的时候只管敲,出现了什么问题另说。
3、改BUG时:优秀程序员:遇见bug的时候,会详细的研究问题出在哪,在解决之后,还会思考是否存在着相似的问题;
普通程序员:基本解决BUG就靠运气了。
4、写注释时:优秀程序员:优秀程序员的代码,看起来是非常赏心悦目的,而且会有给代码加上注释的良好习惯,理解起来也非常容易;
普通程序员:普通程序员的代码,基本上写的时候只要自己看的懂就行了,而且还很多不写注释,可能过几个月,自己也不认识了。
所以普通程序员与优秀程序员真的会有几十倍的效率差异,一点都不奇怪!其他行业,如建筑行业,如果你技术不行,不懂电焊,不会弯钢筋,不会开塔吊,那你可以搬搬砖,扫扫地。
但是在软件开发领域,一个不合格的程序员开发的程序可能会给你埋一个很大的雷。
然后有可能会拉上一个团队的力量来挖这个雷。
你说这是不是帮倒忙。
普通程序员自然要比帮倒忙的差程序员要好很多,但是跟优秀程序员还是有很大差别的。
这个差别最终是体现在开发效率上。
除了开发效率外,另外一个就是开发质量了。
这就好比开三只小猪盖房子的故事,一个是草房子,一个是木房子,一个是砖房子。
虽然外形都差不多,实现的功能也差不多,但质量差别确实巨大的。
程序员开发的软件也是如此,虽然实现功能相同,但普通程序开发的程序在某些非常规流程可能会无法运行,而优秀程序员更能考虑各种异常场景。
当然,我们这里只是列举了几个例子。
实际情况还要复杂的多。
否则也就不会出现有些程序员年薪百万,而有些连10万都到不了了。
参考:
作为一个工作多年的程序员,在工作中也接触了很多大牛,也接触过很多菜鸟程序员,当然大部分都是接触的一般的普通程序员,通过对比我发现,我感觉优秀程序员和一般程序员的差别有
持续的学习力程序员都知道,我们这个行业是一个快速发展的行业,技术更新迭代的速度很快,所以,如果不想被时代抛下,不想落伍,就必须保持一个持续的学习能力,能够不断的去研究新技术,学习新技术,尝试新技术。
优秀的程序员大部分都是对编程痴迷,执着的一批人,他们对编程的兴趣非常浓厚,所以绝对是喜欢学习,持续学习的一批人。
而大部分普通的程序员,一般学会了某种技术之后,能够满足工作需要就行,不会主动的去努力学习,除非快被时代淘汰的时候,被倒逼着去学习。
优秀的程序员总会主动持续的去学习,而普通的程序员都是被倒逼着去学习的。
解决问题的能力解决问题的能力,最能提现一个程序员之间的差别,是否优秀与否。
一个优秀的程序员,经验丰富,定位问题的能力快速准确,debug 能力强,有技巧,有经验,而普通的程序员可能受限于经验的缘故,解决bug的能力,比较差,比较慢,很多时候,都是靠着搜索引擎来解决的。
研究能力见识多了大牛之后,你会发现,他们做事情,遇到问题,总是会较真的,必须知道知其人知其所以然,喜欢研究原理性的东西,必须搞懂这其中的原理,可以做到举一反三,搞出新东西来。
而普通的程序员,一般就比较容易满足,遇到问题,找到解决方法之后,知道怎么用就行了,不太会去深究其中的一些原理或者根本性的问题,反正我知道这么用,就不会用问题,容易满足。
我感觉这是普通程序员和优秀程序员之间的差别,所以,我们今后如果从事这个行业,就应该必须保持主动的持续学习力,解决问题的能力以及研究能力。
参考:
感谢
参考:
优秀的程序员和一般的程序员差别在那?
优秀的程序员,工作效率高,不断的学习和掌握新的技术,努力进取,他/她们对程序员的工作非常的热爱,到了痴迷的地步,无时无刻的都在学习,时间对他/她们是宝贵的,每分每秒手都离不开健盘,做为一个优秀的程序员,这是所具备的。
优秀程序员,遇到困难,一丝不苟的去解决,而不是应付了事,对工作的态度是认真的,也是较针的,解决问题,善于思考。
不达到目的决不罢休,我很敬重程序员这个职业。
而一般的程序员,就和优秀的程予员不一样,一般的程序员,掌握一般的技术就行了,新技术是不会进取的,这就是一般的程序员和优秀程序员的区别。
一般的程序员除非遇到困难,才逼他/她不得不去学习新的技术,否则就不会主动去学习新的技术。
一般的程序员是不思进取的,和优秀程序员区别很大的。
我曾经认识一个程序员,他/她工作非常认真,他/她的技术是一流的,他/她不断的学习新的知识,掌握程序技巧,博学多闻,程序技术过硬,他/她受到领导赏识,很历害。
好多年没见过,我这个朋友了,不知他/她现在工作如何,祝我这位朋友身体康健,万事如意!多注意休息程序员的职业,很不容易,贪黑起早的,祝程序员吉祥如意。