一个成功的程序员需要具备哪些素质?

如题所述

程序员是一种技术工作.在IT的发展中有相当重要的地位.从底层硬件通讯协议的建立. 到数据传输层的处理.到操作系统的建设.到数据库平台的建设.一直到应用层上各种数 据营销平台的搭建.程序员在里面都扮演着举足轻重的角色并为IT事业的发展做出了巨大 的贡献.
中国有很多精于编码的人.但是中国软件行业.尤其是网络应用开发方面误区很大.很难形成有规模的软件开发力量和产品能力.不但比美国差距甚远.和印度相比也是颇有不 如.这些问题不是在于中国程序员的智商和工作努力状况.也不是在于国家和民间对开发 的投入程度.而是很大程度上.有一些对技术.对程序开发.对项目设计方面的思想误 区.这些误区.导致了软件行业的产品化能力不足.缺乏规模化和大型复用系统研发能 力.可以说.改变认识误区.是解决软件行业小作坊模式和个体英雄模式所带来的局限性 的重要工作.
中国有很多小朋友.他们18.9岁或21.2岁.通过自学也写了不少代码.他们有的代码写的很漂亮.一些技术细节相当出众.也很有钻研精神.但是他们被一些错误的认识和观点左右.缺乏对系统.对程序的整体理解能力.这些人.一个网上的朋友说得很好.他们实际 上只是一些Coding fans.压根没有资格称为程序员.但是据我所知.不少小网络公司的 CTO就是这样的coding fans.拿着吓人的工资.做着吓人的项目.项目的结局通常也很吓人.
一.程序员基本素质
作一个真正合格的程序员.或者说就是可以真正合格完成一些代码工作的程序员.应该具有的素质.
1:团队精神和协作能力
把它作为基本素质.并不是不重要.恰恰相反.这是程序员应该具备的最基本的.也是最 重要的安身立命之本.把高水平程序员说成独行侠的都是在呓语.任何个人的力量都是有 限的.即便如linus这样的天才.也需要通过组成强大的团队来创造奇迹.那些遍布全球 的为linux写核心的高手们.没有协作精神是不可想象的.独行侠可以作一些赚钱的小软 件发点小财.但是一旦进入一些大系统的研发团队.进入商业化和产品化的开发任务.缺 乏这种素质的人就完全不合格了.
2:文档习惯
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子.良好的文档是正规研发流程中 非常重要的环节.作为代码程序员.30%的工作时间写技术文档是很正常的.而作为高级 程序员和系统分析员.这个比例还要高很多.
缺乏文档.一个软件系统就缺乏生命力.在未来的查错.升级以及模块的复用时就都会遇 到极大的麻烦.
3:规范化.标准化的代码编写习惯
作为一些外国知名软件公司的规矩.代码的变量命名.代码内注释格式.甚至嵌套中行缩 进的长度和函数间的空行数字都有明确规定.良好的编写习惯.不但有助于代码的移植和 纠错.也有助于不同技术人员之间的协作.
有些coding fans叫嚣高水平程序员写的代码旁人从来看不懂.这种叫嚣只能证明他们自 己压根不配自称程序员.代码具有良好的可读性.是程序员基本的素质需求.
再看看整个linux的搭建.没有规范化和标准化的代码习惯.全球的研发协作是绝对不可 想象的.
4:需求理解能力
程序员需要理解一个模块的需求.很多小朋友写程序往往只关注一个功能需求.他们把性 能指标全部归结到硬件.操作系统和开发环境上.而忽视了本身代码的性能考虑.有人曾 经放言说写一个广告交换程序很简单.这种人从来不知道在百万甚至千万数量级的访问情 况下的性能指标是如何实现的.对于这样的程序员.你给他深蓝那套系统.他也做不出太 极链的并访能力.性能需求指标中.稳定性.并访支撑能力以及安全性都很重要.作为程 序员需要评估该模块在系统运营中所处的环境.将要受到的负荷压力以及各种潜在的危险 和恶意攻击的可能性.就这一点.一个成熟的程序员至少需要2到3年的项目研发和跟踪经 验才有可能有心得.
5:复用性.模块化思维能力
经常可以听到一些程序员有这样的抱怨.写了几年程序.变成了熟练工.每天都是重复写 一些没有任何新意的代码.这其实是中国软件人才最大浪费的地方.一些重复性工作变成 了熟练程序员的主要工作.而这些.其实是完全可以避免的.
复用性设计.模块化思维就是要程序员在完成任何一个功能模块或函数的时候.要多想一 些.不要局限在完成当前任务的简单思路上.想想看该模块是否可以脱离这个系统存在. 是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用.这样就能极大避 免重复性的开发工作.如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到 这些问题.那么程序员就不会在重复性的工作中耽误太多时间.就会有更多时间和精力投 入到创新的代码工作中去.
一些好的程序模块代码.即便是70年代写成的.拿到现在放到一些系统里面作为功能模块 都能适合的很好.而现在我看到的是.很多小公司软件一升级或改进就动辄全部代码重 写.大部分重复性工作无谓的浪费了时间和精力.
6:测试习惯
作为一些商业化正规化的开发而言.专职的测试工程师是不可少的.但是并不是说有了专 职的测试工程师程序员就可以不进行自测,软件研发作为一项工程而言.一个很重要的特 点就是问题发现的越早.解决的代价就越低.程序员在每段代码.每个子模块完成后进行 认真的测试.就可以尽量将一些潜在的问题最早的发现和解决.这样对整体系统建设的效 率和可靠性就有了最大的保证.
测试工作实际上需要考虑两方面.一方面是正常调用的测试.也就是看程序是否能在正常 调用下完成基本功能.这是最基本的测试职责.可惜在很多公司这成了唯一的测试任务. 实际上还差的远那,第二方面就是异常调用的测试.比如高压力负荷下的稳定性测试.用 户潜在的异常输入情况下的测试.整体系统局部故障情况下该模块受影响状况的测试.频 发的异常请求阻塞资源时的模块稳定测试等等.当然并不是程序员要对自己的每段代码都 需要进行这种完整测试.但是程序员必须清醒认识自己的代码任务在整体项目中的地位和 各种性能需求.有针对性的进行相关测试并尽早发现和解决问题.当然这需要上面提到的 需求理解能力.
7:学习和总结的能力
程序员是人才很容易被淘汰.很容易落伍的职业.因为一种技术可能仅仅在三两年内具有 领先性.程序员如果想安身立命.就必须不断跟进新的技术.学习新的技能.
善于学习.对于任何职业而言.都是前进所必需的动力.对于程序员.这种要求就更加高 了.
但是学习也要找对目标.一些小coding fans们.他们也津津乐道于他们的学习能力.一 会学会了asp.一会儿学会了php.一会儿学会了jsp.他们把这个作为炫耀的资本.盲目 的追逐一些肤浅的.表面的东西和名词.做网络程序不懂通讯传输协议.做应用程序不懂 中断向量处理.这样的技术人员.不管掌握了多少所谓的新语言.永远不会有质的提 高.
善于总结.也是学习能力的一种体现.每次完成一个研发任务.完成一段代码.都应当有 目的的跟踪该程序的应用状况和用户反馈.随时总结.找到自己的不足.这样逐步提高. 一个程序员才可能成长起来.
一个不具备成长性的程序员.即便眼前看是个高手.建议也不要选用.因为他落伍的时候 马上就到了.
具备以上全部素质的人.应当说是够格的程序员了.请注意以上的各种素质都不是由IQ决 定的.也不是大学某些课本里可以学习到的.需要的仅仅是程序员对自己工作的认识.是一种意识上的问题.
温馨提示:内容为网友见解,仅供参考
无其他回答

做一名优秀的程序员需要什么条件?
(3).有坚韧不拔的精神,我们编的不是程,是寂寞。爱上程序设计,靠编程潜移默化性格,大多数成功的程序员都是相信自己的人,所以,多多鼓励自己一定是最好的。一、优秀程序员的标准 1. 能够准确地评估你的工作。2. 第一时间提交有质量的工作成果。3. 建立快速的反馈循环。4. 确保代码的准确性...

程序员需要哪些
一、全面的专业知识 程序员需要掌握全面的专业知识,包括但不限于编程语言、数据结构、算法、操作系统原理等。随着技术的快速发展,还需要不断学习和掌握新兴技术,如人工智能、大数据处理、云计算等。二、良好的逻辑思维能力 程序员需要拥有清晰的逻辑思维能力,能够准确理解并解决复杂的编程问题。逻辑思维不...

怎么做一个好的程序员?
想成为一名优秀的程序员,往往需要具备以下特质:1、始终保持工作热情 只有热爱才能做好一件事。尤其对于技术人员来说,程序员经常对着电脑一坐就是七八个小时,有时候赶项目还得在公司熬夜加班。如果不是真的热爱这份工作,光靠赚钱这个驱动力肯定是不足以支撑下去的。如果你每天都是一副上班比上坟还沉重...

什么是好程序员?
我认为好的程序员应该有以下几方面的素质: 1、有专研精神,勤学善问、举一反三。 2、积极向上的态度,有创造性思维。3、与人积极交流沟通的能力,有团队精神。 4、谦虚谨慎,戒骄戒燥。5、写出的代码质量高。包括:代码的稳定、易读、规范、易维护、专业。这些都是程序员的修养,这里我想谈谈...

做一个程序员要具备什么
1:团队精神和协作能力 ,和基本的操作常识,缺乏这种素质的人就完全不合格了。2.要有做文档的习惯,缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇 到极大的麻烦。 3:规范化,标准化的代码编写习惯 。4.代码具有良好的可读性,是程序员基本的素质需求。 5.程序员需要理解一个模块...

程序员最基本的要求是什么
程序员基本素质:作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具 有的素质。1:团队精神和协作能力 2:文档习惯 3:规范化,标准化的代码编写习惯 4:需求理解能力 5:复用性,模块化思维能力 6:测试习惯 7:学习和总结的能力 ...

程序员需要具备的哪些素质?
一、团队精神和协助能力 协助是一个团队里面不可或缺的精神,这是一种互相信任的无私奉献,在任何团队中,团队里面的队员都是互补的。对于一名优秀的程序员来说,他知道团队的力量是远远超过一个人的力量。在工作中没有个人主义,团队不仅强调个人的工作结果,更重要的是强调团队的整体表现。IT培训认为...

如果想成为一个程序员应该学习什么知识
学编程只是第一步。作一个真正合格的程序员,应该具有的素质:1:团队精神和协作能力 2:文档习惯 3:规范化的代码编写习惯 4:需求理解能力 5:模块化思维能力 6:测试习惯 7:学习和总结的能力 作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质:1、 需求分析...

一名优秀的程序员必备的素质
1:团队精神和协作能力 把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。任何个人的力量都是有限的,即便如linus这样的 天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。一旦进入系统的...

程序员408是什么意思
程序员408是一个特殊的名词,它来源于某些IT圈子里的黑话。一般情况下,它代表的是一群经验丰富,技术实力过硬的程序员,也被称为“神仙程序员”。不过这个称号并非所有程序员都愿意接受,因为它意味着巨大的学习压力和奋斗目标。梦想成为程序员408需要具备的素质 想要成为程序员408,需要具备过硬的编程能力...

相似回答