优秀程序员应该具有哪些素质? 你能够不聪明,可是你绝对不能不用心。 --《女人公敌》 程序员求职是本是一件只要“郎有情女有意”,一拍即合的事情,但是企业与求职者却老是看不对眼、聊不到一块去,进而致使IT市场上老是会出现结构性失衡的现象。一方面,社会每一年培养大量的计算机相关专业毕业生,他们却找不到好的工做,但另外一方面,企业却招不到好的程序员。据不彻底统计,大学生里面大约有23%的人是学习计算机、通讯、电子相关专业的,均可以从事程序员相关工做,也就是说全国每一年大约有160 万准程序员们毕业,可一样,据传国内某知名搜索引擎企业在2012 年应届生名额没用完。问题出在哪?问题偏偏就出在程序员愈来愈多,但优秀的程序员却不是这样。由于这个世界上历来都不缺乏好的企业,缺乏的是好的员工。 凭什么你就比别的程序员优秀?是由于别的程序员具有的能力你都具有,而别的程序员不具有能力你也具有,而这正是你的优秀之处。着名书籍《人月神话》里面对优秀程序员的特性进行了一个深刻分析,认为优秀程序员必须具有如下几个方面的素质: (1)对编程有浓厚的兴趣,而不是由于“篮球之父”乔丹(备注:乔丹曾经给NIKE代言,广告词为“Just do IT”)的缘故才入行,由兴趣能驱动本身的探索和钻研精神,优秀程序员通常喜欢用业余时间探索和本身琢磨点东西,研究点开源框架和源代码。 (2)优秀程序员通常善于重构,懒于作重复的事情,对于重复事情有独有的程序员思惟,即经过程序或其它自动化方式解决重复问题,而留更多时间去思考。达到一种多约束下的良好平衡。 (3)优秀程序员更多的会从简单功能实现,花哨的界面转移到对安全,性能,可扩展等底层架构的关注。 (4)优秀程序员通常有较明显的自恋和偏执特征。 (5)优秀程序员通常对计算机底层知识很是了解,有较为扎实的算法,数据结构等理论知识的基础。 对于优秀程序员而言,编程不是一份工做,而是一项充满激情的事业,编者比较认同这个观点,同时,编者也以为,一名优秀程序员除了具有这些素质外,若是还能具备如下一些能力,必将锦上添花。 (1) 身体壮如牛 人生很漫长,不是一场百米冲刺,加速发力短暂的十几秒就完了,而是一场长达两万多天的马拉松比赛,二十几岁大学毕业,只是人生马拉松的开始,最重要的不是起跑的初速度有多快,而是是否可以坚持跑彻底程。因此,起跑时就须要有足够的贮备可以让本身坚持下来,这贮备就是健全的身体和人格。因此,想成为一名优秀的程序员,身体很差确定不行。本章第4.5 节对程序员的身体健康有比较详细的论述,此处再也不赘述。 (2) 心理素质好 编程是一项劳心劳力的活,程序员也所以须要承受巨大的精神压力,也许压力可以激发人的潜能,但压力一样能够摧残一我的的意志,关键就看如何对待了。生活彷佛并无给程序员缓解压力的空间,反而高房价、高物价一点点地消磨掉了他们所剩很少的斗志。此时,就对程序员的心理素质提出了更高的要求。有的程序员经不住风吹雨打,尽管实力不俗,但面对压力,面对困难,却畏首畏尾,瞬间崩溃,立马变成软蛋,而有的程序员大器沉着,面对困境,不慌不乱,可以冷静思考,越战越勇,尽管泰山压顶,却仍然岿然不动,丝毫没有怯意。而优秀程序员属于后者。 (3) 团队精神和协做能力 “不怕神同样的对手,就怕猪同样的队友”,一句经典的网络用语道出了团队合做的重要性。 众所周知,失败的团队没有成功者,成功的团队成就每个人。真正优秀的程序员应学会怎样和别人工做与合做,由于团队精神和协做能力是程序员应该具有的最基本的能力,也是最重要的安身立命之本。不少人误认为优秀程序员是独行侠,不吃烟火食,喜欢把本身关在一个小黑屋子里面,一待就是几个月,而后忽然出关,向世界宣布本身已经如何武艺高强了,其实否则。若是没有团队精神,任何一个程序员也不可能有真正的成功,即便成功也是眇小的、暂时的。 随着软件系统的规模愈来愈大,计算机软件的发展已经度过了早期的依靠我的能力的单兵做战时代,“孤胆英雄”也早已成为传说,即使如Linus Torvalds(Linux 之父)这样的天才,也须要经过组成强大的团队来才能创造奇迹。如今的软件已经朝着大型化、商业化、定制化方向发展,所以要得到事业上的成功,必需要依靠团队的力量才能达到,就更加须要程序员的团队精神与合做能力了。 关于如何培养团队精神与写做能力,编者认为,除了增强自身的技术水平、沟通技巧、语言表达能力等能力之外,还须要加强本身的责任心,由于责任心是赢得团队成员尊重的最好利器。 (4) 书写注释与文档的能力 程序员最烦两件事:第一件事情是别人要他给本身的代码写注释与文档,第二件事情是别人的程序没有留下注释与文档。鉴于此,为了别人,也为了本身,仍是应该好好书写注释与文档。“本是同根生,相煎何太急”,程序员何苦为难程序员?就如同你刚接触项目渴望获得前辈留下注释与说明文档同样,为你后面的兄弟留点注释和文档吧。 不少人觉得编程就是写代码,其实,这是对编程的一种误解。程序员的世界不该该只有代码。没有好的建设图纸,搬砖的力气再大,房子也是会塌的,而文档对于软件的重要性丝绝不亚于建设图纸于建筑的重要性。软件由代码与文档组成,写代码须要技术,写好文档也须要技术,优秀的程序员毫不仅仅只是会写代码,而是应该具备很强的注释与文档书写能力。虽说代码自己能够说明问题的确是很棒的,但并非说注释不重要,良好的注释与文档是正规研发流程中很是重要的环节,若是软件缺乏注释与文档,那么这个软件就会缺少生命力,在将来的升级、排故以及模块的复用时就都会遇到极大的麻烦,有多是毁灭性的灾难。 做为一名普通程序员,花费30%的工做时间写技术文档是很正常的事情,而做为优秀程序员,这个比例会更高。