优秀程序员应该具备的12种能⼒
1. 编程语⾔能⼒
  不⽤多说,作为合格的计算机程序员,精通⼀门语⾔是必须的。这种精通,不是说看了⼀本编程宝典,抄了⼏个程序就能说精通的,要靠长时间的积累。
  2.编码能⼒
  我曾经看很多程序员写的代码,在同⼀个jsp或者java源⽂件⾥,出现了三种以上的对⽅法的命名⽅式,有下划线间隔的,有全⼤写的,有拼⾳⾸字母的。就像⼀个菜市场,杂乱⽆⽐,估计10天后,他⾃⼰都⽆法看的懂。遵守编码规范,是⼀个程序员最基本的要求,可悲的是,很多程序员根本没有意识到这个问题的严重性。另外⼀个就是注释,要注意不是为了注释⽽注释。对类,以说明职责为主;对⽅法,以说明意图为主;对⽅法体,以说明实现思路为主。对于⼤段⼤段的代码,要分段,使⽤空⾏隔开,并使⽤⾏内注释进⾏说明高级java程序员掌握技能
3.⾯向对象思维能⼒
  如今,多数编程语⾔都是⾯向对象的编程语⾔。⽽这些⾯向对象的编程语⾔的共同的精髓就是⾯向对象的思想。掌握这些⽐⾯向对象语⾔本⾝更重要,⽐如对继承,多态,重载的理解。对⾯向对象基本原则
的理解,⽐如开闭原则,接⼝隔离原则,单⼀职责原则等。在此基础上,应该掌握常⽤的设计模式,⽐如⼯⼚模式,策略模式,观察者模式,模板⽅法模式,命令模式等等。我⾯试过很多程序员,没有⼀个能说得上⼏句的。
  4.利⽤⼯具能⼒
  ⼯欲善其事,必先利其器。有了趁⼿的家伙,⼯作效率可以提升数倍。你编程序,有没有选择⼀个很好的IDE,以前听说编程⾼⼿都⽤记事本写程序,我觉得那是⼀种⾃虐。就像以前看到的⼀篇⽂章,说⼀帮户外旅⾏爱好者,出去旅游,背了重重的旅⾏包,⾥⾯装着什么压缩饼⼲等快速⾷品。他们宁可就着矿泉⽔啃压缩饼⼲,也不肯去1⾥路都不到的快餐店,农家菜馆吃饭。⼯具是为⽬的服务的,好⽤,提⾼效率就⾏,形式⽆所谓。
  5. 英语能⼒
  新的技术资料都是英⽂的,英语国家的IT技术⾛在我们前⾯⾄少10年(这是我⾃⼰估计的数字,可能正在缩⼩)。就连印度,⼀个连基础设施建设都不太完善的国家,因为其英语基础较好,其在软件外包领域的发展也⾮常迅猛,远远超过了我们。学英语,⾸先是有信⼼,其次就是花时间。多阅读英⽂资料,贵在坚持。
6.学习能⼒
  在IT业混饭吃不容易,整个环境进化的太快,你不学习,就等于落后了。学习要有针对性,别今天学ruby,明天学python,后天php 的。⾸先要认清⾃⼰的⽬标,⾃⼰短期⽬标是什么,1年后,3年后,5年后的⽬标是什么。结合这些⽬标,确定⾃⼰的学习计划,⼈的精⼒毕竟是有限的。当然,多掌握⼏门编程语⾔也是好的,可以扩充⾃⼰的知识⾯,重要的是为⾃⼰的⽬标服务。当然,不能只学习技术,要经常练习⾃⼰的软技能,⽐如沟通能⼒,表达能⼒。
  7.创造能⼒
  普遍认为,东⽅⼈模仿能⼒很强,但创造能⼒差。我见过很多这样的程序员,经常说,“这个只能这么解决了,我想不出有什么别的⽅法。”可能他根本都没想过别的⽅法,或者懒得去想。对任何⼀个问题,出两种以上的解决办法都是⾮常容易的,简单的google⼀下,可能就是数⼗种。悲哀的是,有些程序员经常⽌步于⾃⼰构建的狭⼩领地之内。对待客户也是这种态度,不是积极的帮助客户解决问题,⽽是推脱这只是唯⼀解决⽅案。
8.⽂档能⼒
  也许有⼈会质疑,程序员跟写⽂档有什么关系。⼤家开源软件也⽤过不少,看看Spring,hibernate,Struts等最流⾏的开源软件的⽂档就知道,他么的tutorial,他们的getstarted,他们的reference⽂档写的多么的易懂。其实写代码也相当于写⽂档,只不过⽤的是编程语⾔。同样,写⽂档,⽤⾃然语⾔,
也相当于写程序,简单明了,清晰易懂,这样的“程序”谁看谁舒服。同样,对于想进阶到设计师或者需求分析员⾓⾊的程序员,⽂档能⼒更是⾮常重要。
  9.抽象能⼒
  抽象能⼒是认识事物从现象到本质的能⼒。如果你只是停留在“见⼭是⼭,见⽔是⽔”的层次,客户说什么,你就做什么,设计怎么做,你就怎么实现,从来不过问为什么,也不去想他是满⾜了⽤户哪些⽅⾯的需求呢。这样可能只解决了表⾯的问题,可能会引起返⼯。认识到本质,才能让你的程序具备更⼤的灵活性和可扩展性。在做企业应⽤软件开发中,抽象能⼒体现为对问题域的理解能⼒,对领域模型的抽象。合理的抽象也是代码重构的前提,每⼀次重构,都是向更好的抽象迈进了⼀步。
  10.代码评审能⼒
  代码评审和单元测试是保证代码质量的两种常⽤⼿段之⼀。代码评审能⼒,说明了你的审美标准,知道什么是好的,什么是不好的,什么是优雅的代码,什么是糟糕的代码,你才能让⾃⼰做的更好。
  11.单元测试能⼒
  没有单元测试的代码,只能说是半成品。因为没有什么能证明你的代码是可以运⾏的。测试驱动开发是⼀个⾮常好的敏捷过程的最佳实践。单元测试还可以作为回归测试,在修改代码时,起到警戒线标
志的作⽤。是否具有单元测试的意识是区分程序员是否合格的重要标准。写不写单元测试是区分平庸程序员和优秀程序员的重要标杆。
  12.DRY
  DRY是⼀种原则,就是Don”t Repeat Yourself.这条原则可以⽤到很多地⽅,⽐如你经常要编译,打包,部署应⽤程序,供集成测试⽤。每次你都在重复你⾃⼰,写⼀个⾃动化脚本(⽐如⽤ant,批处理命令)来将这些⼯作⾃动化,以提⾼效率。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。