- 培训机构如何成为软件人才供需体系中的重要环节
-
- 人气:
- 时间:2009-06-12
- 来源:赛迪网
- 作者:赛迪网
- 标签:培训机构 IT培训
第十三届软博会“软件人才培养与发展论坛”,赛尔凯达教育科技(北京)有限公司总经理朱志辉 演讲《培训机构如何成为软件人才供需体系中的重要环节》:
随着中国软件产业的不断发展,软件开发的人才匮乏现象日益突出。应届大学生走出校门,却发现他们的实际开发能力无法适应企业的要求。因此,IT培训机构应运而生。
但随着该产业近十年的发展,目前市场上的IT培训机构多如牛毛,其中不乏鱼目混珠之辈。如何规范培训机构的服务流程、树立培训行业规范、塑造强大的品质形象,成为了摆在每一个培训机构面前的首要难题。经过数年的摸索和积累,赛尔凯达在IT培训方面,总结了以下经验教训,现在抛砖引玉,供大家参考与分享。
软件产业是依赖人智力的产业,行业的发展在很大程度上取决于人才素质与人才结构。软件产业的竞争从根本上来讲是人才的竞争。因此,不断提高各类软件人才的素质,不断完善人才的结构和培养体系,将是未来软件产业得以强劲发展的基础。
近十年的行业从业经历,让我们赛尔凯达人意识到,一个成熟且成功的IT培训流程,它的最终目的是不断提高和完善软件行业的人才服务体系,即输出一位位合格且优秀的软件工程师。随着软件产业的深入发展,我们意识到想要达到这个目的,培训流程便不能再墨守我们传统的“教与学”模式,而应将“教学”与“实训”作为并重的两大环节统一到我们的教育培训事业中来。
下面,我们将分别从“教学”与“实训”两个方面,来分别阐述赛尔凯达这种全新的软件工程师教育培训模式。
(一)教学环节培训机构的教学过程应该本着“四从”的原则:“从难,从新,从严,从实战出发”。
1. 从难
IT培训机构存在的原因在于,中国高校的计算机专业毕业生,在知识基础方面往往较为扎实,对于操作系统、编译原理、数据结构与算法、数据库操作等方面具有一定的专业基础认识,但企业应用往往是复杂而具体的,其势必在相关工具的掌握、相关产品的了解上对员工有着更高的要求。例如,几乎所有的专业毕业生都具备编写数据库操作语句的能力,能够熟练写出基本的SQL语句,实现对数据库的访问。但企业应用往往会针对具体的数据库产品,例如Oracle、DB2,提出对海量数据存储访问的高性能要求,这样员工就必须对该产品的特点有着清楚的认识,具备调优能力。对比企业的需求,应届毕业生的知识储备是有较大欠缺的。
因此,培训机构在设计课程的时候,可以根据学生的特点找到因材施教的办法,但决不能以学生的基础薄弱为由放低培训课程的难度和技术含金量。
根据Java技术的框架组成,结合企业的实际要求,我们设计了“Java基础—JavaEE标准—流行的框架工具—高端EJB技术”一套完整的课程体系,并且确定了“基础部分着重强化思想,高级部分着重强调原理和实战”的培训原则。
在Java基础部分,着重建立学生面向对象的编程思想,以及利用面向对象思想解决实际问题的能力。在讲解思想的过程中,逐渐融入对Java基础语法的介绍,反复将Java语言和其他编程语言(例如C++)对比,使学生形成完整的思想体系。例如编写程序,打印字符串“HelloWorld”,必定是每个程序员接触Java语言后编写的第一个程序。但在赛尔凯达的教学体系中,会启发学生从实际企业需求的不断变化中,感受“开闭原则”对于设计的重要性,从而利用面向对象的思想重构“HelloWorld”程序,继而使学生建立起软件产品“视图-业务-数据访问”三层模型的概念。并利用反射技术实现工厂对象,彻底体现“开闭原则”的要求。也为后续课程JavaEE部分,以及框架编程中的Spring部分打下坚实的思想基础。
在高端技术部分,许多培训机构会停留在对工具或技术的使用办法的介绍上,而我们在介绍如何使用的同时,非常强调学生应该对工具或技术的实现原理有所了解。我们相信,“只有了解汽车构造原理的驾驶员,才能真正开好车”。例如,在介绍MVC模式之后,应当鼓励学生利用所学的Servlet和JSP技术,实现一个可复用的MVC框架,这样可以方便的引出Struts框架技术的介绍,也会使得学生在学会使用Struts开发的同时,对框架技术建立起更深刻的认识。 技术的发展日新月异,新的工具和框架层出不穷,但背后的实现原理和思想相对稳定和统一,只有深切理解框架的实现原理,才能真正抓住每种新技术新框架的核心,为学员日后的技术道路扫平障碍。
或许这种“从难”的理念会使得学员在培训的过程中会感受到较大的学习压力,也会使得培训成本有所增加,但这对于学员的未来发展会有莫大的好处,对培训机构的积极影响也会逐渐显现。
2. 从新计算机软件技术在不断的发展和演化,企业开发所使用的框架与工具也随之不断变化,而我们的大学计算机基础教育相对稳定,这也就为培训机构提供了生存和发展的空间。一个好的培训机构,必须紧跟技术的发展,不断的调整授课的内容,因此,一支强大的技术研发队伍必不可少。
赛尔凯达作为一家以技术为主导的IT培训机构,始终把教育产品的研发工作放在头等重要的位置。为此,公司专门成立研发部门,并定期的组织教师队伍的内部培训,请国内外知名技术专家,以及企业中一线从事开发工作的项目经理,来传授新知识新技术,以及企业中的技术需求动向。并于每年专门组织相关技术人员,赴北美的高校及企业考察,把握技术发展的脉搏,不断的修正培训产品,以期为学员提供最新的技术知识,保持课程体系的先进性。
例如今天,许多的培训机构在讲授Java基础时,将图形界面编程技术作为重点知识讲授,而赛尔凯达的研发团队在08年初,根据技术的最新发展以及企业的最新反馈,提出UI编程的发展方向将是强调基于Web2.0的页面编程技术,传统的Swing编程或SWT编程将逐渐退出市场,为企业应用所淘汰。因此,赛尔凯达及时对课程体系做出了调整,淡化图形界面编程,将Ajax技术以及相关的JSON,DWR,JQuery,ExtJS,DOJO等技术作为新的课程重点,适应了企业的最新需求,锻造了学员的市场核心竞争力。
3. 从严我们相信,“细节决定成败”。培训过程中任何环节的放松与失误,都可能对培训结果造成影响。因此对培训过程的严格监控,对教师以及学生队伍的严格管理,直接决定了培训机构的品质。
我们以“双师为师”作为管理教师队伍的核心目标,要求每个讲师既要保持软件工程师的优秀技术功底,又要达到一个优秀讲师的强大表达能力。为此,公司会定期对教学队伍进行培训,并聘请Sun公司的技术专家对每位讲师作严格的技术考查。同时,我们把讲课的技巧同样作为一项技术去研究,并摸索出“放松—表达—沟通—节奏”一整套培训体系,聘请专业的语言类培训师对教师作讲课技巧的训练,使技术功底深厚但不善言辞的软件工程师,能够在最短的时间内成长为优秀的讲师,将深奥技术用最深入浅出的方式传达给每位学员。
同时,公司着意打造了一支优秀的教学管理团队,对学员进行严格的管理。针对学员的年龄特点和学历背景,摸索出独特的管理方法。首先,在学员入学之初,建立学生的职业意识,让学员以员工的要求而非学生的要求来要求自己,将严格的教学纪律变换成为公司的职业纪律,无论是考勤打卡制度,还是晚自习的监督管理,都应让学员感受到严肃的职场氛围,为他们洗去应届大学生的散漫习惯,为日后进入职场打好人文基础。同时加强班集体凝聚力建设,树立交流分享的班级氛围,带动每位同学的学习热情。
“严师出高徒”,只有学员建立了“吃苦五个月,受用整一生”的认识,才能配合培训机构完成整个培训过程,收到理想的效果。
4. 从实战出发在培训的课程体系中,我们提出,应该用一个企业项目作为引领,贯穿整个教学过程。
所有的技术,只有放在一个具体的应用背景下,才能发挥出技术的价值。如果在授课过程中,只介绍技术本身,那么学员的理解将是苍白无力,缺乏应用基础的。
在赛尔凯达培训课程的开始阶段,讲师会提出一个企业应用需求,当然,这个需求是来自于真实企业的实际需求,必定是繁琐而复杂的。在学员看来,这或许是一个他不可能完成的任务。但在课程进行的过程当中,讲师会把整个需求不断的拆分,随着知识点的讲解让学员完成每个细化的小需求,将需求的迭代过程和知识点的迭代过程结合,最终在课程结束的时候,学员会发现那个复杂繁琐的需求在他的手中一步步的实现,会增加学员的成就感和学习的信心。
将知识点和具体的业务需求结合,使得学生在学习每种技术和每个知识点的时候,都能深切的认识到该技术的作用以及应用场合。并且,学员必须深入每个知识点的细节,才能完成具体的需求,只有在动手实践的过程中,学员才能发现自己在细节上的不足,并加以改进,最终才能保证教学的效果。
软件编程是一门实践性极强的学科,按照建构主义的学习理论,学员作为学习的主体在与客观环境的交互过程中构建自己的知识结构。讲师应该引导学生在实践中摸索其中带规律性的认识,将感性认识升华到理性高度。
(二)实训环节软件实训是软件人才培养体系中不可或缺的一个部分。所谓“软件实训”,是一种全新的、多元化的软件人才培养模式,是将“软件企业的研发工作”以“职业教育”的形式融入到整个培训体系中去,从而解决应届大学毕业生与企业用人需求之间的矛盾,也是学员迅速提升职业技能与职业素养的重要阶段。
对赛尔凯达而言,实训的最终目的是要完成学员自身的几个根本性转变,包括从掌握扎实的编程基本功到熟练使用企业前沿技术的转变;从编写面向教学的玩具代码到面向企业级品质的工程级代码的转变,从学习阶段的个人作战向团队协作的转变,最后是从一个培训学员的身份向一名软件工程师的身份的转变。简单来说就是将前几个月的学习中积累的量变,通过实训转化为质变。在赛尔凯达看来,如果一个培训体系不能实现量到质的转化,那么这个体系就是有缺陷的,当然,培养出来的学员也是不能胜任企业的开发工作。
接下来,我们对上面提到几个根本性转变作进一步的说明。
1.从掌握扎实的编程基本功到熟练使用企业前沿技术的转变赛尔凯达一直坚信一个观点:能够编程和能胜任研发工作之间是有很大的差距的,能够编程仅意味着学员掌握了相关的基础知识,对常用框架 ( framework ) 也有了足够的认识。但是软件企业在开发中注重的是稳定及效率。同样的工作,没经过实训的学员只能按照最基本思路来完成,这不仅需要漫长的开发周期,同时没经过严格测试的代码也不具备稳定性;相反在企业中,为了提高开发效率和稳定性,在开发过程中会大量引用一些成型的小框架与小产品。这些框架不像 SSH(Struts/Spring/Hibernate) 那样强大和复杂,但是非常具有实用价值。举例来说,为了获得一个能够具有“分页、排序、突出选择行”等功能的报表,按照基本的编程思路来做,前后台累计需要100 到 300 行的代码才能实现。但如果我们引入displaytag ( 一种专门用来生成页面报表的工具 )的话,需要50行代码就可以轻松实现,而且质量上有绝对的保证。300行对50行,这是一个非常悬殊的比例。同样,文件上传、树状菜单、表单验证、JavaBean管理、XML解析等工作,在企业中都会采用封装过的工具来实现,如commons-fileupload , XTREE ,commons-beanutils,junit,dom4j等等,如果我们的学员不能熟练使用这些工具,即便具有扎实的功底,到企业中也会感到无所适从,因为工作中用到的和他所学到的是有差距的。
每次给学员讲完一种实用技术之后,都会听到下面的学员发出阵阵的感叹声,一方面因为这些技术的实用性给学员带来了震撼,另一方面很多学员会感慨:这样的东西为什么在前三、四个月中不讲,如果那个时候学了的话,不就可以不学那么多基础内容了吗?学员的反映是可以理解的,就像我们有时也会抱怨,为什么我们小学时不先学乘法,这样我们就可以不必算3+3+3+3+3 = 15 这样的加法了,我们直接用 3 * 5 = 15 来计算不是更好吗? 这就是我们实训的最大特点,它不仅仅是一个软件开发领域的话题,更是一个教育领域的话题。我们不仅要思考传授给学生什么能力,更要考虑用什么方式、按什么顺序、用什么样的节奏进行传授。直接面向应用来讲,没有基础的支撑会欲速则不达;基础和应用衔接的太紧,学员又很难分清其中的层次。只有经过精心策划的实训环节才能达到我们的培训目的。这一点从软件企业的用人反馈中就可以看到。对于培训品质的评价,没有什么比一线工程师的认可更具有说服力。
2.从编写面向教学的玩具代码到面向企业级品质的工程级代码的转变
首先要解释一下玩具代码的概念,这是我们在培训过程中经常使用的一个词汇。为了讲清楚一个知识点或者一个概念,我们都会编写相应的代码来对所学内容进行诠释,对这些代码的要求是规范、简练、重点突出、能反映问题。但是这些毕竟是为了教学任务而设计的。在学习初期,我们无法将它彻底融入到企业级应用的环境下。同时,受学员知识能力的限制,他们在学习期间所做的作业和练习也要经过细致的调整。比如说在初期,我们不得不使用文件系统来实现应用的持久层;为了让学员理解ORM,我们不得不降低实体之间关联的复杂度,甚至会简化必要的业务需求以便突出核心内容。在这种情况下提供的案例和学员所编写的练习在赛尔凯达内部称作玩具。我们在书籍中看过的代码示例也属于这个范畴。这些代码不具备在企业里上线运行的能力。要实现从玩具代码到企业品质的突破,就要通过实训过程来完成。在进入实训阶段时,学员对所有企业应用中要使用的基础技术都有了全面的理解,对简单业务需求的应用也有了基本认识,这就为提高学员代码质量,实现品质飞跃奠定了重要的基础。
学员在实训过程中所完成的项目是完全来自企业的真实项目,业务复杂度和需求没有经过任何的简化。教师在这个环节中的作用也从前台走向了后台,从一个知识的传授者转变为一个质量和进度的监督者,只在关键技术选型和难点上给学员一些必要的指导,其实质是扮演一个研发团队中项目经理或技术经理的角色。在整个开发过程中我们会严格按照企业中的质量管理规范来要求学员,所有模块的功能实现是最基本任务,同时学员还要为其负责的模块编写需求分析文档、设计文档、数据库设计文档,以及伴随着开发进度所形成的完整测试用例、开发报告等QA方面的内容,对规范程度的要求甚至高于目前的一些中小型企业。
除了上述一些专业的项目管理手段外,实训中最为重要,也是学员收获最大的部分就是我们的压力测试环节。如果不能达到我们的压力指标,那么学员就要一次一次的对代码进行调整或重构,这个过程正是学员真正开始用自己的智慧和思想体会软件之美的过程。有的同学说,即使最终他也没有独立的解决自己遇到的问题,但是一整天不断的思考、测试过程对他来讲更加受益匪浅。毕竟软件培训最终要培养的是具有独立思考能力的工程师,不是只会按照老师的套路来写代码的程序员。我们认为“授之以渔”的祖训说的就是这个意思。所谓的研发经验,我们的确可以通过课堂传授给学员,但是要想让学员真正吸收这些经验,并且能够驾驭自如,就一定需要他自己在实践中完成,没有人可以代替他、帮助他。实训正是给了学员创造了这样一个环境,让他通过这个过程完成最后的飞跃。
3. 从学习阶段的个人作战向团队协作的转变现代软件工程早已告别了个人传奇英雄的年代,任何一个大型软件的背后都有成百上千个工程师的身影。所有的软件企业中都要求员工具有团队精神,而这四个字在软件开发中所代表的含义并不像一般学员想象的那么简单。在普通学员的理解中,所谓的团队精神就是我可以和别人处好关系,别人有问题时我帮他讲解一下就是了。其实这仅仅是团队精神最基本的一些表象。在软件开发这个智慧密集型的行业中,团队协作是需要有必要的技术平台支持的 。一个文档,六个人编写,怎么保持同步?一个模块,六个人开发,怎么协调运行?一个人出现的BUG,如果影响了另外一个人的代码,怎么解决?这是需要专业的版本控制工具和BUG管理工具的。如果说团队协作在前期仅仅体现在相互帮助或简单的任务分工范围内,那么实训阶段的团队就是建立在专业平台支持下的大规模协作这个层次。学员熟悉这个平台的过程,就是锻炼他团队协作能力的过程。在赛尔凯达的实训中,版本控制和BUG管理会贯穿整个实训。这样学员不仅仅能够具有协作的良好愿望,同时也具备了完成复杂协作的技术能力。
当然,除了技术上的支持之外,学员还必须去面对团队的分歧,面对激烈的讨论,他们会去谅解犯了错误的团队成员,也会为自己的失误进行自我反省,这些都是培养良好团队协作能力的必经之路。团队精神为什么在实训中体现的如此明显?原因很简单,在学习阶段,团队的重要性并不大,你作业做不出来,我可以给你讲,但讲完之后你还不会做,这并不对我产生影响。实训就不同了,一个队员的错误,要影响到整个团队的表现。只有学员们真正的开始需要对方了,团队的概念和意识才能真正体现出来。
4. 从一个培训学员的身份向一名软件工程师的身份的转变这是一个软件技术之外、教育范围之内的问题,这也是我们常说的职业素养的问题。如何面对压力?如何适应紧张的工作环境?如何协调工作与个人生活之间的矛盾?如何和同事进行有效的沟通?.…..这些都是应届毕业生较为欠缺的东西。作为职业培训,我们不仅要注重学员的技术与技能,同时也要关注学员自身素质的锻炼。为此我们在实训阶段为学员制定了系列的职业素质课程,同时整个实训环境及工作纪律完全采用企业管理。指纹打卡,严格管理,科学绩效。这样培训出来的学员才是真正的软件工程师, 不仅技术过硬,而且心理过硬,这样的工程师才能面对开发生涯中的种种挑战。也许我们的职业素质课程并不能完全改变一个学员的性格和习惯,至少我们期望,通过这样一个环节能让学员知道企业倡导什么样的价值观。
上边谈了一些软件实训过程中的观念,但是一个好的思想必须有务实的行动才能落到实处,下面与大家分享一下赛尔凯达在实施过程中的部分心得体会。1.实训该由什么人来实施 ?
很多机构采用学生与企业直接见面的方式,由企业中的工程师直接带领学员完成任务。但是经过我们的实践来看,这并不是一种成功的方式。我们发现企业中的工程师在与学员的交流上存在很大的障碍,因为工程师不懂得如何引导学员完成任务,同时也缺乏讲解问题的技巧和耐心,在沟通成为障碍的前提下,实训效果可想而知。如果完全由教师承担也会存在问题,教师在授课上是长项,但是他们与企业的前沿技术之间存在着一定的差距。
赛尔凯达所选择的实施方式是由教师和企业共同完成,当我们从企业中接手一个项目时,我们首先会让教师团队和企业接触,由教师吃透这个项目,再制定学员的实训计划,由老师去完成项目的实施过程。企业的工程师负责对项目进行验收。这样既保证了项目实训的品质,同时也结合了职业教育的特长。教师队伍的技术也得到了及时的更新。显然采用这种方式我们会付出许多额外的成本,比如我们办IT技术沙龙的开销,企业中技术顾问的开销等等,但是我们一直坚信:职业教育是一个不同于其他行业的行业,学员托付给你的不仅仅是学费,还有他个人的前途,所以当品质和成本产生冲突的时候,我们无疑会选择品质。
2.实训要多长时间?偶然看到某培训项目介绍,“4个月的课程,学习过程中学员能完成16个企业项目,52000行代码,这相当于一个程序员两年的工作量。”看完之后感觉真的让人哭笑不得,16个项目,平均每个月4个,一个程序员两年的工作量可以由一个学员在4个月内完成,看来中国的程序员很清闲啊。在软件行业中,一个大型项目是以年来计算的。中小型项目也要几个月,除去需求调研、设计、测试等工作,纯粹的编码时间也不会少于1-2个月,只有达到这种规模才能称得上是个项目。学员完成的实际代码量中不应包含在教学过程中写过的作业和练习,前面我们把这些代码称作玩具代码。所以如果想让学员真正获得项目经验,实训时间至少要在1-2个月之内。这也是赛尔凯达一直使用“3 + 2”(3个月基础技术学习加2个月项目实训) 或“ 4 + 1”(4个月基础技术学习加1个月项目实训) 这种培训模式的原因。
想到此,总会记起学生时代我们很多人练习的一个叫做“星际争霸”的电脑游戏的过程。游戏伊始,无人指点、懵懵懂懂,整个过程举步维艰。后来,找到同学中的资深玩家,向其虚心请教其中奥秘,同时下载了众多玩家视频作为学习资料。这个阶段就相当于我们的培训过程中的基础教学环节,即学员听了老师的课,也记了课堂笔记,此时便自以为是个合格的软件工程师了。
当时沉迷于游戏的我们亦然,自觉经过了名师指点,又研习了成功战例,见到对手便摩拳擦掌,跃跃欲试。游戏实战开始后,面对严阵以待的对手,一下子就手忙脚乱起来,那本烂熟于心的操作步骤全部抛到了九霄云外,结果自然是惨败而归。回来后再找同学请教,得到了他极有价值的指导-------继续练。
其实,游戏如此,软件培训的过程更是如此,要达到一定的水平,就必须经过必要的、有价值的练习,从这一点上来说,在基础教学环节结束之后,保证1到2个月的实训时间就显得非常有必要了。
上一篇:培训,要成为真正的加油站下一篇:培训机构如何赢得学生和家长的心
-
- 加入我的分享[需登陆操作]
- 评论
