如何评判程序员的好坏和程序员成长的各个阶段

一、评判程序员主要从这三方面属性着手:能力,经验,态度。

1、能力

能力这个属性其实在人的成长学习过程中已经培养的差不多了,到工作的时候基本已经定型,再想提高已经很难了。这就好比很多卡牌类游戏中对卡牌分级一样,什么C,B,A,S,SS一类的,后面再想升格非常难,所以大家在面试招人阶段应该就筛选出能力强的人才。工作后增长的基本算是经验。

2、经验

经验是程序员在整个职业生涯中最重要也是最容易增长的属性(应该不光程序员是所有职业都如此,不过程序员尤为重要)。一个刚毕业的大学生,如果在学校里没有做过实际项目,只有书本知识,那经验就是0。而对于这样的新人来说,刚入公司那阶段,其实就是一个学习成长不断积累经验的初始阶段。这时候如果公司有好的老师、同事,或者有好的氛围,制度,有完整的资料,那么就能很快得到成长。当然自身的能力,态度也是影响经验成长的最重要因素。学习能力强,自己要学习,自己愿意多做事多应用,自然经验刷刷往上涨。

这就好比在游戏中,人物参加战斗多了用的多了自然经验得到的快等级升级的快,能力强的战斗或任务成功率高自然比能力低的成功率低的经验多升级快。

所以如果以行业平均经验水平每年100来计算,能力强态度好的人可能一年就有二三百的经验,一年抵别人三年,而能力差特别是态度差的,可能一年下来经验才二三十。

所以招人的注意了,看经验不要看工作年限,项目经历比工作年限更有参考价值。当然前提是你能判断出是否真实项目经验。

3、态度

态度这个属性是一个人最捉摸不定最容易变化的属性了。为什么这样说呢,因为一个人的工作态度受很多方面影响,在不同环境不同时间都会有不一样的状态。也许一个人在前一家公司不认真工作上班摸鱼,但到了下一家公司却发奋图强努力工作。反之亦然。而如何影响程序员的态度,就是管理者管理能力的体现了。

世上一百个人中,可能有一个是鞠躬尽瘁,恪尽职守的劳模型人物,也有一个是偷奸耍滑,好吃懒做的老油条,这两类人,你怎么管理都基本无法改变他们的工作态度。而除了这两类人,其余百分之九十八的人都只是普通人。这些人管理的好,就向劳模靠近,管理的差,就学老油条一样。这就是管理者需要管理的目标。

简单说就是开除老油条,树立劳模榜样,严格管理,一手胡萝卜一手大棒,有奖有罚,奖惩分明,公平公正,以此来提高大家工作热情,端正工作态度。(本文不着重讲解如何管理,就此带过)

二、程序员的各个阶段和评判标准

1、零阶段

注意这个名字,带零了,其实就是指刚毕业刚入行零经验的新人阶段,什么都不会,学校里学了很多基础课程,专业知识,但到了公司却发现,一个都用不上,要么是过时的技能,要么是基础的知识(其实基础很重要,地基打的深楼房才能造的高)。这阶段新人的目标就是学习。学习公司用到的专业知识,语言,框架,代码规范,规章制度,工作流程。争取学习一周可以投入工作,快则一月慢则三月度过此阶段。(三月以上没到下阶段乘早转行吧)

2、一阶段

顺利度过新手期后,就成长为一个初级的程序员了。

这里说明下,为什么不用新手初级中级高级或类似等级来表示各阶段,主要是各个公司各个人对这种等级定义都不尽相同(好比大公司的初级程序员可能比小公司的高级程序员还要强),为避免误解还是用数字代表阶段。

这个阶段程序员的评判标准:是否能独立完成功能

这阶段程序员考虑的最多的,就是能否顺利完成领导布置的任务,而这阶段程序员接到的工作任务基本都是某个模块的功能开发。

这阶段的程序员,因为经验的不足,往往还不会考虑性能,代码质量,通用性,维护性等方面的问题,他们觉得只要能在规定时间内实现功能,就算完成了工作任务。

也许有人会说,功能有简单的有复杂的,很多初级程序员根本无法实现那些高难度的复杂功能。这就是我为什么在前面说不用初中高级命名各阶段。有些人认为高难度功能就应该资深程序员才能做,实则不然。一个做了10年的普通院校专科计算机系毕业的资深程序员,真的就能比一个刚毕业没有工作经验的北大计算机系的本科生更能完成开发一个复杂算法的实现吗(这里不讲特例,只说普遍)?

这也是我前面说的,能力基本在工作前已经定型,和工作年限关系已经不大了。要知道学习能力也是程序员能力中的一种,哪怕没做过没经验,能力强的也能很快解决问题。至于领导布置给程序员一个超出他能力范围的开发任务,那是他领导问题。

3、二阶段

当程序员已经能顺利完成他公司他这个职位等级应该完成的绝大多数功能开发后,就该考虑质量性能效率这三方面的问题了。

质量:

主要指代码质量,也就是开发完的功能检测出来的BUG数量。

很多程序员有这种不好的习惯,对自己太自信或太懒,不会对自己开发的功能进行自测或完整的单元测试。往往只进行一些简单的正确性测试即发布,而不是对所有分支进行覆盖测试。最后导致结果就是开发一天,修BUG三天,被人嘲笑不是在开发程序,而是在开发BUG。

所以一个优秀的程序员,必然也是一个好的测试,在每次开发修改完代码后,都需要对修改的逻辑进行覆盖测试后才能得到优良的代码。只有养成这个良好习惯,才算进入了这一阶段。

性能:

主要是指代码运行消耗的资源多少,包含时间和空间消耗。

同样的功能模块,有的人开发后的运行时间1毫秒,有的人运行1000毫秒,动不动差距十倍百倍千倍,而在开发阶段和单元测试阶段还看不出差别,但一旦整体测试或者上线运营,就会有明显差距。

性能优化问题,主要还是经验的积累。大多数影响性能的问题都在一些细节处理上,比如一些不合理的循环和递归,性能差的函数引用,较差的算法和数据结构,不合理的数据库结构和数据库查询,没有使用一些高效的缓存机制等。这些都需要经验的慢慢积累,但首先需要有这个意识,才会有积累,只要有了这个意识,就算步入了第二阶段。

效率:

主要是指程序员的工作效率,编码效率。

这也是一个经验积累的过程。

首先是对语言和框架的熟悉程度,越熟悉当然编码越快。

其次是代码规范性问题,这个对于大公司往往不是问题,很多大公司都有一套标准的代码规范,所有人都要严格执行,并且有专人负责代码审查,不符合规范的无法提交。但很多中小型公司就缺乏相应制度和人员审查,很多就要靠自己理解执行了,先和领导同事商量制定一套代码规范,代码格式可以靠开发工具插件,但各类命名和代码注释就要靠自己写了,如何命名可以网上查看相关标准,注释的话记住类和函数必注释,重要变量定义和重要语句加注释(这里就不详细解说了,请网上搜索下)。

最后是代码复用性问题,这个是非常重要的一条,很多初级程序员不懂得如何代码复用,往往重复劳动重复再造轮子。

现在各种语言都有各自的函数库,很多基础功能都可以直接调用函数,我们只需要熟知他即可。

但还是有很多功能是需要自己开发的,特别是各自公司项目里的一些特定功能,这时候我们可以自己定义类和函数,把一些通用的常用的代码封装成通用的类和方法,以方便以后自己和同事复用。

封装的函数应该高内聚低耦合,完成单一功能,可测试的,行数不要太多(尽量保持在50行内),可读性好,编写良好的注释。

现在AI很流行,很多程序员喜欢用ChatGPT来帮他编写一段代码,这个是完全可以的,但很多程序员会直接使用而不做任何优化,也不会考虑复用这些AI帮他写的函数方法。举个简单例子,一个程序员让AI帮他生成一个坐标系中计算A点到B点距离的方法,然后又有一个计算A点到AB线中点距离的方法,他还是让AI帮他生成一个,但实际第二个方法只要第一个方法的结果除以2即可。AI重新生成必然会有大段重复代码在两个不同方法内。

掌握了代码复用,将使代码更加通用,减少自己和同事的编码量,提高了开发速度,也更易于维护,毕竟以后要修改代码或查找BUG,修改查找一个通用方法和查找N个不同的代码段花费的时间是N倍的差距。好的程序员比差的程序员效率差十倍在这个行业是很常见的现象。

程序员编码,不能只考虑眼前,不考虑将来,只考虑自己,不考虑同事合作,只考虑实现功能,不考虑性能,复用和维护性。

第二阶段这三方面,是一个人理论认知和实践经验的积累,实际上超过9成的人也就止步第二阶段,无法完全掌握如何提高这三方面。

4、三阶段

能到达这一阶段的程序员,能力,经验,态度三者不可缺一,没有能力,再努力经历项目再多,也只是掌握皮毛。而有能力,没有实际经历甚至主导过一些中大型项目,看再多理论文章也只是纸上谈兵。

这阶段已经脱离普通程序员范畴,应该叫架构师了,关注的是整体设计,架构设计(包括硬件架构),数据库设计,分布式、高并发、大数据、安全性等技术领域,功能拆解、文档编写、任务分配,进度把控等技术管理问题。

这阶段的程序员,通常一个项目只有一个,负责项目整体的技术方案选型,架构设计,任务分配,疑难问题解决,核心代码编写等,团队中该角色的高度代表了整个团队技术实力的高度。

这阶段应掌握的方面,上面已经列出,可能不全面。至于如何掌握成长到这个阶段,按部就班一阶一阶的来,能力强的快一点,能力稍差的慢一点,能力再差的就不要想了(天才也不是直接就能到这阶段的,只是天才度过前几阶段的时间短的超出普通人的想象)。这个是我们普通人技术路线成长的顶端了,再往上已经不算程序员了,科学家?

程序员是非常依靠脑子的一个职业,当然脑子不好的也进不了这一行。对于普通程序员来说,态度很重要,努力就能增加经验,努力就能更快速成长,就算你资质一般能力一般,态度端正最后也能到达文中二阶段,成为一个项目中不可或缺的中坚力量。三分天注定,七分靠打拼。对于自己,能力已经定型,经验不用担心,态度决定高度。对于管理者,招聘高能力的,不要太在意经验,管理好他们的态度,就能得到一批好的程序员,更好完成项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值