优秀程序员的标准是什么

时间:2019-05-14 16:20:43下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《优秀程序员的标准是什么》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《优秀程序员的标准是什么》。

第一篇:优秀程序员的标准是什么

优秀程序员的标准是什么!

无数的人问过类似的问题,怎么样才能做一个优秀程序员?在回答这个问题之前,首先得明白什么是优秀程序员,这样才有方向和目标,可是这事情太主观,可能各人的标准千差万别,不谈那些传奇性的独自一人做出伟大事情的特例,也不谈什么上天入地,上帝大牛的诡论,以下是广泛比较认可的,在通常的项目开发中,一个优秀程序员的标准。

解决问题的能力

在项目开发中,一个程序员的能力等于其解决问题的能力。假如想有个尺度来衡量这个能力的话,一个程序员的能力可以用能完成任务的规模和难度来衡量。

因为难度上不好那么简单的划分,并且在一般的项目开发中(非研究性项目),任务的难度主要来自于任务的规模带来的复杂度,这里把任务从规模上大致的划分为1个函数=>1个类=>1个功能=>1个模块=>1个项目

更细致的划分时,函数,类,功能,模块,项目本身也有简单和规模大小之分。

一个初学编程的人总是从最小的函数和类开始学习的。

一个程序员能基本无误的完成项目中的一个功能算是合格,在此之前,对项目的生产力为负,即为他布置任务,沟通,和为他修补bug的时间其实要多于自己直接完成该功能的时间。也就是说,项目中存在这个水平的程序员纯粹是为了培养人才。

能较好完成一个完整模块的程序员算是较好的程序员,也是一般项目中的主要开发者。

能完成整个项目的程序员才能算是好的程序员。在多人项目中可做主程。

不同规模的任务主要的问题也体现在不同的方面:

对于初学者来说,写好一个函数和类的难点在于语言本身的语法上。

对于完成一个功能来说,难点在于理解这个功能,以及很好的在现有的代码中加入此功能,完成的功能不是独立于项目之外的,而是要融入项目本身,除了功能本身和其他功能衔接正常无误外,特别重要的就是注意功能实现后不能对其他功能产生预期外的影响,作为游戏开发来说,典型的例子就是你完成的UI不能让其他该显示的UI显示有问题,不该显示的UI又没有消失。

对于完成一个模块来讲,暴露给外部的接口设计比内部实现的设计同样重要(甚至更加重要),合理易使用的接口设计决定了一个模块的好坏。模块内部实现不好尚可更改,接口实现不好,更改起来可能是灾难性的。

对于一个项目来讲,在正确的地方使用正确的解决方案是最重要的事情,最开始的技术选型直接决定项目的成败,模块的划分能决定项目的开发速度,架构的设计能决定项目的维护难度和增加需求时的痛苦程度。对于多人项目来说,主程让正确的人去做正确的事情也是无比的重要。

什么决定了一个程序员解决问题的能力呢?我认为有如下几个因素:

知识积累

在同等水平的程序员之间,一个对某领域问题有所了解,一个对该领域完全不了解,完成该领域同样任务的效率差了不止一个数量级。这就是我们通常所说的“经验”的作用,这种经验可以看作是知识积累,一个程序员的知识积累很大程度上决定了其解决问题的能力。

有意思的是,因为经验这个事情不太好有准确的衡量标准,我们为了简单,常常就拿工作几年说事,但是这种粗暴的标准有很大的问题,工作年限同样长的人水平差异可以是巨大的。

按老话说,用一年的经验工作二十年并不等同于二十年工作经验。

自学能力

这是一个知识大爆炸,知识刷新频率让人无法追赶的时代。一方面,面对一个稍有难度的任务,难免会有超出自己现有的知识范围的时候,此时自学能力决定了你能多快的完成此任务(或能否完成此任务)。另一方面,你的自学能力决定了在平时的工作过程中,你积累知识的多少。

自学能力强的人,即使没有人指点也总能在项目的代码中学到东西。而反过来,学习意愿弱的人写的代码被别人重构后,也不会想想,这段代码是否改的更好了以及为什么。同时,一个自学能力强的人也更有希望主动的在业余去学习更多的知识,而不是直到工作中碰到才去被动学习。

从较长的尺度上(比如一个人的工作生涯)来看,一个程序员知识积累的多少只决定于其自学能力和他对编程本身的兴趣。

品味

本来我是想把一个程序员的品味单独列出来的,后来仔细想想,一个程序员的品味其实不是一种天生的能力,而是基于现有知识的积累,形成的对事物的看法。所以把品味放在自学能力下面的。同样的,其实通常说的正确的思维模式和方法,其实也是来自于知识的积累。这里我就根本不提这一条了。

品味往往用于形容一个人对时尚衣着,食物等的看法,其实对程序员来说,品味也很重要。

不同的品味不仅决定了不同的语言设计者怎么设计编程语言,也决定了一个程序员在做项目时会使用什么语言,什么框架。

不同的品味决定了你会选择什么样的操作系统,什么样的工具,用什么样的代码规范。

不同的品味甚至还决定了你会选择什么样的职业发展方向,什么样的平台,开发什么东西。

对代码的品味决定了你看到一段不好的代码就能“闻到坏味道”,对解决方案的品味决定了你在开源/闭源,激进/保守,简单/功能强大但复杂等解决方案之间的选择。

了解正确的做事方法

这里提及的正确的做事方法不是指写代码这个层面上的,而是指一个项目进行过程中碰到问题的解决方法,比如在需求不明确的时候知道需要先明确需求,知道自己需要先理解问题了然后再开始真正的进入代码层面的工作,知道碰到什么问题能自己独立的解决,知道碰到什么问题自己需要先和其他人沟通了再决定。知道自己需要先测试才能保证自己代码的质量等。

这些问题说起来简单,但是不这么做的话,常常带来让人无语的后果。一个好的程序员,起码要先了解这些。

沟通的能力

知识的积累很大程度上决定了一个程序员解决问题的能力,但那好歹是只要努力就能学到的东西,而以下这些,我甚至都不明白差异的形成是在我们很小的时候就定下来了,还是在工作中还能继续学习。在一个分工明确的项目中,程序员需要和产品(策划)沟通以理解产品,和上级沟通以理解自己的任务,和同事们沟通以正确的理解要接入的模块。无论哪一个方面沟通出了问题都不是小事情,同时,程序还需要正确的给产品(策划)传达设计的实现难度,以及在自己完成模块时让别人正确的理解模块的接口。在不写文档时,正确的口头沟通非常重要,需要写文档时,文档的写作能力也算做是沟通能力的一部分。

如上所述,沟通的能力非常重要,但是好的程序员似乎天生就不太会沟通,你会发现很多技术顶尖的人,其实本身就是有社交障碍或者自闭症,因为自闭,才能心无旁骛的潜心钻研技术,达到更高的技术水平,很难想象一个“社会活动家”,他哪有那么多功夫去学习,没有时间学习,又怎么能成为一个技术顶尖的人。这是一个两难的问题。就理想的情况来看,一个程序员最好是沟通能力足够好(能正确完成上述沟通工作),但是又能足够的静下心来学习和钻研。当然,这是最理想的情况,在实际中,两者之间的较大波动范围都算是可以接受的好程序员标准。

对工作负责,对代码有追求

对工作态度消极,代码总等到别人来测试,写代码以完成功能为唯一标准,也不管bug是否成堆,代码是否丑陋不堪,这种程序员就算是工作一万年也成不了好程序员。

一个好程序员就该对自己的工作负责,对自己的代码有追求,不仅要完成功能,还要代码优美,不说要把代码写成艺术品,起码也要当作自己的脸面来维护。一个程序员不能容忍自己的脸上乱七八糟,那么也同样不应该能容忍自己的代码乱七八糟。

事实上,别的程序员在了解你之前,先看到的是你的代码,通过代码,就能知道你是怎么样一个人。项目紧,随手写,以后改都不能成为写烂代码的理由。

一个好程序员,起码是想要把任务完成好的,起码是想要把代码写好的,不然如何能称其为“好”。怎么提高自己解决问题的能力?

其实转了这么大个弯,怎么样做一个好的程序员的问题可以转为问怎么提高自己解决问题的能力。

沟通能力,对工作负责任的态度,对代码的追求,很大程度上由性格决定,我不知道实际中怎么简单的去提高,这里只稍微的谈谈我对知识积累的一些看法吧。

第二篇:程序员绩效评价标准(小编推荐)

绩效评价标准

总则:

通过量化的指标准确的评定软件开发人员的绩效,从而对薪酬分配提供可靠的依据。

 基本说明:

绩效评价,包括业绩考核和能力评定。对软件开发人员的绩效评定,每一项问答表现优秀加一分,表现不佳扣一分,表现平平不得分,最后计算总分。 业绩考核:

此项考核主要考核在一定时间内软件开发人员的任务完成情况。主要包括有以下指标:目标的完成度、难易度、贡献度。

目标完成度 ●完成情况:

能否总是在规定期限内完成工作?或者尚能在规定的时限内完成工作,还是经常需要上级的催促才能按时完成工作,或者一贯拖延工作期限,即便在上级的催促下也不能按时完成工作?

在困难或者环境变化的情况下,是否也完成了计划的工作?

是否很快、很迅速、高标准、高质量、创造性的完成交给的工作?

是否在完成工作的同时,又能很好地控制成本?

如果工作没有完成是由于环境的变化还是个人能力的问题?或者是工作太多了,根本无法完成?

在工作中是仅仅要求完成任务还是主动进行工作流程的改进,高效运用相关资源来解决工作中出现的问题?

上级人员交给其工作时是否放心? ●完成质量:

提交的程序是否经常出现很多BUG?是否经常需要修正或调整?编码是否严格遵守代码规范性?用户对其开发的软件是否满意? ●完成时间:

总是提前完成任务,还是总是强调客观原因而无法准时完成任务?是否经常需要有人催促才能完成工作? 难易度

所完成的工作是否是一般人不愿意干的工作?或者是很烦很累枯燥无味的工作?

所完成的工作是一般程序员都可以充分达成的目标,还是不易达成的挑战性目标?

如果本人不在,本部门或本小组是否有替代的人?

贡献度

其所作的工作对公司创造了多少直接效益?多少间接效益?或者降低了多少成本?

工作完成后的成本情况如何?是否有效地控制成本?

是否在圆满完成本职工作以外,还积极主动地从事其它相关事情?

是否尽力为公司创造最大利益,在各方面尽了最大努力并取得了一定的成果?

能力评定:

能力评定是通过对员工的日常工作的工作表现,观察、分析、评价其所具备的工作能力。对其开发人员的能力评定,主要包括以下几项:技术能力、理解力、沟通能力、主动性、团队精神、领导能力。领导能力用于项目经理评价。技术能力 ●业务知识:

上级交待工作时是迅速、准确地抓住工作的关键还是反应迟钝,迟迟不能理解?

是否在一个月内就迅速熟悉了新岗位的工作?还是在新岗位工作超过三个月了还对许多业务流程不很熟悉,从而不得不经常问别人?

是否经常有人来请教相关技术问题还是总是有问题问别人?

是否本部门有一些业务只有他熟悉? ●解决问题能力: 在自己的工作中遇到障碍是自己独立解决还是遇到不懂的问题就立刻问别人?

是否一些新知识从未学过,却能很快地上手?

是否为实现目标和解决问题努力寻找合理的新方案?

遇到难题,是否能坚持不懈地完成工作? ●市场能力:

在编写程序时是否总是考虑使用者的需求?

在编写程序时是注重界面的实用性、客户的满意度还是老谈所谓的概念,技术?

●工作效率:

在工作中是否有很强的工作效率意识?

是否总是比别人快地完成任务?

理解力

是否总是迅速地掌握部门或上司的方针,并准确地反映到程序开发当中?同时常常能够立刻提出更好的解决方案?

是否迅速理解客户的需求?

布置任务是否不能很快理解,总是反复询问?

交待任务时是否总是显示出迷惑不解的表情?

沟通能力

是否能够很好地和同事相处?是否乐于帮助别人?特别是对后来者给与积极帮助?

对上司、外来人员的言谈举止是否富有礼节?

是否给人以诚实、开朗的印象?

是否属于高傲的人?是否很少有朋友,而且常与人有无谓的争执? 和人谈话时是否认真倾听对方的诉说,虚心接受对方的意见? 主动性

是否对公司的状况提出过建议、意见和合理化建议?

开发程序中是否努力改善工作质量,以一贯的态度将工作从头到尾做完,并使程序尽善尽美,一定要把工作做完才离开公司。还是常说“算了,就这样吧?!”之类的言语?

在工作中给人的感觉是踏实,有始有终还是懒懒散散,吊儿郎当?

上班时是否常打私人电话,是否经常浏览不相关的网页?

是否上级没有具体指示之前自觉完成业务?是否经常寻找与自己业务相关的业务做?

是否积极学习业务知识?对其不在监督也能迅速的完成任务?

是否对上司是否有敷衍的情况?是否有辞职或调动的打算?是否经常对公司抱怨?是否对别人不愿意干的工作也主动承担?

是否具有不满足于现状,积极奋进的精神还是有过一天算一天的想法?

团队精神 ●纪律性:

是否遵守理解公司各种规章制度而努力?并能规劝他人? 是否努力理解上级的批命令并圆满的贯彻执行?

是否严格遵守工作时间?有无经常迟到、早退、无故缺勤的情况?

在工作时间里是否热衷于工作? ●主人翁精神:

是否存在浪费的现象?

是否经常利用职务之便为自己牟利?

是否注意收拾和整理工作场所? ●协作性:

是否能和同事很好的合作?是否使人觉得经常多嘴多舌、指手划脚?

是否不推不动,只求自己方便、合适?

是否经常支持并积极参加公司各种活动? 领导能力

是否能组织手下员工高效地工作?

是否能促使本组员工和睦相处、团队协作?

是否能关心手下员工,鼓励优秀、批评落后?

是否积极地帮助手下员工?

第三篇:一标准程序员的表白(范文模版)

一标准程序员的表白

我能抽象出整个世界...

但是我不能抽象出你...

因为你在我心中是那么的具体...

所以我的世界并不完整...

我可以重载甚至覆盖这个世界里的任何一种方法...

但是我却不能重载对你的思念...

也许命中注定了 你在我的世界里永远的烙上了静态的属性...

而我不慎调用了爱你这个方法...

当我义无返顾的把自己作为参数传进这个方法时...

我才发现爱上你是一个死循环...

它不停的返回对你的思念压入我心里的堆栈...

在这无尽的黑夜中...

我的内存里已经再也装不下别人...

我不停的向系统申请空间...

但却捕获一个异常---我爱的人不爱我...

为了解决这个异常...

我愿意虚拟出最后一点内存...

把所有我能实现的方法地址压入堆栈...

并且在栈尾压入最后一个方法---将字符串"我爱你,你爱我吗?"传递给你...如果返回值为真--我将用尽一生去爱你...

否则--我将释放掉所有系统资源...

第四篇:一个合格程序员的标准

一个合格程序员的标准

一个合格程序员的标准(转)2009年02月21日 星期六 01:37 A.M.假设你是一名软件专业毕业的本科学子,如何在工作中修炼成为一名有较高职业水准的程序员呢,本文试图总结作者从事15年软件开发工作的感想,希望对有志成为职业程序员的人有所帮助,并借此机会感谢原昆明工学院计算机系的和智玲老师和张怀宁老师,特别感谢我的硕士导师,南京大学计算机系的博导郑国梁教授。

程序就是一系列按步骤进行的操作序列,它有好多种级别,比如最低级的微程序、次低级的汇编程序、高级的各种编程语言程序、最高级的脚本语言程序,也许我列的不对,但没关系,我要说的是不管是那个级别的程序,其本质都是操作的逻辑序列。大多数系统和应用程序都是建立在高级编程语言上的,比如C、C++、C#、FORTRAN、BISIC、JAVA等等,就让我们只关注这一级的编程能力吧。因此如果一个程序员的逻辑能力不高,他永远都不能成为一名具有合格职业水准的程序员,我们在下面的讨论有关编程能力的方方面面,最终都是为了最大程度地提高和实现一名程序员的逻辑能力。

一、掌握基础知识:十六年寒窗的持续积累

从7岁读小学起,经过16年的学习,你从软件专业本科毕业后,必须完成以下几门专业课程的学习:计算机组成、操作系统原理、汇编语言、数据结构、编译原理、数据库原理、软件工程、结构性设计语言(PASCAL、C)、面向对象设计语言(C++、C#)、计算机网络等,你最好还懂一些算法分析、分布式系统、计算机图形学、形式逻辑、人工智能原理、软件设计模式、软件构架/框架等研究生的课程,16年来,你积累的除了知识,更重要的是形成最适合自己的学习方法和工作方法。这些是你具备程序员职业水准的基础能力,不要受什么计算机软件怪杰之类传奇的影响,那不过是小概率事件,而且这些怪杰们就算没有读过软件本科和研究生,也往往自学了大多数专业课程,很可能比在校学习的学生对这些课程的精髓部分理解的更好,还有他们的工作方法和思维方式是特别而高效的,但普遍性差,可以借鉴,不宜模仿。好,所以现在你只需要问问自己,那些课程和知识都学会并掌握了吗?如果是,那就准备好进行实践了。

二、在实践中提高:成为一名高水平的Coder 好了,你毕业了,在校功课都不错,也找了一个专业对口的工作,你想大展鸿图了,可是别急,你的翅膀还不够硬,不信我们说来看看。

通常,你在工作中都会用到某一种单位/公司固定的操作系统和编程语言开发环境,比如Windows、UNIX、LINUX等操作系统,又比如用VC、VB、PB、Delph、JAVA、Motif/X

Window、QT、OpenGL、OpenInventor等编程语言和开发环境,我们在后面把它们合称为开发环境。就在校学习的有关开发环境的知识而言,大概你距工作需要的差距是不小的,当某个操作系统和编程语言环境成为你的饭碗时,就不应也不能用通过课程/认证考试之类的眼光和要求来评价你的能力,即使你能考100分。你需要深入地学习该操作系统和编程语言环境的各类开发手册的所有内容,你会说大多数你都用不上,其实你既对又不对,对的是单从使用的角度而言,你确实用不上开发手册的大多数内容,比如庞大的VC开发类库和复杂的开发环境,你在实际工作中能用到的不到总数的1/10或1/5,不对的地方在于,你用到的部分不是孤立存在的,它们是整个体系中的一部分,只有对整个体系有了一个较完整的了解,才能得心应手、随心所欲地用好你用到的部分,你才算初步具备在这种开发环境下进行Coding的职业水准(还远不够程序员的职业水准呢),而这只是刚开始。如何才能真正掌握一种开发环境的全面的知识呢,最原始的办法就是读开发指南/教程、参考手册,一般来讲,学习开发指南/教程时,你如果是一个认真的人,都会完成5/10~7/10左右内容的学习和练习,如果你想成为职业选手,就应该完成9/10以上内容的学习和练习。参考手册不同,大多数所谓的“程序员”们只是用到了才翻翻,这差的太远了,你应该象读开发指南/教程一样,每个环节都要读,比如VC,参考手册中的每个类,类的每个函数,都要读上几遍,它们往往是一小伙一小伙地纠缠在一起使用的,开始时读得你毫无头绪、心烦意乱,不要紧,还有一手呢,如果你开发环境安装的全面,它们往往都有开发商做的demo例子可看,你就进入另一个境界了,开始时你关注demo中的具体技术,后来你发现这些demo的程序写的都还算不错,结构简单但合理,如果你真的用心,就一定能发现一些个别的demo是极品,它所展现的程序逻辑结构是你设计不出来的,你现在有点更关心它的程序设计构架,甚于对你原始目的(某种相关的技术/技巧)的关注,这时的你,开始了从一名Coder向一名Programmer的转变,你会忍不住要看看开发商提供的源程序,比如.h和.cpp,通常你会找到include路径下所有的.h程序,你才知道,哇!好多好多东东在参考手册中都没提到,你要学的太多了,没时间顾及其它的业余爱好了,现在知道为什么程序员是年轻人的职业了吧,你要有足够多的时间才行,即使你的智商有160。如果你走到这一步,在你工作的团队中,已经是经常有人向你请教技术问题,经常有人请求你帮忙debug,你已是公认的“高手”

了,别得意,因为你仍然是个Coder,为什么这么说呢,你想想,你已深入了解了这个开发环境中的各种技能,知道一名Coder如何用好这些东西,可是你能设计的出提供给Coder们用的东西吗?唔„„,你想了想,可能还不太行。对了,就是这样,你还是一名小我境界的程序员呢,本质是个Coder,当然已是一名高水平的Coder了,然而你需要进一步登堂入室才能成为一名真正的程序员。

让我们继续吧,通常你都是从精通一种编程环境开始的,假设你已经较为精通在Windows下用VC开发软件了,这时在技术和技巧方面你将面临一小一大两个挑战,第一个小挑战是如果公司/单位改换了开发环境,比如用LINUX下的QT交互语言工具进行开发,你不过是把前面掌握VC的过程再来一遍,由于在主观上经历了VC工具的学习过程,在客观上各种开发环境都有太多相似的方面,这回你掌握的应该较快。要小心,在这时第一次诱惑之门打开了,因为你感觉良好,看!这回这么快,我就这么好地掌握了新的开发环境,你开始关注其它暂时还用不到的同类环境,比如VB、Delph、JAVA,如饥似渴地掌握各种开发工具,证明自己的学习能力和价值,但你忘了一点,你仍然是个Coder,只不过是一个在好多开发环境下都能编程的Coder,就像你生活在中国,因而精通了汉语,工作需要你又掌握了英语,然后你就来了劲,把俄语、日语、阿拉伯语、拉丁语,等等等等,都学习个遍,我只能说,有点BT。你忘了自己是个职业人,同一类的东西工作中用得到才需学习,太多太多的Coder们喜欢在一起比较和炫耀自己会掌握了几种开发工具,不信你看看招聘时的求职书就知道了,sigh!他们中绝大多数人永远都只能停留在这个层次上,心浮气躁,一生都再也当不成真正的程序员了。总结一下,其实你在这时需要的是对自己掌握新开发环境的能力的自信,而不是一遍遍地重复来证明自己。第二个大挑战就是你明白了只掌握VC是不够的,你发现自己有点浅薄,有很多东东你会用但你不太懂,很多方面支持VC编程的知识你都没掌握,比如操作系统的源码、网络协议知识、Windows 的注册表、进程和线程的基础知识、硬件驱动方面的知识、ActiveX、Windows 庞大的 API,又是一个等等等等,这些基础知识的学习和掌握可是要花费大量时间的,你再一次深切地感到时间太不够用了,因为这时的你大概有许多俗务缠身了,所以有点沮丧,还不用提IT业每天不知有多少新东西在发布,KAO,永远都跟不上,越拉越远了。哎!别气馁,振作一点,你还是忘记了自己是个职业人,既然好多东东在工作中你永远都没机会用,那么干嘛要

学呢?用什么才学什么,最多预测到马上要用什么,先一步学什么好了,要知道没有人是真正的、无所不精的全科大夫,除非你是神,但如果你还在耐着性子看这篇文章,你肯定是个人嘛。

OK,一般工作后三五年,你经历了上述过程,经受了诱惑和考验,终于明白了一个道理:你要的是强劲的学习知识的能力,是对某种软件知识/技能的有深度的精通,一种摸到它的根的深度,而不是已掌握的技能的种类和数量。这时无论谁用他掌握了多少种你不会的技能来吓唬你都没用,你对他的层次只有蔑视。通过几年的学习和工作,要记住最重要的一点,永远最重要:对自己学习IT知识能力的自信,一个程序员一生都要不停地进行高强度的学习,用心问问自己,有没有这个自信?别用虚荣心来骗自己哦,如果没有的话,那就不必花费你宝贵的时间向下看了,作者在此感谢你有耐心看到这里,现在建议你关闭这篇文章,趁着年轻,当机立断转行吧!

三、注重逻辑:成为一名职业程序员

好,再前进一点点,你就要成为一名职业程序员了,让我们继续来完成这个任务吧!我们在前一节提到过,“你发现一些个别的demo是极品,它所展现的程序逻辑结构是你设计不出来的,你现在有点更关心它的程序设计构架,甚于对你原始目的(某种相关的技术/技巧)的关注”,其实你是在关注这个demo程序作者的思维逻辑,所有程序的本质就是逻辑。技术你已经较好地掌握了,但只有完成逻辑能力的提高,你才能成为一名职业程序员。打一个比方吧,你会十八般武艺,刀枪棍棒都很精通,但就是力气不够,所以永远都上不了战场,这个力气对程序员而言就是逻辑能力(其本质是一个人的数学修养,注意,不是数学知识)。逻辑能力也是逐步提高的,开始时你一定是用直观的逻辑能力来编程的,怎么想就怎么编,不对就再改,在改进中提高自己的逻辑能力,从直观逻辑能力提高到抽象逻辑能力,这是很正常的。提前说一句吧,到达逻辑能力的至高境界,其表现是用数学语言来描述问题和问题的解决办法,高度抽象!好,说回来吧,你要提高逻辑能力,最快的办法就是读别人写的结构优秀的程序。优秀的代码是百读不厌的(这句话是我抄来的),暂时放放对其中某种技术和技巧的关注吧,你要推导和学习的是这些好程序的逻辑结构,它们是被精心设计出来的。你可以先捂住这个demo程序,自己设计一个功能相同的程序结构,然后比较一下demo的程序结构,如果差距较大,那你就不应简单地改进一下,而是要把demo作者设计的过程在心里复原一遍,做到这一点也许有点困难,但这种事

干的多了,你就会越干越快,越来越得心应手,你的逻辑能力飞速提升,你能看得上的逻辑结构优秀的程序开始不多了,下一步就是练习。从工作中开始吧,如果你有空闲,你需要做至少两类练习,一类是算法练习,所有的经典算法都是经典的逻辑,题目有的是,像个好学生一样吧,每年的国内国际编程竞赛都有逻辑要求非常高的题,你可以只选一两道难题来做做。当你可以把复杂的单递归程序(只有A调A)变成非递归程序时,已经不错了,如果你能看得懂双递归程序(A调A、A调B、B调A、B调B都有),我为你鼓掌!你不必往下看了,我有点不好意思啦――班门弄斧,你快滚蛋吧!另一类是把以前和当前你工作中你不满意的程序推倒重新设计一遍,这非常重要,省时省力,因为你熟悉需求,技术上也没问题,目的就是改进程序的逻辑结构,很划算哦,唯一要克服的就是:你对推翻以前工作中那点小小成就的心理障碍,如果你真想优秀,说句粗话:这点心理障碍算个屁,一遍遍反复地推倒已有的成果只能使自己快速进步,放手干吧,没什么好可惜的,马恩早就在《共.产.党宣言》里说过了:在这个过程中,你失去的只有锁链(禁锢你思想的锁链)。

让我们来总结一下,经过自我否定后,再生的你尽管对过去的“业绩”还有一些眷恋,但已是一个初步具备职业水准的程序员了,掌握了相应的技术和技巧,具备了较高的抽象逻辑思维能力,最主要的特征是:能自觉地自我否定,不断地追求更高水平的逻辑能力。在这个过程中,如果你能注意以下一些小的方面,你前进的步伐也许会快一些。

l 从编译原理的角度来理解你工作中使用的高级语言,如果你做到这一点,至少有两个好处,第一个好处是避免一大堆低水平重复出现的编译错误。一名优秀的Coder平均在一个工作日中应该完成200行以上的源码,其编译错误应该控制在5个以下,要知道这200行源码不是一次完成的,所以大多数情况下你都要追求一次编译通过,而一名职业水准的程序员,应该进一步做到即使用purify这类的工具来检查源码,也不会存在严重的内存泄露。第二个好处是可以提高源码的可读性和效率。规范地编写你的代码使你自己的逻辑清晰,因为你明白多加几个括号和空行、多换行对齐、多注释,编译器是会自动识别的,不影响程序执行的效率,反过来,控制好递归调用和循环内的if语句才是提高程序效率的关键,要全力避免递归,但要深刻理解递归,能通过自己建立堆栈来把递归程序转换成非递归程序,要求还是较高的哦!l 避免思维陷阱,只要你是人就一定有自己的思维惯性,这一

定又会表现在你的程序逻辑中,有时你就是从这个惯性中跳不出来(谁都有这个时候),但要心里有数才行,所以你需要帮助,如果你有几个水平相若或更高的职业伙伴,太好了,当遇到花30分钟还打不下的bug时,就别浪费时间了,找他们吧,最要紧的是能思路清晰明确地表述你的问题,通常你自己在这个过程中或者伙伴中就有人把问题解决了,又快又好。另外,有几个可以良性竞争的职业伙伴是人生的一件幸事,1+1>2,大家各有所长,你最好做到及时公开你的成果,技不压身嘛,IT发展的这么快,你再优秀,那点东东也没有什么值得隐藏的,所以你可以技术或水平不够高,但千万不可以让真正具有职业水准的选手鄙视你的职业品质和行为。

l 有自己debug的特点,下面的说法作者不敢太肯定,只是经验之谈。即使在VC这种高度完善的开放环境下,你仍然应该要求自己仅凭打印语句就能debug。这也有两点好处,第一个好处是,遇到bug你会认真想问题所在,而不是用debug工具一步步简单地追踪卡在哪儿了,你定位bug范围的方式是从大到小、从粗到精,这是一种自顶向下的思维方式,而用工具追踪,容易形成自底向上的思维方式,这不算好,你应该先看到森林,再看到树木。我反复提及:程序就是逻辑过程,大多数程序从main函数开始,是由数据结构和功能子程序组成的一个树形结构的逻辑过程(要认清即使是面向对象的程序语言也是一样的),它的执行过程是深度优先的,但你定位bug应该是广度优先的,好好想想这一点,嗯?第二个好处是强迫你思考并记住而不是用工具看到调用过程,你大脑的抽象逻辑思维能力和胳膊上肌肉的力量一样,都是练出来的,如果你的bug是程序结构上的逻辑错误引起的,这一点就非常重要了,顺便说一句,最难打的bug就是程序逻辑结构错误导致的bug。你要是真正明明白白地认识到这儿了,那我就没什么东西可以告诉你了。总之,程序员的职业水准:生产效率和程序质量,主要是取决于源码中bug的数量和debug的速度,而不是取决于编写源码的速度。给你一个我自己定义的考查一个职业程序员的指标:一个合格水准的职业程序员,编程的时间如果算一份的话,其累计debug的时间不能超过一份,真正职业高手累计debug的时间应该控制在0.5份以下,如何?你关上门悄悄问问自己,你花费在编程和debug上的时间比例是多少?如果你把程序员作为自己一生的职业,那么就永远都要牢记一点:追求做一个0 bug的优秀程序员!这是任何一个想成为职业程序员的人的理想,请相信:坚忍不拔地追求实现这个理想将让你出类拔萃!l 做好程序

的单元测试,这是另一项考查你是否是一名具有合格职业水准的程序员的一个必要指标。其实在你拿到需求的时候就要准备单元测试用例了,并且这些用例将直接影响你的详细设计(有关软件设计本来是该放在第四节讲的)。我们还是打比方吧,当你拿到一个需求时,除了分析它静态的功能外,还应明确它动态的操作/执行过程,把这个动态过程明确地用流程图画出来,比如分为A~Z的26步,其中A又可以进一步分解为A1~A5的5步,直到不能再分解为止。又比如说A3步不可分解了,那么你应该把A3步的正常操作和所有五花八门的异常操作都列出来,确保正常的操作肯定正确,异常的操作起码程序不退出才行。这样你就要写好多好多的测试用例,说句老实话,我也从来不写!但我一般会列一个提纲,比如A3步有正常的操作a、b、c、d、e共5项,异常的操作有f、g、h、i、j、k、l、m、n共9项,你在进行单元测试时都应该跑一遍,这样的程序都还不敢说质量如何好,但起码可以说较稳定吧!如果要想在进行单元测试时干得快、效率高,那么在进行详细设计时,你就应该把A3步中对所有正常操作和异常操作的判断都设计好,在编程实现A3步时,使得程序的结构合理高效,对不对?所以,如果你在工作中是割裂地看待软件工程中从需求、分析、设计、编程、测试等各个环节,恐怕水平很有限喔!但如果你在分析需求时就能看到测试的问题,并改进设计和实现,为此做好相应的准备工作,嘿嘿,整个软件开发过程你的效率会高很多,通常你在一个开发团队中就会高度自信的,你已越过当一名偏颇、露骨的高手的境界,成为一个平静的高手,这可是The best in the best!,用周星星的话说:是高手之高高手,因为别人看不出你高在哪儿,没见你有什么高招或特拚命干,但反正你就是干得又快又好、又省力。关于进行单元测试还有很多复杂的方法,在此本文只提到了最基本的一点,目的是让你在工作上考虑周全、安排有序,其它的自己琢磨吧,没有人能替你吃饱饭!

l 如果你是用C++编程,我再简单谈谈有关内层释放的一个小技巧,就是对所有你编写的类,在构造和析构函数中加打印语句,统计每个类在运行程序时构造和析构的地方,如果是配对的,那么起码没有对象类一级的内层在程序运行结束时没有释放,然后你就可以把打印语句删掉了,招数虽土,但管用!

l 还有其它一些好习惯,在这里我随笔写一些,你要是有不同看法也请一笑过之吧。编程时应该对齐缩进,一个缩进用一个tab键,一般是4个空格,严格遵守开发团队的编程规范也是非常重要的。一个子程序

不应超过30行(不算空行),其内多重循环不应超过3层,否则都应该分裂成两个子程序,个别算法程序可以长一些,但也不宜超过200行。通常一个类的所有成员函数总和不宜超过1500行,多了就应该考虑分解成两个类(这个工作最好在设计时就完成)。每完成一小段程序,比如15~30行,就立即编译运行,不要假装高手,先敲它一大堆程序,再编译运行,妄想一次成功,体验一种假爽的、虚荣的快感,或炫耀给别人看,这么做只能证明自己是一个不折不扣的傻瓜,装酷而已。因为只要有一次不成功,你就会花费大量的时间来调程序,别人的进度在这时就远远地超过你了,平常心是道,还是修炼真功夫吧!孙子兵法里关于这一点有明确的阐述,我就不引用了,但建议你真的不要这么干,除非你确实就是这样总是一次就成功的天才,那你还看这篇文章干什么呢?我又不是写给你们这些天才们看的。再就是有学会买好书、读好书,关于计算机和软件方面的书太多了,时间有限,比如有一个叫侯捷的家伙,几乎写的每本书都不错,张国峰的C++编程也不错,这只是我的个人意见啊,好书多着呢,列出来比这篇文章长好多倍,我就不多说了。还有一招,要是你运气好,能搞到一些著名软件系统的源码,好好读读吧,在此我只能告诉你,Linux操作系统的一些源码不错,是开放的,你可以合法地搞到,其它的不要说是我建议你侵犯知识版权啊!

四、天生神力:成为系统分析员

本来就论述如何成为一名职业程序员而言,本文已基本完成任务了,但《菜根谭》有言:竭世机枢,似一滴投于巨壑,穷诸玄辩,若一毫置于太虚。既已乘兴到此,何妨多置一毫于太虚呢,作者不才,干脆尽兴写算了。

你要是运气好,直接进入了一个严格规范生产的软件企业就业,刚开始就应该是按别人做好的软件设计来实现编程,你可以有机会直接学习软件设计,当你积累的足够多了,能够对其中的一些设计提出好的改进建议,而且干得又快又好,就会渐渐地展露头角,我相信你终有一天成为一名软件设计人员(注意,不是软件产品设计人员),步入系统分析员的行列,但这还需其它的一些条件和自我修炼。如果你在一个不规范的软件企业工作,那也不错,你很可能直接就有机会进行软件设计,然后开发、测试,甚至还不得不自己定义需求,把软件开发过程的各个环节走一个遍,当然这样对你的要求更高,而且你也不容易得到及时有益的指点,在正态分布的情况下,你应该是成长的很慢。但不管就业的单位如何,如果你决心要成为顶尖软件职业选手,通常什么客观困难都阻挡不了

你,然而你个人的因素可能会阻止你的前进。下面提出的观点纯属一己之见,伤人自尊之处作者在此提前道歉,并建议你除非对本文有强烈的兴趣,否则就请直接看第五节或放下别看了。丑话已说在前头了,在各种软件开发组织的发展过程中的事实也证明,只有少数程序员能成为系统分析员,我想这一点不是我杜撰的吧,因此你要是在看接下来的部分时感到气愤难当,那也实在没着,纯属活该,因为作者只是在说明自己的观点而已,你最多可以呲之以鼻,表示一下你的轻蔑好了,但没有任何理由可以骂人!

作者自己没有到微软面试过,但身处软件行业,关于微软的许多东东当然还是有耳闻的,据说微软招聘一名程序员要过五个已经成为微软程序员的面试关,而且是一票否决制,又据说大多数面试题并非编程,而是一些有关逻辑和智力的题,作者私下也做过许多流传的微软面试题,并对此做法深以为然。程序的本质就是逻辑,所以几十年前就有人提出编程是一门艺术,而艺术是要靠天份的,这一点少有人反对。一个人的逻辑能力可以不断提高,但其能到达的终极逻辑能力的层次必定为其天生智力所限制,这一点就让人不易接受了。好笑啊!人们可以公开承认自己没有某种或全部的艺术天份,但要说自己逻辑天份不够,换句话说承认自己笨、IQ不够高,往往是要怒发冲冠的,其实这又有什么区别呢?话都说到这儿了,再次建议你如果不够自信,就跳过这一节吧,直接看第五节,好吗?

好了,把话题说回来,你已经成为一门合格的职业程序员了,如果要想成为从事软件系统设计的职业系统分析员,第一件事就是悄悄找一个标准智商测试的网站或其它渠道,严格认真的测一测自己的智商,如果IQ低于130(正常智商是110),就请别费劲了,打消掉成为系统分析员的念头吧!好!好!先请你冷静一下,好好想想,其实微软面试时就是在测你的智商和逻辑数学素质呢,这就是本节的标题为“天生神力”的原因,因为设计就是从无到有地进行创造,无论是软件还是其它行业都一样,可以有借鉴的,没有现成的,设计就是创造!如果你IQ在130以上,又决心要当一名职业软件系统分析员,其实你不过是要准备好吃更大的苦而已,有什么好虚荣的呢? 修炼还是从基本功开始的,过程和成为一名职业程序员差不多。必须使用设计工具这一点是不用多说的。在工作中,你基本上遇到的是两类方式的设计,一个是结构化设计,另一个是面向对象设计,就个人经验而言,面向对象的设计更好。如果你工作中不得不采用结构化的设计,你必须熟练地掌握数据流图和

控制流图的分析和设计,一般来讲,如果你把一个软件中用到的数据模型设计好了,针对功能化的流程,不难设计出数据流图,但下一步设计控制流图才是挑战,如果你按照需求走不通设计好的控制流图,那么你或别人在按照这个设计编程实现时,必定也走不通,没有奇迹会发生,还是在设计阶段严格要求吧,又有一点需要牢记:返工是最慢的。当你在进行控制流图的设计时,也不要妄想得到需求人员提供给你明确的指点,通常他们要是能够把需求的功能和操作次序写完整的话,你应该就感恩戴德了,从需求中整理出功能、操作的拓扑次序和条件是你作为系统分析员的职责。看看,要是没有一点图论的基础和拓扑学的入门知识,你是当不好一个职业系统分析员的,即使你天赋不错,必要的数学和逻辑素质仍然不可或缺。也不用气馁,永远没有最好的设计,只有更好的设计,反复地进行设计迭代,勇于推翻旧的设计,你将快速进步。如果你在工作中是采用面向对象进行设计的,那就更有利了,有关面向对象设计的书太多了,不用作者在此多费口舌,建议精读一本经典的书,比如北大邵维忠等编译的《面向对象的分析》,有些方法和技巧可能过时,但其逻辑的基本原理是非常正确的,其本质是,你在逻辑上是如何认识这个世界的,你就是如何设计软件体系结构的,然后读读其它书,触类旁通,自己创造机会多实践,成功自然会到来的,总之,不管是结构化设计还是面向对象设计,评价一下自己的软件系统设计方案吧,有好多指标呢,比如是否均匀和平衡?局部独立性强不强?有没有歧异的结构?有没有层次太多或太少?有没有某个层次太大、太广?是不是逻辑结构先复杂了再化简的?还是只会设计简单的,复杂不起来(这一点是笨哦,如果出现多次,请你不要意气用事,转行吧)?最重要的一点,是否容易理解、实现和改进?你自己会得出评价的。如果有机会看到别人的设计,一定不要错过学习的机会,自己推导一遍,认真比较比较,获益会较多。

走到这一步,你就应该关注设计模式了,首先还是学习,这方面的好书有的是,但一般在工作中用到的设计模式较为单一,应该多尝试一下其它的设计模式。其次必须要明白设计模式不是设计思路,也不能代替设计思路,比方你要从A到B修一条路,设计模式只是让你选择,是修水泥的还是柏油的?是高架路还是普通的,但线路必须你自己定,而线路就是设计思路,模式对思路是有影响,但不能代替,所以如果你的智商高达250,我相信你直接用汇编语言也能写出面向对象的程序来。第三在此有一

个陷阱,很多系统分析员生搬硬套设计模式,全然不懂如何融会贯通,在你的一项具体工作中,往往是以一种设计模式为主,其它模式为辅的,思维不拘泥于形式才是关键,而且也为你到达更高的软件设计的境界做好准备。

唉!都不知该怎么向下写好了,因为已达到作者水平的极限了,我胡乱说一点,你凑合看吧。软件设计最终的层次是:以无法为有法、以无限为有限,这句话是李小龙说的,不是我说的。再拾人牙慧一把,类比一个故事吧,金大侠在《倚天屠龙记》里讲到张无忌初学太极,学会的标志是把刚学的招数全忘了,记住的是太极的道理和精神,和李小龙有些相似喔,软件设计也一样,忘记所有的设计模式,随心所欲进行设计才是至高境界,所以你能到达多高的软件设计的境界最终将取决于你的哲学素质,这一点实在是不好写啊,你自己领悟吧!作者只有祝福了!

五、职业人的终极目标:全面修炼,成为Leader 这一节更不好写,涉及到太多其它非技术方面的因素,特别是个人人生观和世界观的修炼,如果本帖的点击率超过作者私下期望的一个数值,那我就争取尽力厚着脸皮再补上吧。我只说一句,虽然大家都知道软件开发是一个团队性的工作,但追求参与一个大型软件系统的成功开发,是一名软件人员的本能,就像拿破仑说的不想当元帅的士兵不是好士兵,所以不追求实现大系统的软件人员,也不是一个好的职业软件人员,但你只有成为Leader,领导一个优秀的软件开发团队,才有机会实现这个终极职业目标,对不对?

好吧,不管你现在的感受如何,我都谢谢你能读到这里!我不习惯假歉虚,就不说什么作者水平有限,本文抛砖引玉,欢迎大家批评斧正之类的客套话了,虽然作者水平确实有限。所以我认为你尽管有权砸砖,但实在没必要搞回帖、或回骂、或顶之类的玩意儿,我只是尽兴写一点多年从事软件开发工作的体验,因此接下来我就高挂免战牌,不回复任何回帖了。再次谢谢你能有耐心读到这里!希望本文对你有所裨益,祝你成功!再见!

第五篇:程序员自我介绍

程序员自我介绍(精选3篇)

当来到一个陌生环境中,时常需要我们进行一个自我介绍,自我介绍可以满足我们渴望得到尊重的心理。现在你是否对自我介绍一筹莫展呢?以下是小编精心整理的程序员自我介绍,欢迎大家借鉴与参考,希望对大家有所帮助。

程序员自我介绍1

我叫XXX,今年XX岁,毕业于XX解放军信息工程大学计算机科学与技术专业,拥有扎实的Core Java基础,良好的编程风格;熟悉JSP+Servlet+JavaBean模式的WEB开发;熟悉Struts,Hibernate,Spring等开源框架,了解EJB;熟悉Tomcat,Jboss服务器等,熟悉基于Linux及Unix环境下的软件开发。

在校期间有多次社会实践经历,曾参与过学院网上虚拟实验室开发的需求分析,大学期间多次担任多课程的课代表。虽然实际工作经验不是很足,但军校四年培养了我充分的自信心和敬业精神以及扎实的.学科基础知识和较强的专业技能,四年军校生活中,我严格要求自己,自觉、遵纪、守时。本人坦诚且有责任心,有独立进取的品性,勤于动手、善于动脑,适应新环境能力很强。能在最短时间内完成从学生到职业工作人员的转型,尽自己最大的努力融入新的工作生活。

请各位考官多多指教,谢谢!

程序员自我介绍2

尊敬的考官:

您好!

我是计算机专业的面试者xxx,我此次应聘的职位是IT行业的软件工程师,这份工作不仅与我的专业对口,同时也是我的特长与兴趣所在。现在我就从以下三个方面介绍自己:

1、学习能力:我有较强的科研能力,能熟练的进行Windows2000和LINUX操作,并能使用VB,DELPHI等语言编程。能运用网页三剑客Photoshop软件进行相关工作。

2、实践能力:我的专长是软件开发,我希望能从事这方面的工作经验,并且我曾经发过多个系统,如人事档案管理系统,工资管理系统等等。

3、交际能力:我的性格沉稳,能坐得住,对IT行业的工作,具有非常好的适应能力,而且为人谦和,具有很强的组织和协调能力,富有的事业心和责任感使我能够面对任何困难和挑战。

从以上的简单自我介绍,我希望公司能给我一个展示自己能力的机会,让我我可以学以致用,同时我也很欣赏XX公司的企业文化与工作环境。我愿意成为企业一员,为企业的发展贡献自己的一份力量。我的职业生涯目标是,做一个既懂技术,又懂业务的复合型人才。

程序员自我介绍3

我叫xxx,今年xx岁,于20xx年6月毕业于xx职业技术学院。

学习的专业是软件技术,主要学习的java方向的企业级应用开发和管理。

之前在xx软件科技有限公司实习,毕业后在该公司担任java程序员一职,主要从事java项目相关模块的开发,能熟练使用java技术,熟悉jsp,servlet,jdbc,和常用框架spring,struts,hibernate及前端技术:js,jquery,和数据库oracle,sqlserver.对exitjs和uml有一定基础。

我的个人计划是:在5年之内从事java开发工作,积累行业经验和技术以及人脉。并且自学英语,考个英语等级证,我相信只要我想做到的,就一定会做到。

来到上海这边,我希望找个好工作,希望贵公司能给我一个展现自身能力的机会,介绍完毕,谢谢!

下载优秀程序员的标准是什么word格式文档
下载优秀程序员的标准是什么.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    关于程序员年度工作总结[优秀范文5篇]

    关于程序员年度工作总结范文1一年的时间,每当自己在总结它的时候,感觉是那么的短暂―弹指一挥间。而也就是在这一挥间,承载着太多太多,有收获与成就,有失败与不足。回头看看20xx......

    程序员年度总结(优秀范文五篇)

    程序员年度总结总结是事后对某一阶段的学习、工作或其完成情况加以回顾和分析的一种书面材料,它能够使头脑更加清醒,目标更加明确,让我们一起认真地写一份总结吧。我们该怎么写......

    程序员岗位职责(定稿)(优秀范文5篇)

    程序员岗位职责 1.协助技术部研发组经理制定本部门发展规划和年度工作规划。 2.收集专业领域内的技术信息,为技术开发主管参与决策提供信息支持。 3.提出产品改进建议和新产......

    如何成为优秀的程序员

    如何成为优秀的程序员?1)学习应该从基础打起,不要一开始就尝试最高深的技术。2)每看一本书,不要说这章我以前学习过了,也掌握的很好,因此我可以跳过这一章看更重要的了。3)对于作业......

    优秀的程序员自我鉴定

    优秀的程序员自我鉴定 以下一篇是一名优秀并且有工作经验的程序员的自我鉴定范文: 大家好,我叫xxx。我性格开朗,乐于与人交往,诚实,正直,有教强的上进心,较强的学习能力,在学校团学......

    优秀程序员必读书目

    面试微软前必须要读的十本书:1、Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》) 2、Computer System: A Programmer’s Approach (《深入理解......

    程序员(范文模版)

    作业:研究一个新或自己感兴趣的职业 v介绍:名称定义 v典型生涯路径:从新手到最高职位的生涯路径 v趋势:技术、组织结构、培训、经济趋势对职业的影响v薪酬:差别、地域差别v所......

    程序员

    7.5.3系统测试和调试 1.系统测试的意义及目的 系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。 测试的目的就是希望能以最少的人力和时......