优秀程序员应该具备哪些素质?
你可以不聪明,但是你绝对不能不用心。
--《女人公敌》
程序员求职是本是一件只要“郎有情女有意”,一拍即合的事情,可是企业与求职者却总是看不对眼、聊不到一块去,进而导致IT市场上总是会出现结构性失衡的现象。一方面,社会每年培养大量的计算机相关专业毕业生,他们却找不到好的工作,但另一方面,企业却招不到好的程序员。据不完全统计,大学生里面大约有23%的人是学习计算机、通信、电子相关专业的,都可以从事程序员相关工作,也就是说全国每年大约有160 万准程序员们毕业,可同样,据传国内某知名搜索引擎企业在2012 年应届生名额没用完。问题出在哪?问题恰恰就出在程序员越来越多,但优秀的程序员却不是这样。因为这个世界上从来都不缺少好的企业,缺少的是好的员工。
凭什么你就比别的程序员优秀?是因为别的程序员具备的能力你都具备,而别的程序员不具备能力你也具备,而这正是你的优秀之处。着名书籍《人月神话》里面对优秀程序员的特性进行了一个深入分析,认为优秀程序员必须具备以下几个方面的素质:
(1)对编程有浓厚的兴趣,而不是因为“篮球之父”乔丹(备注:乔丹曾经给NIKE代言,广告词为“Just do IT”)的缘故才入行,由兴趣能驱动自己的探索和钻研精神,优秀程序员一般喜欢用业余时间探索和自己琢磨点东西,研究点开源框架和源代码。
(2)优秀程序员一般善于重构,懒于做重复的事情,对于重复事情有独有的程序员思维,即通过程序或其它自动化方式解决重复问题,而留更多时间去思考。达到一种多约束下的良好平衡。
(3)优秀程序员更多的会从简单功能实现,花哨的界面转移到对安全,性能,可扩展等底层架构的关注。
(4)优秀程序员一般有较明显的自恋和偏执特征。
(5)优秀程序员一般对计算机底层知识非常了解,有较为扎实的算法,数据结构等理论知识的基础。
对于优秀程序员而言,编程不是一份工作,而是一项充满激情的事业,编者比较认同这个观点,同时,编者也觉得,一名优秀程序员除了具备这些素质外,如果还能具有以下一些能力,必将锦上添花。
(1) 身体壮如牛
人生很漫长,不是一场百米冲刺,加速发力短暂的十几秒就完了,而是一场长达两万多天的马拉松比赛,二十几岁大学毕业,只是人生马拉松的开始,最重要的不是起跑的初速度有多快,而是是否能够坚持跑完全程。所以,起跑时就需要有足够的贮备能够让自己坚持下来,这贮备就是健全的身体和人格。所以,想成为一名优秀的程序员,身体不好肯定不行。本章第4.5 节对程序员的身体健康有比较详细的论述,此处不再赘述。
(2) 心理素质好
编程是一项劳心劳力的活,程序员也因此需要承受巨大的精神压力,也许压力能够激发人的潜能,但压力同样可以摧残一个人的意志,关键就看如何对待了。生活似乎并没有给程序员缓解压力的空间,反而高房价、高物价一点点地消磨掉了他们所剩不多的斗志。此时,就对程序员的心理素质提出了更高的要求。有的程序员经不住风吹雨打,尽管实力不俗,但面对压力,面对困难,却畏首畏尾,瞬间崩溃,立马变成软蛋,而有的程序员大器沉着,面对困境,不慌不乱,能够冷静思考,越战越勇,尽管泰山压顶,却仍然岿然不动,丝毫没有怯意。而优秀程序员属于后者。
(3) 团队精神和协作能力
“不怕神一样的对手,就怕猪一样的队友”,一句经典的网络用语道出了团队合作的重要性。
众所周知,失败的团队没有成功者,成功的团队成就每一个人。真正优秀的程序员应学会怎样和别人工作与合作,因为团队精神和协作能力是程序员应该具备的最基本的能力,也是最重要的安身立命之本。很多人误认为优秀程序员是独行侠,不食人间烟火,喜欢把自己关在一个小黑屋子里面,一待就是几个月,然后突然出关,向世界宣布自己已经如何武艺高强了,其实不然。如果没有团队精神,任何一个程序员也不可能有真正的成功,即使成功也是渺小的、暂时的。
随着软件系统的规模越来越大,计算机软件的发展已经度过了早期的依靠个人能力的单兵作战时代,“孤胆英雄”也早已成为传说,即便如Linus Torvalds(Linux 之父)这样的天才,也需要通过组成强大的团队来才能创造奇迹。现在的软件已经朝着大型化、商业化、定制化方向发展,因此要获得事业上的成功,必须要依靠团队的力量才能达到,就更加需要程序员的团队精神与合作能力了。
关于如何培养团队精神与写作能力,编者认为,除了加强自身的技术水平、沟通技巧、语言表达能力等能力以外,还需要增强自己的责任心,因为责任心是赢得团队成员尊重的最好利器。
(4) 书写注释与文档的能力
程序员最烦两件事:第一件事情是别人要他给自己的代码写注释与文档,第二件事情是别人的程序没有留下注释与文档。鉴于此,为了别人,也为了自己,还是应该好好书写注释与文档。“本是同根生,相煎何太急”,程序员何苦为难程序员?就如同你刚接触项目渴望得到前辈留下注释与说明文档一样,为你后面的兄弟留点注释和文档吧。
很多人以为编程就是写代码,其实,这是对编程的一种误解。程序员的世界不应该只有代码。没有好的建设图纸,搬砖的力气再大,房子也是会塌的,而文档对于软件的重要性丝毫不亚于建设图纸于建筑的重要性。软件由代码与文档组成,写代码需要技术,写好文档也需要技术,优秀的程序员绝不仅仅只是会写代码,而是应该具有很强的注释与文档书写能力。虽然说代码本身可以说明问题的确是很棒的,但并不是说注释不重要,良好的注释与文档是正规研发流程中非常重要的环节,如果软件缺少注释与文档,那么这个软件就会缺乏生命力,在未来的升级、排故以及模块的复用时就都会遇到极大的麻烦,有可能是毁灭性的灾难。
作为一名普通程序员,花费30%的工作时间写技术文档是很正常的事情,而作为优秀程序员,这个比例会更高。
优秀程序员应该具备哪些素质?
时间: 2025-01-02 17:24:53
优秀程序员应该具备哪些素质?的相关文章
一个优秀的c++程序员应该具备的素质
1.把C++当成一门新的语言学习(和C没啥关系!真的.): 2.看<Thinking In C++>,不要看<C++变成死相>: 3.看<The C++ Programming Language>和<Inside The C++ Object Model>,不要因为他们很难而我们自己是初学者所以就不看: 4.不要被VC.BCB.BC.MC.TC等词汇所迷惑--他们都是集成开发环境,而我们要学的是一门语言: 5.不要放过任何一个看上去很简单的小编程问题--他们
程序员应具备的素质(国内的大多程序员生产力不够,所以只能早早转行)
学习编程已经有10个年头了,在这10年里,我做个不少软件项目,有大有小,写过基于单片机的裸奔式的嵌入式软件,写过基于os(linux.rtems.linux)的嵌入式软件,做过windows驱动开发,开发个windows应用软件,这一路走来,发现在国内程序员并不受尊重,程序员往往寿命很短,不到30岁就的转行,大家一致认为程序员是it民工,再来看看国外的程序员40岁都能活跃在编程一线,是大家羡慕的朝阳行业,为什么国内国外程序员会有如此天壤之别呢?说白了国内的大多程序员生产力不够,没有创造出作为一名
随便扯扯,程序员应该具备哪些素质
趁着这几天无事,好好总结一下从事软件开发以来的一些想法,这篇blog尝试从我自身的一些经历来谈谈程序员应该具备哪些素质.如有不足之处,还请不吝赐教! 下面,我将列出并展开所有我认为程序员必须具备的素质. 基础知识 你也许是像我一样的自学者,没有数电/模电,编译原理,操作系统原理,网络与数据库等方面的知识,但是对于这些你应该尝试去了解.理解.当初跨专业考研之时学习的操作系统/网络/数据结构/数据库的知识于我现在的工作仍然有益,我有遇到过一些能力很强的人,他们做解决方案很强,但是debug能力说实话
一个优秀的程序员应该具备哪些素质?
俗话说“师父领进门,修行靠个人”,随着互联网的高速发展,越来越多的人选择了IT行业,加入到了程序员的行列.那么,对于一个刚入行的小白来讲,如何成为一个优秀的程序员呢?一个优秀的程序员需要哪些素质呢? 在学习C/C++或者想要学习C/C++可以加入我们的学习交流QQ群: 954607083,领取学习资料 扎实的技术 熟练开发工具 做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利
程序员老司机谈到的一位优秀程序员应该具备的十个优秀的习惯
在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer).经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作.但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意,如果你能让下面十个条目成为你的习惯,那么你才能真正算得上是优秀程序员. 1. 学无止境.就算是你有了10年以上的程序员经历,你也得要
优秀程序员必须具备的八个习惯
什么才是优秀的程序员,最谁也说不出准确的答案,没有确切的定义,可以有很多的切入点从编程语言,算法和其他技能上去回答,但是我们统统忽略了程序员的生活,见过了中关村的程序员大牛从小菜鸟一路艰难的磨练,总结下我的看法,优秀程序员必须知道的八件事情. 1.补充正能量保持好状态 话说人有三迷,你不工作的时候,你在状态么?如果回答是否定的那么你需要改变,你需要一种自己喜欢的提神方式,可以是咖啡,可乐,或者是刷微博听音乐,可以所思调增自己的精神状态,让自己不管在工作还是生活中,都能保持一个很好的状态,一个良好
每个优秀程序员必须具备的技术技能
我特别支持软件开发者在他们掌握技术技能的同时去学习“软技能”——事实上,我写了一本关于这方面的书——但是不可否认的是:技术技能很重要. 我的意思是,如果你不能编写代码和开发软件,那么你学习众多软技能有个卵用.也许你可以成为一名优秀的管理人员或指导人员,但不会是软件开发人员. 如果你正在阅读这篇文章,那么我假设你有兴趣成为一个软件开发人员——或者是更优秀的软件开发人员——下面就让我们来聊一聊你需要知道哪些技术技能. 用技能赚钱 现在,有这样一种主流观念,压垮了很多新手软件开发者,那就是你需要学习很
优秀程序员应具备的15个特性
1.分享 尽可能地使用开源,并且如果有能力的话也可以把自己的成果分享给大家.整个社会的智慧结晶肯定比一些大公司自管自闭门造车要好. 2.公平的心态 不要以为你的选择就是唯一能奏效的,试试其他技术.框架.方法和建议,也许其他的选择比你原先的好也未可知.要用开放的心态去对待任何方法和抉择. 3.不可攻击他人 如第2条所言,不要因为别人恰巧使用的是.Net.Java或PHP这些技术就随意攻击他们(我在这方面有过教训). 有时,这些你看不上眼的技术或许要比你想象的更有用.只要你怀着一种平和的心态,你就可
优秀程序员无他,善假于物也
运用一门程序设计语言对大多数程序员来说是小菜一碟,但是更上一层楼成为一名专家级的软件开发者,恐怕目前还是大多数人的梦想.<程序员的思维修炼>一书中将程序员分为5个层级:新手.高级新手.胜任者.精通者.专家.根据作者的调查研究结果,在这5个层级中,大多数的程序员属于高级新手.而且居于这个层级的程序员从入行1.2年的到工作10来年都大有人在. 身为一个程序员,如何才能尽快的突破自身的瓶颈,得到快速的提升那?这可真不是三言两语可以说清楚.本人09年毕业投身软件行业,2012年初离开工作了三年的公司A