游 骅
又是一年春暖花开,也恰是莘莘学子们紧张忙碌的季节——他们正面临毕业的抉择和考验。说抉择,是因为他们需要决定毕业后的发展方向——是继续深造还是开始工作;说考验,是因为他们并不确定象牙塔中的多年修炼是否可以达成自己的愿望。
其实,这个季节里紧张忙碌的又何止是毕业生?为了招到合适的人才,用人单位又何尝不是在奔忙?在市场经济的条件下,在这场关系到多方利益的“招聘运动”中,要想取得共赢结果,“需求”扮演着非常重要的角色。只有供给与需求相匹配才能产生最大的效益,并最大限度地避免资源浪费。
社会对IT人才的需求到底是什么呢?本文尝试从个人的角度与读者分享一些观点,希望能为教育事业尽些绵力。下面首先列举IT企业中技术人才的分类与基本技能要求,进而探讨高等院校如何培养这些技能。
一般来说,一定规模的IT公司需要的技术人才分为两大类:管理协调人员和工程技术人员。管理协调人员在项目或团队中充当协调各方资源、监控进度和对外统一接口的角色,主要负责流程与管理工作——项目经理就是这类人员的代表。这种管理人员具有相当的技术理解力和资源的(主要是人员)协调能力,能够保证项目按时按质完成,
他们一般从有工程技术经验的人员中选拔而来,一般占技术人才的比例不会超过五分之一,应届毕业生很难胜任。除了这类人员,公司的主要研发力量是工程技术人员,对此类人才的分析也是下面探讨的重点。
工程技术人才涵盖广泛,是IT公司中的主要生产力。按照功能划分,这类人才主要包括开发工程师和测试验证工程师。下面以软件技术人员为例,将其职能的分析总结如表1所示。
在成熟的企业团队中,开发人员和测试验证人员各占50%;由于测试验证功能对产品的成功起着越来越重要的作用,某些情况下测试验证人员的比例可能更高。另外,技术人员中还有(相对于其他技术人员来说)一小部分主要负责运行、维护基础IT设施,如员工使用的电脑、电信网络、服务器等。除此之外,市场技术部门也有一些具有技术背景的工程师做产品售前或售后的技术支持工作。
以上对技术人才的要求分析十分粗略,只列出了一些基本技能和素质要求。而在以前的校园招聘中,招聘人员也总会面对毕业生咨询“写简历有什么技巧”、“面试有什么技巧”之类的问题。其实秘诀很简单——能够被用人单位录用并非是靠这些所谓的“技巧”,而是靠长期修炼获得的基本能力——尤其是主动学习的能力和素质。这些能力和素质是对毕业生最基本的要求,它不是一蹴而就的,而是从大一、大二就开始培养的。
举个例子,对大多数软件工程师来说,C(C++)语言是一切工作的基础。对指针的理解和运用绝不是通过简单的考试就可以满足实际工作需求的——如果学生没有真正仔细分析一些应用程序的源代码,甚至自己动手实验实现一些功能,可能永远无法真正理解指向指针的作用,在工作中遇到类似回调函数时也会不知所云。
再如,现在很多大企业有自己的企业文化、工作规范和流程,公司需要有很强的学习和适应能力的技术人才。在正规的软件公司,不是只要写出可以运行的程序就可以,工程师需要按照公司的规范进行命名、加注释及撰写相应的文档。如果学习编程时没有养成良好的编码习惯,认真完成实验报告,员工一旦开始工作就会觉得非常不习惯,影响上手的速度。现在大多数企业都喜欢有工作经验的学生,因此很多学员愿意采取实训的教学方法。从公司的角度来看,实训不应成为唯一被重视的方法,学生不应只重视实训这类大型和正式的实践活动,而应该在平时就注意锻炼自己的动手能力,踏踏实实地做好一个个课堂实验,认认真真地完成好每一个作业。只有这样才能扎实地练好编程的基本技术,积累知识和能力,为今后的发展打下良好的基础。
订单式教育是个很好的培养思路,但是学校也应该慎重使用这种方式。学校还是应该将培养重点放在基本素质的培养上,尽量避免盲目跟风。因为在IT领域,实效性是一个不可回避的问题,如果培养方向并不是真正的业界趋势,现在培养的学生很可能在毕业时找不到合适的工作。另一方面,谨慎也不是墨守成规。我们的教育工作者应该能够认清潮流,与时俱进地调整、增减教学重点,培养出市场需要的人才。比如现代处理器的发展使得单纯依靠CPU主频提升获得应用程序性能提升的“免费午餐”已经成为过去,并行化程序设计成为大多数程序员需要掌握的技能;如果还指望“免费午餐”过活,很快就会被淘汰——因为竞争对手会通过并行化的编程尽可能地发挥出已经日益普及的多核处理器平台的计算能力,从而在这一领域拔得头筹。
总之,对学生来说,应该把学习重点放在基本能力和素养的提高上;对教育工作者来说,应该把培养重点放在对学生基本知识、技能和素质(如主动学习)的教育上,顺应业界主流方向,这样就不难培养出市场需要的优秀人才。