从软件工程师到程序员
最近看了CSDN上的一片文章,叫《软件工程师的衰落与程序技术员的兴起》。这篇文章对软件工程师和程序员作了比较深刻的分析。文章开篇一段话是这样说的
我们真正看到的不是软件工程师或计算机科学家的消亡,而是程序员和技术员的崛起
也许你会说软件工程师和程序技术员难道不是一回事吗?前者不过是较正式的表述,后者是偏口语化的名词。其实不然,或许看一下这篇文章引用的英文名词更容易理解:软件工程师——Software Engineer,程序技术员——Programmer Technician。Technician 中文意思是技术员、技师、技工,两者核心的区别在于人才的培育成本不同。Engineer通常需要本科及以上教育,更重理论,成本较高;Technician一般只需专科教育或者职业培训就能输出,以标准化高效率地完成技能操作为主要考核指标,成本相对偏低。
确实,随着软件开发技术和互联网技术的发展,编程工作的门槛在逐渐降低。市场对编程人员的大规模需求,也在加速推进程序员人力资源的输出。简单说,程序员是在技术和市场的双重作用下兴起的。那么软件工程师呢?他们被程序员们抢了饭碗了吗?当然不是,正是软件工程师们的不懈努力,将复杂的编程工作模块化,产品化,不断降低编程工作的难度和门槛。这是软件行业从诞生走向成熟的必然过程。事实上,早期的软件工程师也是数学专业出身,这些伟大的先驱者开创了软件开发这个新领域。一代又一代的软件工程师让这个领域变得更成熟、更专业。
不仅是软件行业,每个行业的发展过程都是如此。行业变成熟的过程,也是分工细化的过程。汽车工业早期,只有那些对冶金和工程有着深刻理解的人才能制造、设计或修理汽车。而现在,汽车生产流水线上的普通工人对汽车工程和冶金知识几乎一无所知。同样地,早期的软件工程师只有在数学、计算机科学或电子工程学方面受过正规教育的人才有资格获得这个头衔。而现在的程序员,学位已经不再是一个必要条件,通过专科和职业培训也能从事一部分编程工作。下图是根据《软件工程师的衰落与程序技术员的兴起》文章内容梳理的软件和汽车工业的发展过程,值得细品一下。