徐传运,张 杨,李 刚,张金荣,王 勇,张小川
(1.重庆理工大学 计算机科学与工程学院,重庆 500054;2.重庆师范大学 计算机与信息科学学院,重庆 400050)
以实践基地为依托,通过实际项目提升学生的工程实践能力,是培养高层次应用型专门人才的需要,也是高等教育服务国家经济建设和社会发展的必然选择。教育部在文件“关于加强专业学位研究生案例教学和联合培养基地建设的意见”中指出“加强基地建设,是专业学位研究生实践能力培养的基本要求,是推动教育理念转变、深化培养模式改革、提高培养质量的重要保证”;教育部、人力资源社会保障部在文件“关于深入推进专业学位研究生培养模式改革的意见”指出“建立稳定的专业学位研究生培养实践基地”,“注重在实践中培养研究生解决实际问题的意识和能力。”。
基于长期的学生实践能力培养经验,结合对实践基地建设和产学融合协同育人模式改革的深入思考,提出本硕联动的软件工程实践教学基地建设方法。此法以提升学生的实践能力和创新能力为目标,以产学协同育人为基础,以商业项目研发为载体,本科生、研究生、企业工程师、教师多方参与,相互协作,优势互补,共同进步,构建兼具主动性和创造性和产学有机融合的育人模式,最终实现硕士研究生和本科生实践能力、创新能力的共同提升。
新工科代表工程教育的改革方向,以继承与创新、交叉与融合、协调与共羸为主要途径,培养具有较强行业背景知识、工程实践能力,胜任行业发展需求的多元化、创新型、技术技能型人才[1-2]。在工程教育中,工程实践是积累缄默知识(即从生活经验和实践活动磨炼习得[3-4])、提升实践能力(即保证个体顺利运用已有知识、技能去解决实际问题所需的生理和心理特征,是新工科人才培养的核心之一)的重要手段,而复杂背景下的工程实践更是培养应用型高级人才不可缺少的培养手段。商业项目纷繁复杂、时时变化[5-8],导致实践能力培养面临工程实践常见的教育困局:实际工程项目以保质、准时交互成果为目标,需要有较强能力的工程人才;而学生正因为缺少工程能力才需要在实际项目锻炼。此困局使得企业参与高级工程人才培养的动力不足,产学合作难以深入持久。
针对上述“工程实践教育困局”,基于多年的软件研发和工程教育实践经验,以提升硕士研究生和本科生工程实践能力为目标,以实现校企互惠共羸为基地持续发展的立足点,提出本硕联动的实践教学基地建设方法[9],其核心理念为:
(1)以建构主义学习理论为核心。基于构建主义观点,教育有两大目标[10]:引导学生对新信息进行解释(所给出的不一定是正确的解释),强调学习的结果,价值有限;训练学生构建解释的能力(学习解释的一般规律),强调学习的方法,更为关键,故而应该引导学生在不断的实践中自我思考、自我提升。因此,实践基地建设以实践工程项目为背景构建学习“情境”,以保质、准时完成工程项目为行动目标,学生在研发过程中与同学、教师、工程师、客户、用户协作互动,在项目开发过程中积累“缄默知识”,构建知识、技能的完整意义。
(2)基于构思—设计—实现—运行(CDIO)全过程[11-12]。以软件产品从研发到运行的生命周期为载体,从满足项目研发需要出发,让学生以主动的、实践的、课程之间有机联系的方式学习工程,以企业方的真实检验条件为验收要求,培养学生的个人能力、人际能力以及对产品、过程和系统的构建能力。
(3)强调真实的产品和系统。建构主义学习理论和CDIO 工程教育都要求真实情境,基地的产学协作专注于构建面向真实应用场景的研发项目。工程化、产品化、商业化的真实项目约束因素强、质量要求高,是训练学生分析能力、设计能力、应变能力、协调能力、沟通交流能力的必要条件。因此,基地的产学协作一方面要求企业把研发项目委托给实践基地,提供必要的技术指导;一方面约束校方组织学生和教师、聘用员工,保质、准时完成项目研发。
(4)本科生和硕士生以不同角色身份在同一项目中学习、研发。在本硕联动实践基地中,本科生和研究生都是实践训练的主体,同时也相互是对方实践训练的客体。例如,项目管理能力是硕士生培养目标之一,项目管理实践需要管理对象,基地中参与项目研发的本科生数量较多,自然成为研究生项目管理能力训练的客体;而从本科生的角度来看,其系统分析、整体设计能力较弱,需要练习的主要是系统实现技能,但如果没有前期由硕士生主导的系统分析与设计,后续的系统实现训练又无法开展。
综上可知,基于建构主义学习理论和CDIO工程教育理念,产学—本硕一体化的实践教学基地建设方法的精髓在于:兼顾产学研,以发挥价值、按时交付、质量保证、互惠共羸为导向,与企业开展深入持久的合作,按需引入企业的真实项目和一线研发人员,为硕士研究和本科生实践教学创建一个工程化、产品化、商业化的真实项目环境,佐以具有较高专业理论水平的高校教师,用研发相长的模式打磨软件人才。
1)硕士生。
由于研究生的规模相对本科生小,课程体系相对简单,且研究生具有本科教育基础,更加有利于工程实践教学的深度改革,因此本文将现有的研究生课程学分划分为实践学分和理论学分,设计了“实践先行,理论提升,环环相扣,专人定制”的硕士生培养模式。
在课程设置方面,尽量以小课(课时数少于20)、微课(课时数约为10)为主;时间开设也应灵活,因为项目开发中涉及客户沟通,为了避免时间冲突,可以将理论课程开设在晚上或者周末等。由于软件工程专业硕士研究生的培养定位为高层次应用研究型人才,课程内容重在引导(即解答研究生在项目实践中遇到的理论瓶颈),而非知识的讲授,因此需要先将其投入项目中锻炼,让学生在具体的工程实践中不断遇到问题、不断思考解决方案,再利用理论课程从科学的角度对其进行解惑和提升。故本文提出基于建构主义的“实践先行,理论提升”,研究生入学后立即分入不同的项目小组开始项目研发,修得其相应的实践学分后才能够选修其相对应的理论课程,例如在选修高级软件工程这一理论课程以前必须获得“高级程序设计”这一实践课程的学分。由于课程课时较少,一门课往往能够在几周内完成,因此一学期内学生可以不断地在实践课和理论课之间切换,“环环相扣”,从而实现理论研究与工程研究的双向循环。
在最终考核方面,将项目开发过程中的综合表现纳入研究生的毕业要求,即由学术导师负责毕业论文的质量考查,给出“学术论文”成绩;由工程导师监督毕业设计(即毕业论文所依托的软件系统)的完成,全面考查研究生的客户沟通、人员管理、工作协调、需求分析、系统设计、编程实现等各方面能力,给出“工程实践”成绩,共同完成学术和工程两方面的素质考核。
2)本科生。
作为项目小组的主要构成部分,本科生是零基础(即几乎没有任何项目开发经验和能力)地进入实践基地,此时保证企业项目的正常进行、按时交付并达到企业要求的质量,是实践基地建设的关键和难点。
针对上述问题,基地采用“逆向CDIO”的渐进式本科生培养模式。
(1)本科生进入基地后,先参加为期3 个月的技术强化学习,以强化学习实践基地研发所必需的基础技术;强化学习结束后,本科生通过基地选拔进入与其能力相匹配的实际项目组,主要担任测试员的角色;在测试训练后期,优秀的测试员可以在程序员的监督下修改错误。经过此阶段的一系列训练,学生对软件、代码有了较为直观的认识,对软件设计模型转换为计算机程序的过程有了较为直观的理解,使其能够以初级程序员的角色参与到新项目中,并在高级程序员的指导下进行程序开发。
(2)参与一两个项目后,初级程序员将成长为高级程序员,担当新项目中核心程序、主导功能模块的开发。根据本基地的历年数据,部分优秀的高级程序员甚至能以助理项目经理的角色参与项目管理,或以助理分析师、助理设计师的角色参与构思、分析、设计。
由上可知,“逆向CDIO”的渐进式本科生培养过程与项目开发过程正好相反,是一种在具体软件工程实践教育中践行CDIO 工程教育理念的方式。
在本硕联动的软件工程实践教学基地建设方法中,高质量地完成企业委托的研发任务,羸得企业对实践基地的信心和信任是实践基地持续运转的保障,没有持续入驻的实际研发项目,学生的培养质量将难以得到保证。
因此,一方面,充分考虑到学生的整体开发能力难以与公司程序员相提并论,要求太高的项目流产概率极大,故而在合作项目引进方面,基地从多年的具体实践中总结出以下原则:①开发周期短的项目不能引进;②对系统安全性要求高的项目不能引进;③有极大技术难度的项目不能引进;④规模较大的项目不能引进。
另一方面,从企业的角度来说,把项目委托给实践基地需要承担较大的风险,因而与企业建立长期的信任关系对项目引进尤为重要。因此,基地要求指导教师优先考虑企业利益,充分认识到“只有保证了企业的利益,才能确保研发项目的持续引进;只有项目持续不断,才能保证本科生和硕士生的培养质量”,尽其可能地把自己的工作做足做细做到位。
学生是基地运转、项目研发的主体,但教师是项目质量的基本保障,也是基地正常运转的核心保障。
在实践基地中,每个项目组都是临时组建的学生团队,团队素质参差不齐,这对基地师资提出了很高的要求。也就是说,当项目运转出现问题的时候,指导教师必须及时发现,并迅速提出行之有效的修正方案;必要的时候,指导教师甚至要亲自参与项目的研发,以保证项目运转正常。
因此,基地积极吸收有一定工程研发背景的教师进入基地作为指导教师,他们具有工程师的思维方式,能够与企业方顺畅沟通,能够准确理解企业的真实需求。
实践基地的健康发展,关键在于按时、高质量地完成项目研发,与行(企)业建立充分信任的长期合作关系;而软件项目顺利完成的关键又在于研发团队的有效管理。
由于学生的非职业化特征和身份认知,加上高校教师的身份定位偏差、实践技能有限、项目经验欠缺等原因,以高校教师和学生为成员的研发团队的管理难度较大,因此基地将管理制度建设的重心放在:制度尽量完备而透明,以书面形式明确各方的责权利和行为规范,力求奖惩分明、责任与利益匹配合理。
本硕联动的实践基地需要调和企业对项目质量的高要求和在校学生实践能力不足这一矛盾,以实现学校的人才培养目标,其中存在大量不可控因素,建设难点较多、运行难度较大。
进入实践基地时,研究生的基础实践能力参差不齐,部分学生的实践能力达不到主导项目研发的要求,有的甚至不具备基本的编程能力,这个问题在考研压力剧增的情况下变得愈发严重。
而为了保证项目开发的进度和质量,基地规定:能力达不到相应岗位基本要求的学生不能从事该等级岗位的工作。因此,上岗定位前,所有研究生都要参加由高到低的能力测试,达到某一等级岗位要求的学生才能上岗;没达到某级岗位要求者,则参加低一级岗位的能力测试,以此类推。
但考虑到硕士生的课程容量和专业基础毕竟与本科生不同,为了缩短其在低一级岗位上的培养周期,如果研究生具有相应的岗位能力后,可以申请参加专门针对硕士生的能力测试通道(而非等到基地固定的测试时间)快速跳到高一级岗位。
在以学生为主的项目开发团队中,项目进度和质量很容易出现失控的状况。主要原因有:学生经验不足,不同学生的水平差异较大,导致难以准确估算研发周期;学生的职业素养低,对进度、质量的重视程度不够,习惯于以不严谨态度对待项目研发;学生经验不足,经常对可能出现的异常状况考虑不足,导致开发成果的鲁棒性低;学生其他学习活动导致研发过程可能中断,例如复习考试。
正如前面已论述,项目研发质量是实践基地长期正常发展的生命线,因而实践基地需要把对研发进度和研发成果质量的有效控制放到最重要的位置。对于质量控制有以下措施可以采用:加强质量意识教育,改变学生以“做作业”的心态参与项目,提升学生的职业意识和素养;加强测试,测试人员与开发的人员的配比尽量做到1:1;加强成果评审,在企业导师和校内导师的共同主持下,举行成果评审会;企业导师与校内导师执行系统级测试,控制好研发成果发布的最后关口;使用项目管理软件做好项目管理,保证研发任务的责任明确、过程透明。
关于进度控制,以下措施可以采用:加强团队意识培养,清楚每位成员在团队中都扮演不可以缺少的角色,任何成员的工作延期都会导致项目延期;制定好清晰的执行计划,并为可能的技术难点预留足够的冗余量;使用项目管理软件,确保项目进度整体透明;指导老师加强进度检查,确保项目管理软件中显示的进度是真实、准确的。
在实践基地项目研发进度和质量管理、学生综合能力培养方面,项目评审会是重要的形式。评审会由项目经理主持(通常是研究生),项目组的所有成员都必须参加(包括所有指导老师)。评审会由1~2 名学生展示所完成的工作,并分享分析设计、实现的思路,阐述思路后面的理论。过程中指导教师、项目组成员可以随时打断,以发表意见、对相关问题展开讨论。在这过程中,指导老师尽量以观察者、引导者的角色参与其中,不能把评审会变成理论讲授课堂。在评审会的总结阶段,指导教师对整个评审会进行点评、补充,如果必要,可以结合评审的内容,系统地讲授相关知识。
硕士生导师往往颇为更能重视研究生在学术方面的追求,希望学生能具备良好的学术基础或科研能力,研究生面临着“学术”与“实践”的价值排序和时间分配问题。由建构主义学习理论可知,项目实践是知识外化的过程,背后蕴含着理论支撑和思维训练。
在基地中,项目实践与学术研究是地位相等、相互促进的关系,项目选题不脱离学术研究领域,编程以本科生为主,算法以研究生为主,同一个内容由两人结对负责,时间安排遵循“项目组成员自行协调、主力替补动态变换”的原则。研究生在项目研发过程中发现需要解决的问题,边做边学边思,在应用中发现和研究,逐步培养自主寻找有价值的突破点的学术研究能力;而本科生也在与研究生的互动交流中训练自己系统的逻辑思维和语言表达能力。
经过多年的建设,基地取得的成绩也是较为明显的:首先,因为将抽象的理论知识转化为可视化、可量化的实践结果,学生的学习热情明显变高;其次,通过一系列真实项目的研发,学生的项目实践能力明显提升,就业质量(具体衡量指标为入职单位和薪水)有所提升;最后(也是最重要的),学生的自我认同感和团队认同感均有明显的加强,原本羞怯的学生从一无所知到能写出一个个功能再到完成一个个子系统,外界的肯定和客观的作品使得其自信心一点点增强,诚挚的热爱和赞同也使得其成为现行培养模式的忠实拥趸,发自内心的感恩和回馈欲又促使基地的毕业生成为后续项目的优质来源。
学生工程实践能力的培养,一直都是高等教育的重点研究领域。基于多年的教学实践,本硕联动的软件工程实践教学基地建设方法,强调产学协同机制的有效持久,为高校实践教育进行了有益的理论探索和实践创新。
前期实践结果证明,此方法能明显提升硕士生、本科生的实践能力。当然,在具体实践中还存在一些问题(如:学生加入实践基地动力不足;学生容易出现畏难情绪,中途退出实践基地;指导教师工作压力较大;学生在实践基地中难以产出高水平的学术成果),需要在未来的研究和实践中进一步解决。