一个从事多年的开发的老程序员和一个刚入职的新手,同样开发一个新功能,都按照产品Prd实现了相关功能,这是不是就意味着新人有替代“老人”的能力呢?他们的差别有多大?有十万八千里那么远吗?
细思,发现差别有以下五点:
一是时间成本。毫无疑问“老人”熟悉项目开发的流程,比新人有更熟练的技能,对工具运用的更熟练,有扎实的基础知识,对于功能的实现能正确的使用API。
二是效率。开发中经常会遇到各种编译问题:如不能识别的类,接口,甚至变量,甚至各种maven的报错,这些问题往往是协作开发中某人不小心提交的错误,“老人”面对这些问题往往能在最短的时间能追根溯源解决这些它,而新人通常是无所适从,没有解决思路,如不及时寻求帮助的话,开发进度会大大的滞后。
三是代码的规范性。规范性简单的说包括变量、类、接口的合理的定义和命名,空指针的判断,异常的处理,代码的重构,常规通用写法,还有更重要的事代码注释。代码注释体现的是一块功能实现的逻辑思路。好的注释不仅有助于其他开发人员迅速读懂代码,对自己而言也能迅速了解当初设计的初衷。这个过程中显眼“老人”比新人做的更好,能写出恰当的注释和规范。
四是代码的扩展性。“老人”通常会根据业务写出便于扩展的代码,重构常用的功能。新人可能只注重业务实现的当下的功能,代码缺乏一定的扩展性。
五是性能。经常有一些功能的实现可能存在的一些性能问题,可能是应该批量调用而目前接口只支持循环调用,也可能是复杂的SQL查询导致性能慢的问题,也可能自己代码写出性能隐患,“老人”更善于发现,规避,解决此类问题。而新人往往因为经验的缺乏会带着问题上线,导致后续一系列的问题。
以上五点总结起来无非是“经验”二字,但是经验又是不可衡量,非标准化的。有些人经验是不断的重复,五年的开发经验如同一年,而有的人则是不断的累加。
新人和“老人”差别多少诸君自己判断。