阅读全文:http://www.cckan.net/forum.php?mod=viewthread&tid=314
起因
先声明,只是谈自己看法,和大家讨论一下,没有别的意思
当了几年的程序员了,一直都在想一个问题,什么是程序员,程序员应该做好那些事情,什么样的程序员是有素质的程序员?什么样的程序员算是负责的程序员呢?
工作当中我发现有不少员工是为了工作而工作,怎么回事呢?他们只是把我分配的工作分毫不差的完成,但从不问为什么?有些程序员是喜欢随便改变需求,自己感觉不错就得改,改了还不做报告,最后上交项目时才发现和需求不一样?于是傻了。
我根据自己的经验把程序员分为以下几种
单纯没有脑子的
这种程序员是最让经理气的一种,因为大多是刚入门的,或是学生刚走出校门,不喜欢问,也不懂得分析,只是一味的很听话,为什么说他们单纯呢?那是因为他们从来不会问,不会说也没有自己的想法,你让干什么就干什么,让自己怎么干就怎么干,听上去感觉特好的员工,很听话,如果只是这样就好了,可怕的是他们没有脑子,比如你说让他完成一个增加的功能吧,他们很听话的给你做出来,但只是一个增加的功能,他根本不会在增加功能之后再给你处理一下刷新数据的问题,或是做一些必要的验证,更说不上代码的扩展性,那都是见不着边的事,不可能。
你说让做一个查询功能,他完全有可能给你做出来一个查询所有的功能,不会管你要不要根据时间,要不要分页,或是其它的方式的查询,人家还可有理,会告诉你,你需求上没说啊,只说要有一个查询的功能?然后你无语。
有脑子先斩后凑的
这类程序员大致是工作有一年或是两年工作经验的人,自认为自己有些经验了,做了几个项目,感觉自己NB的不得了了。分配一个功能总有一些自己的想法,其实他自己不知道这些想法还不成熟,只是个人主观意向,你说让人家做一个导航条吧,你清楚的告诉他是在头部用的,要直排下拉类型的。
好了得到需求了,他根本不管你为什么要这样做,在做的过程中,他发现自己以前做一些项目里有导航条的,而且很好看,他们想,经理是怎么想的,设计的还不如我设计的好看,我给他改一下说不定还能得到他的奖励,于是自己把直排下拉的导航改成了,直排出面板那种的,因为好看,而且还不告诉经理,想给大家一个惊喜,谁知道经理一看,说怎么改需求了,客户不要这样的,然后他就跟你讲理,说这样的好看,而且什么扩展性还好,技术先进,流行,然后你会很无耐的告诉他,你做的确实很好看,但是客户不付钱怎么办,于是没办法在你的“强逼”之下他不得不改,于是你对他的工作很不满意,首先是这个人不好管,老自己做主,不把你当回事,怎么办,好点的经理会慢慢引导一下,脾气大的经理会直接扔出两字“滚蛋”
我们来分析一下他的心理,第一种可能就是感觉自己做了很多项目,有一点自大,目中无人的心态,看不起别人设计的东西,总以为自己的技术和代码很棒了,因为自己在程序界摸爬滚打一两年了,也算是有所见识了。但他们确不明白,现在的自己正像当前的曹仁学曹操一样,只是学得其形而为尽其神。大部分的软件,网站,不能只看网站本身的价值,成功不成功,不是自己说了算,也不是经理说了算,还得看客户,一句话客户喜欢的就是好东西,客户不懂技术啊,你写的再好,客户不懂哦,所以一定不要乱改需求,软件要和市场结合才能真正体现出它的价值,做让大家喜欢的软件,而不是单纯的技术堆积。
第二种可能就是,自己懒,因为两年内也写了不少代码,手上有很多的源代码,直接找个好点的能上就行了,为什么要自己写啊,而且好看还快速。
第三种可能是自己实现不了,而又不想学习,感觉浪费时间,所以直接改动一下得了。感觉自己如果写的话,写好了还好说,写不好,耽误时间,一个导航几天能不完,会很丢人的。于是要加速。
这类程序员有脑子,但是不听话,管理是问题,一定要好好的引导,也希望在这个阶段的朋友们注意了。加强学习,认真做项目,让自己正规化。不要入魔道了。多看看资深的程序员的代码,想一下经理为什么要这样做,听听他的理由,在改需求的同时一定要写报告,或是直接找经商量一下,不要自己做主。
有脑子,很听话,很认真,但基础不好,代码有局限性
这类型的程序员大多是工作一到两年的程序员,但和上面的不同,他们很有脑子思路很好,而且很听经理的话,做东西很认真,做不完了自己会加班写,学新的东西也很快,但是有一点不好的是,他们有很多理由说自己没时间学习基础,这些人一般是在学校没有学好,出来之后后悔了,学起来很认真,由于学了些新的知识,起点高,看不起基础的东西,从不想着没事去看看编程基础,看看算法,看看数据结构,总是以为我都能做出这样的项目了,还看那些小东西会很丢人的,于是在公司从不看回家更不想看,时间长了,技术会有很大的局限性,对某一块技术很不错,但是对其它技术不怎么好,于是在接到一个项目时,总喜欢使用自己现有的,会的技术去实现,转了一圈又一圈总算是把东西写出来了,而且还是加班完成了,但是代码的性能,稳定性,和效率上差的很远,扩展性也谈不上,时间一长,项目一多起来,就会出现多次反工,因为需求是会不断变化的,于是自己的代码也要变化,感觉很是理所当然,一个项目没事,接手的多了就麻烦了,新项目刚到手,老项目就出问题了,不是这里有点小毛病就是那个功能要升级,于是新项目放下,着手改老项目,手上能有三四个项目时,就会忙个不停,改的多了,没办法再改了就得重新设计,或是直接说这个功能实现不了。
其实在这个阶段的朋友很有潜力的,只要花点心思补习一下自己的技术缺陷,多看看高手的代码,写之前想一下,设计一下,自然事半功倍,千万不要有眼高手低的心态。
真正的高手Nb人物是怎么工作的------------程序员
1.不随便改变需求
他们不会主观的改变一些东西,不管是对还是错,如果要改的话他们会在开会时,或是私下跟你提出来,通过后再改,否则会按需求办事
2.不写没有思想的代码
在写功能时会加上一些人性化的功能,比果加个小图标,加一些验证,处理一些操作习惯,加加快捷键,处理好Tab顺序,等这些,不用你说,他们自己会处理好。
3.不写没有远见的代码
他们在写代码时会想,不会是单纯的实现功能,他要想,如果别人也要用这个方法怎么办,以后要改的时候怎么办,代码这样写是不是合理,是不是会影响性能,然后才会”吝啬“的出手。
4.不写不负责任的代码
我们写代码一是为客户用,二是方便其他人看,不单单是自己维护,要对自己的代码负责,从自己手上出去的代码代表的就是自己的脸,代码不好,人家会“打脸”的。他们不愿意挨打所以他们负责。
高手在编程效率方面可能并不比普通程序员快多少,因为他们会吝啬自己敲下的每一行代码。这种“吝啬”有两方面的含义,一是项目的架构性和整体性考量,二是从性能和优化的角度进行Coding。其实,这里所映射的是一个开发者的技术视野。
有多位技术专家强调项目执行时的全局观。面对一个项目,即使是团队中的普通一员,也要力求从项目整体架构的角度审视开发需求,对各个模块、接口和通信做最优化的预想和配置。这样可以从全局审视整个项目的技术布局,预判可能出现的问题。
在确定了整体之后,落实到具体的模块实现,每一行代码不但有上下文的考量与规划,还要具备模块间的整体布局。这是模块内的技术视野,比如接口的定义、注释的可读性、代码的执行效率等。当你写下一行代码前,要考虑它是否会对整个系统造成影响,是否方便其他接口进行调用,这些都是一个开发高手的“技术潜意识”。
据一些经常带领入门级开发者的技术经理介绍,多数人只考虑自己所负责的模块进行开发,缺乏一个全局性的技术视野和对代码性能苛刻的态度,这样虽然能按交付日期完成项目,却对项目质量和开发者的自我提高有很大阻碍。
开发高手是代码阅读者。大多数技术专家的代码阅读量是普通程序员的百倍,代码阅读的时间比写代码的时间要长得多。
多数程序员只把程序开发当成一份工作,他们在乎平台的前景、语言的优劣、报酬的高低;他们不愿为一个技术点反复钻研,不愿为一个bug精心测试,不愿为自身技术水平的提高多花时间。而开发高手往往具有单纯的技术梦想,愿意为技术付出自己全部的时间。
这几段话是来自 程序员:差距在哪里,你与开发高手的距离到底有多远?