从严格意义上来说,程序员是软件制作中一个环节,程序员有其职能的范围,他的上层是设计人员所编写的设计方案,他的下层是测试人员。但是,中国的程序员应该来说是很特别的,尤其是中国软件业发展的初期,许多程序员是全能型的,这个程序员身兼数职,既是软件设计人员,又是程序员、测试人员。有的甚至全包,既要搞软件,又要搞硬件;连需求提出,项目立项、硬件采购,投产维护都是一个人所为。这样的人往往被单位视为无所不能的人才,被加以重用。直到现在,许多单位的电脑人员承担着系统维护工作,一些小的项目从需求分析,到方案设计,到编程,到测试,到投产,到维护都是一个人承担了。
全能型的程序员综合能力相对比较高,他对软件开发的流程具有一定的经验。许多人并不遵循软件工程分阶段的要求,怎么方便怎么来。比如有些人连设计方案都不写,直接编程,运行差不多就上线,上线后出了问题,再去改程序。这种极其实用主义的做法,影响了整整一代的程序员。
全能型程序员往往单枪匹马,做事果断迅速,而且能把程序编出来,因此所有的成果都归结于程序员一人,所以,这样的程序员在单位里,没有竞争,离了他就不行,十分吃香。外行人对他更是刮目相看,崇敬之之。
全能型程序员这样的程序员,由于精力分散,不可能在编程上投入全力,而且在单位其开发项目和范围相对固定,程序员的视野很窄,由于没有人交流,有的甚至不愿意和同行交流(怕自己的项目被人抢去),加之软件技术飞速发展,而自身没有跟上新技术的动力,甘于维持现状。所以全能型程序员的技术水平不可能很高。但是整个软件业的发展又是需要高技术水平的人才,所以全能型程序员只能越来越少。取而代之的是更加专业的项目管理人员、系统设计人员,程序员、测试人员、运行维护人员等。
现在的问题是软件制作专业化了,许多程序员不懂硬件、不懂需求、不懂需求分析,不懂总体方案设计、不懂测试,只会按照设计方案编写程序了。这样的程序员和全能型程序员相比综合知识要相差很多,综合知识薄弱必然对编程技能的提高也是有很大的限制的。
我的体会是一个好的程序员要从编程序开始,逐步向系统设计、项目管理等更高目标进发,当实现这些更高目标后,再去重新审视编程,我想那是将另一番新的天地,而且编程水平将会有本质上的提高。