guoxiaolong00 2012-12-13
程序员在经历了若干年编程工作之后, 很想知道自己水平到底如何? 自己是否已经成为成熟的程序员? 虽然程序员会对自己有一个自我评价, 但是, 自己的评价和社会的评价、专业的评价会有差异, 所以程序员自己并不能肯定这个评价。
现实中, 除了各种证书之外, 很少有人会专门给出一个程序员的成熟度的评价。 人们往往是偶发性地就事论事地对程序员的工作作出好与不好, 行与不行的评论。 因此, 程序员对此感到很茫然, 不知道要从那些方面去评价自己的能力。
一个程序员到底成熟不成熟, 我想从以下几个方面谈谈自己的看法。
如果程序员不会编程序那决不是程序员, 程序员至少要掌握一门程序设计语言, 要 能够用这种语言去编写程序去解决他想解决的问题。 但是, 成熟的程序员往往掌握不止一种程序语言, 三到四种语言的掌握是必须的, 一种二种语言的精通也是必须的。
除了从掌握程序设计语言个数之外, 我们还可以从其他几个方面去看看程序员在技术上水平。 例如:
尤其是面向对象技术的掌握和运用, 以及面向服务的技术都是成熟程序员所必需掌握的。
虽然程序员的天资、素质、基础知识各不相同, 所经历的工作内容以及环境也不相同, 但是, 时间是程序员成熟程度的标志之一。 一般程序员需要经过三到五年的时间才能日趋成熟。 其中入门需要一年, 成长需要两年。俗话说:你的时间在哪里,你的成就就在哪里。
这是我经过长期观察得到平均数据。 我并不认为成熟时间越短程序员就越聪明, 就越了不起。 享受每个阶段充分的时间, 会让自己成长更加充实、更加成熟。 当然, 也有超期而不成熟的情况, 这也是很正常的。
程序员的社会性是程序员成熟的标志之一。
没有参加过项目的程序员, 程序编得再好, 只能是纯程序类的程序员, 是一个孤独的高手, 是一种个人型的程序员, 远没有成熟。 项目作为社会性活动, 体现了项目的社会价值。 所以项目能力也是程序员成熟的重要标志之一:项目能力包括参加项目的个数、项目的大小、在项目中承担的角色等等。
就项目承担的角色而言, 主持开发(项目经理)3个以上项目是必须的, 这是一个必要条件。 一个程序员如果没有主持过开发, 无论参加过多少项目的开发, 无论是在程序编写或项目设计上发挥了多大的作用, 是很难被称之为成熟的, 因为 项目的组织、协调和管理是反映一个程序员成熟程度的又一个标志。 就如同一个程序员能参与过10个以上大大小小的项目或能参加或能主持两个以上大型项目的开发, 其成熟程度是可以信赖的。 若低于此数, 则说明程序员离成熟还有相当的空间。
我们在项目中成长
可见项目对于程序员的意义是多么的巨大。
另外, 一般程序员只是为一个企业客户进行开发一个或多个项目, 或同行业的企开发项目, 如果程序员能够如果程序员能够开发过多个行业的项目, 其成熟度要比一般人要高一些。
幼稚和成熟在思维方式上还是有很明显的区别的。 就程序员而言, 不成熟的程序员逻辑性不强, 程序编得没有条理, 即使程序员自己进行了解释也没人能看懂。 而成熟的程序员应该具有很强的逻辑性, 程序编得井井有条, 不用解释别人也能看得懂。 这种逻辑性还体现在软件的构架设计、数据库设计、算法设计等多个方面。 程序员通过全集子集概念、时间概念、顺序概念、重点非重点概念等对各种事物进行逻辑分析。
例如, 以顺序概念为例, 不成熟的程序员往往会采用自底向上的思维方式来开发程序。 他们先考虑程序的具体实现, 然后再考虑功能设计、最后考虑构架设计。 而 成熟的程序员则采用自顶向下思维方式, 先考虑构架设计、再考虑功能设计、最后才考虑编程的具体实现。
前者思维方式主要是出于工作惯性, 只适合入门阶段, 而后者思维方式反映了后者的进步, 适用于各种项目开发或大型项目的开发。
除了在思维内容上的逻辑性之外, 程序员还应该处理好动脑和动手的关系。 重视思维本身就是一种成熟的标志。 成熟的程序员的思考时间要大于动手编程时间, 想好之后只要一次就编程成功, 而不成熟的程序员往往动手编程时间要远大于思考时间, 而且是边做边想, 通过反复来逼近最终目标。
另外, 在思维范围上, 成熟的程序员要比普通的程序员有更开放视野。 他们 更容易去接受新的东西, 更容易不受各种约束去考虑问题, 更勇于去挑战自己和高手。
很多人认为程序员是和计算机打交道的行业。 这只是这个职业的特点。 但是, 只要是工作必然就是一种社会劳动。 而社会劳动则必须和人进行交流和沟通。
尽管程序员的劳动工具是计算机, 但并不意味着程序员只想着这个工具。 从这个工具的下游来看, 程序员还是要考虑用这个劳动工具生产出来的软件产品是否有人购买, 是否有人使用, 是否运行正常, 从这个工具的上游来看, 是谁让程序员了解设计方案的, 是谁让程序员编程序的, 是谁让程序员程序通过验收的等等。
因此程序员在软件制作各个环节都会与其他人打交道。 只有和人进行有效的交流和沟通我们的工作才能进行下去才能做的更好。
如果一个程序员还沉浸在个人劳动的意境之中, 对外界持有冷漠、无奈、恐惧的心理, 内心里不愿意和外界打交道, 无论自己感觉自己的技术水平有多高, 还是一个不成熟的程序员。 而 成熟的程序员一定是特别重视与人的交往, 无论是上级领导、外部客户、项目经理、团队同伴这些与自身工作密切相关的人还是那些非同单位同行朋友、 网友等他们都会认真去听取别人的阐述、要求、意见、建议、反馈等。
从中得到更多的工作上的、技术上的、生活上的好的想法, 以便自己参考和吸收。 与此同时, 与人交往也反映你有好的想法和好的技术水平交流出去, 而这些想法和技术水平也是你成熟度一种反映。 那些没有想法和技术水平的程序员的确是怕和别人交流的。
与人交流的有两个基本能力, 一个是理解能力, 一个是表达能力。 两者缺一不可。 例如, 有的程序员理解能力差, 不能理解项目经理提出的要求, 有的程序员表达能力差, 无逻辑, 无重点, 啰里啰唆, 让别人不知所云。 这都是不成熟的表现。
别人的评价尤其是单位同事以及对自己工作情况比较了解的人对自己的评价是有参考价值的。 一般而言, 评价差的, 一定是不行的, 是不成熟的。 评价好的要看情况而定, 单位同事对人的评价会从两个方面来考虑, 一个是这个人的为人情况, 一个是这个人的工作能力。 如果两者都不错, 我们有理由认为这个程序员是成熟的。 反之, 无论是工作能力强, 但为人不好, 为人很好, 工作能力不强, 我看都不能算一个成熟的程序员。
所以, 程序员要注重别人对自己的评价, 在提高自己技术水平的同时, 学会做人, 做好人, 学会与他人分享, 这样别人才会给自己更好的评价。
无视别人评价其实, 也是一种不成熟的表现。只有自己感觉好, 大家感觉好, 那才是真的好。
其实, 别人的评价如果仅限于自己单位的话, 恐怕这种评价的价值会打折扣, 如果这个单位技术人员的人数很少, 水平普遍很低, 即使你鹤立鸡群, 大家对你的评价很好, 但是, 你和其他公司和单位的程序员来比, 你真的不一定的成熟。 所以, 我说 别人的评价仅仅是一个参考。
收入也是成熟程序员一个参考标志。 收入的大小往往是对程序员社会价值的认可度, 表明程序员的劳动值这个价钱。 一般而言, 成熟的程序员能够挣得软件业平均收入的中上水平, 或者在一个单位或部门中能够挣得比80%左右员工要高的收入。 而刚参加工作不久的程序员收入应该与其相差很大的。 另外, 单位的项目奖金发放也可以看出程序员在项目中的地位和作用。
现实中, 我们知道程序员的收入和其付出是不是正比的, 而且, 越是能力强的、贡献大的程序员, 可能不一定比那些不如其它能力不如他的程序员高出许多。 这不是软件行业的通病, 几乎所有行业都存在这种情况。
通过分析我们认为程序员成熟度应该是和其收入高低挂钩的。 如果, 我们知道我们能力和贡献大大超出我们的收入, 我们就有理由向上级领导提出自己的收入要求。
程序员常常面对各种各样的成功和失败, 尤其是失败更是多于成功, 这也是程序员这个职业特点之一。 以编程为例, 几乎没有一个人一次就能把程序给编好的, 它总是要遇到各种语法错误, 总要遇到各种遗漏, 一个程序要反复多次修改调试才能完好。 有的程序员因找不出来程序的bug, 束手无措, 哀声叹气, 心里极其不爽。
以工作为例, 有的程序员因工作进度和程序出错常常受到别人的批评和指责, 心里极其不满, 认为批评人不了解造成这个结果的客观原因, 批评错了人。 从而对人产生意见, 甚至对工作造成了影响。
面对失败和挫折, 成熟的程序员会坦然面对:编程时出现问题不可怕, 有什么问题就解决问题, 解决不了的问题可以想其他方法进行解决, 不在一棵树上吊死。 面对别人的批评和指责, 首先从自身查问题, 是自己的问题, 那就要主动承担责任, 并尽快改正。 不是自己的问题, 应该换位思考, 理解批评人的焦急心态, 并找机会给予说明。
良好的心理素质在面对困难和挫折的时候, 就会很坦然, 很坚强, 很自信。
程序员也会面对成功的。 有些程序员因开发了某个项目, 因编写了某个程序而感觉良好, 在不自觉中表现出我最牛, 我最好的样子, 面对他人夸夸其谈, 而对其他人不屑一顾。 而更有甚者并其无成果, 表现平平, 却依然会摆出一个高手的样子, 有的仅仅参与了某个项目, 而且不是项目主要开发者, 却会贪天之功, 归其所有, 好像这个项目是他主持开发的。
这些其实也是心理素质不成熟的另一种表现。 成熟的程序员面对成功并不会感觉到高人一等, 该是自己的功劳就是自己的功劳, 该是别人的功劳就是别人的功劳, 即使自己比别人水平高出许多, 他还是在想还有更高的技术顶峰等待攀登, 不可自傲, 看到别人取得的成绩首先感到去祝贺, 然后去学习, 而不是心怀嫉妒, 从中挑刺, 尽量贬低。
良好的心理素质使得程序员更加理性地处理好各种成功和失败带来的各种问题, 更有利于程序员超越自我, 以平常之心去迎接更大的挑战。
当然一个程序员是否成熟是一个仁者见仁, 智者见智的话题。 有的人强调程序员的个人能力方面, 有的人强调是程序员的社会能力方面。
我认为从以上8个方面综合地去评判一个程序员是否成熟应该能说明些问题了。 我们标志成熟, 一个目的是 对程序员前面成长过程给与一个肯定和鼓励, 让程序员认清自己的所处的阶段, 让自信找出依据。 另外一个目的是 对程序员未来成长提出更高的要求,走向优秀是程序员面临的更大的挑战。
原文链接:http://www.cnblogs.com/n216/archive/2011/05/16/2047327.html