软件人才不是从书本中来,也不是从证书中来。软件人才只能从实践中来,从软件中来
软件业的发展是关系到中国高科技能否站到世界前沿的一件大事,受到国家有关领导部门及信息产业界人士的高度重视。一个产业的发展需要有三个基本条件,即资金、人才和市场。今天的专栏针对如何培养软件人才进行分析和论证。
软件人才的缺乏是世界上众多国家,包括世界第一大软件国美国,所共同面临的问题。由于中国软件业发展相对较晚,规模较小,人才缺乏就显得更加突出。在政府大力号召和支持国内软件产业发展的情况下,如何以快速度培养出一大批高质量的软件人才就成了一个很迫切的话题。
从过去一年多看来,国内的解决方法大致有两方面。一是软件人员的培训。新办的全国35所软件学院去年秋季都已开始招生,有读硕士的、博士的,也有读本科或第二学士学位的。有的班面向所谓“蓝领”人才,即软件工程师;也有的班面向“白领”或“高级”人才,即软件结构设计师或经理级的管理人才。同时,许多脱产的或业余的软件培训班亦应运而生,以满足希望转行的技术人员之需要。
解决方法的第二方面则是软件企业的培训。更具体地说,就是通过CMM的考试认证,来提高一个企业在开发软件方面的素质。一年前,通过CMM3级的企业还屈指可数。目前一些企业已达到CMM4级,而最近东软则率先达到了CMM5级的认证。
学院式的培训以及CMM的认证是否能达到快速培养高质量人才的目的呢?软件人才到底从何而来?要回答这些问题,必须先了解软件是怎么开发的,软件人员需要什么技能和知识结构,以及软件人员的成长路线。根据在美国Sun公司领导软件开发团队的经验以及多年在硅谷的耳濡目染,我认为软件开发与其说是科学技术不如说更像艺术或体育,扎实的基本功与刻苦的训练虽然重要,但最终的成功是通过大量的实战,不断地积累经验,不断地在比赛中磨练而获得的。
软件人才的知识结构
一个软件产品不是存在于真空中的。 它是针对某一类应用的需要,通过一定的开发工具,面对某些特定的运行平台而开发出来的。 因此, 除了足够的计算机背景和编程技巧之外,一个好的软件工程师还要具备如下几方面的知识:
1. 通用的软件工程知识。譬如,一个好的工程师应懂得从产品需求书、项目规划、软件系统框架设计,到具体界面设计、编程、测试等一系列步骤,知道哪一步应做什么。
2. 软件应用领域的专业知识。举例说,如果一个软件是为银行业所用的,那么懂得相关银行业务就对软件的设计和修改有决定性的作用。而如果设计的是java.net这个程序包,就一定要了解其他程序员怎样使用网络界面最方便,因为java.net是针对这一群“用户”的通用界面。
3. 具体软件工具和环境的知识。在做一个软件产品前,要选定软件的应用平台、操作系统,以及编程所用的程序设计语言和开发系统。用Java 开发一个运行在Solaris服务器上的企业级的应用软件与用C++编写Windows XP上的个人应用软件,对一个工程师的专业知识结构有很不一样的要求。譬如,如何利用Java虚拟机的特点提高程序效率,如何利用CVS的特点更有效地管理开发,如果是开源软件,如何与开源社区协调等等,问题都因项目而不同。
显然,这些知识大部分是在软件班的课堂上学不到的。只有通过大量实践,才有可能成为软件开发的专家。而也只有能力强,吸收快,积累多的人才有可能成为专家。
