1. 编程语言能力

不用多说,作为合格的计算机程序员,精通一门语言是必须的。这种精通,不是说看了一本编程宝典,抄了几个程序就能说精通的,要靠长时间的积累。

2.编码能力

我曾经看很多程序员写的代码,在同一个jsp或者java源文件里,出现了三种以上的对方法的命名方式,有下划线间隔的,有全大写的,有拼音首字母的。就 像一个菜市场,杂乱无比,估计10天后,他自己都无法看的懂。遵守编码规范,是一个程序员最基本的要求,可悲的是,很多程序员根本没有意识到这个问题的严 重性。另外一个就是注释,要注意不是为了注释而注释。对类,以说明职责为主;对方法,以说明意图为主;对方法体,以说明实现思路为主。对于大段大段的代 码,要分段,使用空行隔开,并使用行内注释进行说明。

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,批处理命令)来将这些工作自动化,以提高效率。

转载于:https://www.cnblogs.com/webyihui/p/3984611.html

程序员应该具备的能力相关推荐

  1. 初级,中级,高级程序员需要具备的能力

    1:团队精神和协作能力 把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本.把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linu ...

  2. 能够拿到100万年薪的程序员都具备哪些能力?

    几周前,微盟爆了个大雷,数据库让内部员工删库跑路-- 很明显,微盟的技术体系是有严重问题的, 主要体现在:运维权限管理.数据库备份.上云而不上云方案,这三点.看起来有点耸人听闻,其实你永远不知道一个人 ...

  3. 从《职业分类大典》看人才需求,优秀的程序员应该具备哪些能力?

    近日,新版国家职业分类大典修订完成,本次净增了158个新职业,同时首次标注了97个数字职业. <职业分类大典>的作用 职业分类大典是职业分类的成果形式和载体,在开展劳动力需求预测和规划.统 ...

  4. 程序员需要具备的能力

    一.编程能力 点:算法(解决问题的能力) 线:设计模式(组织代码的能力) 面:对常见框架的理解和学习(搭建工程项目的能力) 体:对操作系统和计算机网络等基础理论的学习与实践(理解计算机世界的能力) 二 ...

  5. 阿里资深技术专家:在各阶段中,3年经验的程序员应具备哪些技术能力(进阶必看)...

    3年工作经验的Java程序员应该具备哪些技术能力,这可能是Java程序员们比较关心的内容.我这里要说明一下,以下列举的内容不是都要会的东西,但是你掌握得越多,最终能得到的评价.拿到的薪水势必也越高. ...

  6. 优秀的Java程序员应具备哪些编程技术?

    想要成为一名合格的java程序猿,需要学习的知识是有很多的,但是基础知识一定要非常牢固,基础不牢固的程序员,随时都会被新的知识和技术所淘汰,下盘不稳风一吹就倒,那么具体作为一个优秀的Java程序员应具 ...

  7. 面试感悟-------一名3年工作经验的程序员应该具备的技能

    转载: 面试感悟-------一名3年工作经验的程序员应该具备的技能 前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当 ...

  8. 面试感悟—-一名3年工作经验的程序员应该具备的技能

    文章来自:五月的仓颉 五月的仓颉 是一位非常优秀,乐于分享的大神,目前就职阿里 原文链接:https://www.cnblogs.com/xrq730/p/5260294.html 前言 因为和同事有 ...

  9. 百万年薪程序员的7点能力

    作者介绍 findyi,腾讯.360码农,前哒哒少儿英语技术VP,现任土豆教育CTO. 几周前,微盟爆了个大雷,数据库让内部员工删库跑路.写了篇文章,做了一些我的判断:从微盟36小时故障,谈谈数据安全 ...

最新文章

  1. OSError: Unable to download 'ffmpeg.win32.exe'. Perhaps there is a no internet connection? If there
  2. 测试人员面临的测试挑战和必备技能
  3. springboot 实现策略模式
  4. 【数据结构与算法】最小生成树--Kruskal算法 Prim算法
  5. Debian update apache error AH00111: Config vairable ${APACHE_RUN_DIR} is not defined
  6. 各种数据结构性能的比较
  7. 14.cookie与自动登陆
  8. 如何优雅地使用 VSCode 来编辑 vue 文件?
  9. Java Web实训项目:西蒙购物网(中)
  10. CentOS 7运维管理笔记(5)----源代码安装Apache 2.4,搭建LAMP服务器
  11. Linux 0.11内核分析04:多进程视图
  12. 网易家居专访柯拉尼陶晓松:有所为 有所不为 争创领军品牌
  13. 楚天音乐台的在线广播的URL代码
  14. Java毕设项目博雅楼自习室预约系统计算机(附源码+系统+数据库+LW)
  15. 【转发】浅析淘宝网首页信息架构的变迁
  16. 第八十六章 Caché 函数大全 $ZDATETIMEH 函数
  17. 看到这类代码,别再说你不认识了!手把手带你认识初阶结构体(结构体类型的声明、初始化、成员访问与传参,全在这篇文章里)
  18. 什麼是雲端服務?阿正老師教你免費玩Amazon EC2雲端主機!(上篇)
  19. 从一坨「便便」说起,大V亲测iPhone X为什么这么贵!
  20. 能让你脱颖而出的简历应该这么写

热门文章

  1. iviewui php,Vue UI框架对比:Element UI、Ant Design Vue、iView
  2. POJ 3580. SuperMemo
  3. JZOJ 3693. 【NOI2014模拟6.20】慎二的随机数列
  4. NOIP信息奥赛--1995“同创杯”初中复赛题题解(三)
  5. CVPR 2018 MCCT:《Multi-Cue Correlation Filters for Roubust Visual Tracking》论文笔记
  6. hdu4096(模拟)
  7. 2017年09月23日普级组 数列
  8. BZOJ 4221 [JOI2012春季合宿]Kangaroo (DP)
  9. codeblocks全屏模式怎么退出_IntelliJ IDEA 2020.1 EAP2 发布:新增禅模式和 LightEdit 模式...
  10. 国王放米粒的C语言程序,云南大学软件学院C语言实验米粒问题.doc