程序员在经历了若干年编程工作之后,很想知道自己水平到底如何?自己是否已经成为成熟的程序员?虽然程序员会对自己有一个自我评价,但是,自己的评价和社会
的评价、专业的评价会有差异,所以程序员自己并不能肯定这个评价。现实中,除了各种证书之外,很少有人会专门给出一个程序员的成熟度的评价。人们往往是偶
发性地就事论事地对程序员的工作作出好与不好,行与不行的评论。因此,程序员对此感到很茫然,不知道要从那些方面去评价自己的能力。
一个程序员到底成熟不成熟,我想从以下几个方面谈谈自己的看法。
1、技术标志
如果程序员不会编程序那决不是程序员,程序员至少要掌握一门程序设计语言,要能够用这种语言去编写程序去解决他想解决的问题。但是,成熟的程序员往往掌握不止一种程序语言,三到四种语言的掌握是必须的,一种二种语言的精通也是必须的。
除
了从掌握程序设计语言个数之外,我们还可以从其他几个方面去看看程序员在技术上水平。例如,函数编写能力(命名、格式、大小、分类、参数、复用等),面向
过程的能力,面向对象的能力,数据库技术能力,效率处理能力,安全处理能力,网络处理能力,软件构架能力,人机交互能力,通用软件能力,软件文档能力等
等。尤其是面向对象技术的掌握和运用,以及面向服务的技术都是成熟程序员所必需掌握的。
2、时间标志
虽
然程序员的天资、素质、基础知识各不相同,所经历的工作内容以及环境也不相同,但是,时间也是程序员成熟程度的标志之一。一般程序员需要经过三到五年的时
间才能日趋成熟。其中入门需要一年,成长需要两年。这是我经过长期观察得到平均数据。我并不认为成熟时间越短程序员就越聪明,就越了不起。享受每个阶段充
分的时间,会让自己成长更加充实、更加成熟。当然,也有超期而不成熟的情况,这也是很正常的。
3、项目标志
程
序员的社会性是程序员成熟的标志之一。没有参加过项目的程序员,程序编得再好,只能是纯程序类的程序员,是一个孤独的高手,是一种个人型的程序员,远没有
成熟。项目作为社会性活动,体现了项目的社会价值。所以项目能力也是程序员成熟的重要标志之一:项目能力包括参加项目的个数、项目的大小、在项目中承担的
角色等等。就项目承担的角色而言,主持开发(项目经理)3个以上项目是必须的,这是一个必要条件。一个程序员如果没有主持过开发,无论参加过多少项目的开发,无论是在程序编写或项目设计上发挥了多大的作用,是很难被称之为成熟的,因为项目的组织、协调和管理是反映一个程序员成熟程度的又一个标志。就如同一个程序员能参与过10个以上大大小小的项目或能参加或能主持两个以上大型项目的开发,其成熟程度是可以信赖的。若低于此数,则说明程序员离成熟还有相当的空间。“我们在项目中成长”可见项目对于程序员的意义是多么的巨大。
另外,一般程序员只是为一个企业客户进行开发一个或多个项目,或同行业的企开发项目,如果程序员能够如果程序员能够开发过多个行业的项目,其成熟度要比一般人要高一些。
4、思维标志
幼
稚和成熟在思维方式上还是有很明显的区别的。就程序员而言,不成熟的程序员逻辑性不强,程序编得没有条理,即使程序员自己进行了解释也没人能看懂。而成熟
的程序员应该具有很强的逻辑性,程序编得井井有条,不用解释别人也能看得懂。这种逻辑性还体现在软件的构架设计、数据库设计、算法设计等多个方面。程序员
通过全集子集概念、时间概念、顺序概念、重点非重点概念等对各种事物进行逻辑分析。例如,以顺序概念为例,不成熟的程序员往往会采用自底向上的思维方式来
开发程序。他们先考虑程序的具体实现,然后再考虑功能设计、最后考虑构架设计。而成熟的程序员则采用自顶向下思维方式,先考虑构架设计、再考虑功能设计、
最后才考虑编程的具体实现。前者思维方式主要是出于工作惯性,只适合入门阶段,而后者思维方式反映了后者的进步,适用于各种项目开发或大型项目的开发。
除
了在思维内容上的逻辑性之外,程序员还应该处理好动脑和动手的关系。重视思维本身就是一种成熟的标志。成熟的程序员的思考时间要大于动手编程时间,想好之
后只要一次就编程成功,而不成熟的程序员往往动手编程时间要远大于思考时间,而且是边做边想,通过反复来逼近最终目标。
另外,在思维范围上,成熟的程序员要比普通的程序员有更开放视野。他们更容易去接受新的东西,更容易不受各种约束去考虑问题,更勇于去挑战自己和高手。
5、与人交往
很
多人认为程序员是和计算机打交道的行业。这只是这个职业的特点。但是,只要是工作必然就是一种社会劳动。而社会劳动则必须和人进行交流和沟通。尽管程序员
的劳动工具是计算机,但并不意味着程序员只想着这个工具。从这个工具的下游来看,程序员还是要考虑用这个劳动工具生产出来的软件产品是否有人购买,是否有
人使用,是否运行正常,从这个工具的上游来看,是谁让程序员了解设计方案的,是谁让程序员编程序的,是谁让程序员程序通过验收的等等。因此程序员在软件制
作各个环节都会与其他人打交道。只有和人进行有效的交流和沟通我们的工作才能进行下去才能做的更好。
如
果一个程序员还沉浸在个人劳动的意境之中,对外界持有冷漠、无奈、恐惧的心理,内心里不愿意和外界打交道,无论自己感觉自己的技术水平有多高,还是一个不
成熟的程序员。而成熟的程序员一定是特别重视与人的交往,无论是上级领导、外部客户、项目经理、团队同伴这些与自身工作密切相关的人还是那些非同单位同行
朋友、网友等他们都会认真去听取别人的阐述、要求、意见、建议、反馈等。从中得到更多的工作上的、技术上的、生活上的好的想法,以便自己参考和吸收。与此
同时,与人交往也反映你有好的想法和好的技术水平交流出去,而这些想法和技术水平也是你成熟度一种反映。那些没有想法和技术水平的程序员的确是怕和别人交
流的。
与人交流的有两个基本能力,一个是理解能力,一个是表达能力。两者缺一不可。例如,有的程序员理解能力差,不能理解项目经理提出的要求,有的程序员表达能力差,无逻辑,无重点,啰里啰唆,让别人不知所云。这都是不成熟的表现。
6、别人评价
别
人的评价尤其是单位同事以及对自己工作情况比较了解的人对自己的评价是有参考价值的。一般而言,评价差的,一定是不行的,是不成熟的。评价好的要看情况而
定,单位同事对人的评价会从两个方面来考虑,一个是这个人的为人情况,一个是这个人的工作能力。如果两者都不错,我们有理由认为这个程序员是成熟的。反
之,无论是工作能力强,但为人不好,为人很好,工作能力不强,我看都不能算一个成熟的程序员。
所以,程序员要注重别人对自己的评价,在提高自己技术水平的同时,学会做人,做好人,学会与他人分享,这样别人才会给自己更好的评价。
无视别人评价其实,也是一种不成熟的表现。只有自己感觉好,大家感觉好,那才是真的好。
其实,别人的评价如果仅限于自己单位的话,恐怕这种评价的价值会打折扣,如果这个单位技术人员的人数很少,水平普遍很低,即使你鹤立鸡群,大家对你的评价很好,但是,你和其他公司和单位的程序员来比,你真的不一定的成熟。所以,我说别人的评价仅仅是一个参考。
7、收入标志
收入也是成熟程序员一个参考标志。收入的大小往往是对程序员社会价值的认可度,表明程序员的劳动值这个价钱。一般而言,成熟的程序员能够挣得软件业平均收入的中上水平,或者在一个单位或部门中能够挣得比80%左右员工要高的收入。而刚参加工作不久的程序员收入应该与其相差很大的。另外,单位的项目奖金发放也可以看出程序员在项目中的地位和作用。
现
实中,我们知道程序员的收入和其付出是不是正比的,而且,越是能力强的、贡献大的程序员,可能不一定比那些不如其它能力不如他的程序员高出许多。这不是软
件行业的通病,几乎所有行业都存在这种情况。通过分析我们认为程序员成熟度应该是和其收入高低挂钩的。如果,我们知道我们能力和贡献大大超出我们的收入,
我们就有理由向上级领导提出自己的收入要求。
8、心理素质
程序员常常面对各种各样的成功和失败,尤其是失败更是多于成功,这也是程序员这个职业特点之一。以编程为例,几乎没有一个人一次就能把程序给编好的,它总是要遇到各种语法错误,总要遇到各种遗漏,一个程序要反复多次修改调试才能完好。有的程序员因找不出来程序的bug,
束手无措,哀声叹气,心里极其不爽。以工作为例,有的程序员因工作进度和程序出错常常受到别人的批评和指责,心里极其不满,认为批评人不了解造成这个结果
的客观原因,批评错了人。从而对人产生意见,甚至对工作造成了影响。面对失败和挫折,成熟的程序员会坦然面对:编程时出现问题不可怕,有什么问题就解决问
题,解决不了的问题可以想其他方法进行解决,不在一棵树上吊死。面对别人的批评和指责,首先从自身查问题,是自己的问题,那就要主动承担责任,并尽快改
正。不是自己的问题,应该换位思考,理解批评人的焦急心态,并找机会给予说明。良好的心理素质在面对困难和挫折的时候,就会很坦然,很坚强,很自信。
程
序员也会面对成功的。有些程序员因开发了某个项目,因编写了某个程序而感觉良好,在不自觉中表现出我最牛,我最好的样子,面对他人夸夸其谈,而对其他人不
屑一顾。而更有甚者并其无成果,表现平平,却依然会摆出一个高手的样子,有的仅仅参与了某个项目,而且不是项目主要开发者,却会贪天之功,归其所有,好像
这个项目是他主持开发的。这些其实也是心理素质不成熟的另一种表现。成熟的程序员面对成功并不会感觉到高人一等,该是自己的功劳就是自己的功劳,该是别人
的功劳就是别人的功劳,即使自己比别人水平高出许多,他还是在想还有更高的技术顶峰等待攀登,不可自傲,看到别人取得的成绩首先感到去祝贺,然后去学习,
而不是心怀嫉妒,从中挑刺,尽量贬低。
良好的心理素质使得程序员更加理性地处理好各种成功和失败带来的各种问题,更有利于程序员超越自我,以平常之心去迎接更大的挑战。
当然一个程序员是否成熟是一个仁者见仁,智者见智的话题。有的人强调程序员的个人能力方面,有的人强调是程序员的社会能力方面。我认为从以上8个方面综合地去评判一个程序员是否成熟应该能说明些问题了。我们标志成熟,一个目的是对程序员前面成长过程给与一个肯定和鼓励,让程序员认清自己的所处的阶段,让自信找出依据。另外一个目的是对程序员未来成长提出更高的要求。走向优秀是程序员面临的更大的挑战。
看来自己还有很长的路要走,路漫漫其修远兮,吾将上下而求索;
转自:http://www.cnblogs.com/n216/archive/2011/05/16/2047327.html
分享到:
相关推荐
在软件开发的世界中,程序员的...这些经验不仅提升了软件开发的质量和效率,更成为了程序员专业成长与成熟的标志。通过在实战中不断磨砺这些经验,程序员可以更好地适应多变的开发环境,为用户提供更加优质的软件产品。
成为优秀的程序员不仅在于编写高质量的代码,更重要的是养成一系列有益的习惯,这些习惯能够提升个人技能,促进团队协作,以及保持对技术的...记住,优秀程序员的标志不只是编写代码,更是如何高效、灵活和合作地工作。
这类壁纸可能会包含各种编程语言的Logo、知名开源项目标识、科技巨头的标志,或者是富有深意的编程语录。它们不仅能彰显程序员的专业性,也是他们热爱技术、追求卓越的一种表达方式。 在压缩包内的"程序猿专属壁纸...
例如,一张包含流行编程语言标识的图片,比如Python的可爱蛇形标志或是JavaScript中常见的咖啡杯图案,能瞬间唤起程序员对编程的热情,同时也能成为他们与同行交流时的共同话题。 此外,桌面背景图片中常见的幽默...
再者,良好的问题解决能力和系统设计能力是程序员进阶的标志。这需要培养抽象思维和逻辑分析能力,学会用模块化的方式思考问题,设计出可扩展、易维护的系统。可以通过参与开源项目,或者在工作中接手复杂问题来锻炼...
5. **自我价值的实现**:找到工作并获得报酬,不仅是经济独立的标志,也是个人能力和价值得到社会认可的表现。 这位老程序员的故事激励我们要不断学习和进步,克服困难,追求专业成长,同时也提醒我们在编程实践中...
8. **代码质量意识**:编写整洁、可读性强的代码是优秀程序员的标志。遵循编程规范,注重代码的可维护性和可测试性,可以避免未来可能出现的技术债务。 9. **学习能力**:随着技术的更新换代,持续学习新技能是必须...
它们反映了程序员这一群体的独特魅力,无论是作为个人的时尚选择,还是作为团队的认同标志,亦或是作为对程序员职业的尊重和理解的表达方式,这些服饰都是极好的选择。在数字化时代的大潮中,这些具有文化内涵的服饰...
程序员考试复习资料主要涵盖了数据结构、计算机操作、文字处理、计算机安全、数值转换、程序控制结构、网络模型以及计算机硬件等多个方面的知识。 一、数据结构与算法 链表是一种非顺序存储线性表,它的特点是元素...
3. **设计模式与架构**:了解并能够应用设计模式是高级程序员的标志。面试中可能会讨论面向对象的设计原则和系统架构,如单例模式、工厂模式等。 4. **软件工程与敏捷开发**:理解软件开发的生命周期,包括需求分析...
它标志着程序员从一个公司或项目的结束,并开始新的职业发展旅程。 知识点2:职业发展规划 在程序员的离职申请书中,藏着程序员对未来的职业发展规划。这份申请书通常会包含程序员目前的职业状况、未来的职业目标...
能够熟练使用调试工具(如gdb)、构建自动化脚本(如makefile),以及进行代码优化,都是专业程序员的标志。 #### 开源项目实践 参与开源项目不仅能提升编程技能,还能增强团队协作能力和项目管理经验。选择一个与...
程序员转正申请PPT模板是程序员在职业发展中非常重要的一步,标志着程序员从实习期到正式员工的转变。该PPT模板为程序员提供了一个详细的自我评价和职业发展规划的模板,帮助程序员总结过去的经历,规划未来的发展...
80386,也称为i386,是Intel公司在1985年推出的一款32位微处理器,它的出现标志着个人计算机性能的一次重大飞跃。此处理器的引入为后来的x86架构奠定了基础,而这一架构至今仍然是桌面计算领域的主导力量。 80386...
第七版的UNIX程序员手册出版于1979年,标志着UNIX系统的发展进入了一个新的阶段。虽然这一版本不再直接署名肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie),但两人作为UNIX的创始人和导师,对系统的...
《程序员创刊号》标志着一个专注于信息技术和编程领域的专业杂志的诞生。这本杂志的首期内容可能涵盖了各种与程序员相关的主题,旨在为这个日益壮大的群体提供最新的技术资讯、深度分析、实战经验以及行业洞察。 在...
同时,接受和给出建设性反馈的能力也是程序员成长的标志。 9. **项目管理和敏捷方法**:可能涵盖了敏捷开发框架,如Scrum或Kanban,以及如何进行有效的项目规划和迭代管理。 10. **性能优化与资源管理**:讲解如何...
程序员开始反思自己的代码,力求编写出更好的程序,这标志着从初学者向熟练工的转变。 5. **库函数与模块化阶段**: 这时,程序员开始关注代码的复用性,编写库函数,实现代码模块化。这样可以提高效率,减少重复...
2008 年,Android 1.0 版本正式发布,标志着 Android 的正式开始。 三、下载和安装 Eclipse Eclipse 是一个流行的集成开发环境(IDE),广泛应用于 Android 应用程序开发。要开始 Android 应用程序开发,需要下载...