软件工艺学在高职软件专业教学中的实践探索

2018-02-24 14:46钱宇虹
新疆职业大学学报 2018年2期
关键词:工艺学开发者代码

钱宇虹

(武汉职业技术学院 计算机技术与软件工程学院 ,湖北 武汉 430074)

一、引言

在职业院校教师们按照软件工程的理论组织软件开发实训项目的教学。凡此种种无不体现软件工程在业界和教育界的话语权。可是,软件项目依然失败率很高,软件不能按期交付,软件质量差强人意,软件功能不能满足客户的需要。为什么人们遵守软件工程依然完不成软件项目呢?人们已经认识到软件工程的不足,并且由此产生对软件工艺的思考。软件工艺学认为,编程是一门工艺技巧,软件开发不仅仅是一项技术工作,也是一项人文工作。只有当技艺高超的开发者编写出高质量的满足客户需要的代码时,整个软件开发才是真正有价值的。[1]那么如何将软件工艺师的优秀品质融入到软件教学当中,如何培养技艺高超的开发者是现代职业教育需要改进的方向。

二、教师需要认识软件工程的不足

认识软件工程的不足是我们教育工作者转变观念和转变开发方式的起点。超大型的软件项目(超过1 000人/年)都有一个共同点,就是在项目前期软件开发者等待硬件的开发,在项目后期硬件开发者等待软件的开发。所以在项目前期硬件还没有完成的时候,由于运行代码的硬件环境根本还不存在,所以不可能编写代码,软件开发团队有充足的时间做需求分析,编写详细的软件需求规格说明书。需求文档完成之后就交给设计团队去设计。当硬件完成可以投入使用时,软件开发者立即着手将设计转换为代码,此时整个项目都在等待软件的编写和测试,所以这个阶段需要投入大量的人手才能加快交付的速度。同时还需要对代码进行复审,确保与设计文档相符合,才能保证下游的集成阶段不出问题。所以软件工程需要大量文档,也需要专业化分工,分析师负责获取并记录用户的需求;设计师负责从需求文档制造出设计文档;程序员负责根据设计文档进行编码。这种文档驱动的开发方式使得任何一份文档的修改都要付出高昂的代价,因此任何修改都要受到严格控制。根据IEEE的定义,软件工程是指采用一种有组织、有纪律、可计量的方式来开发、使用及维护软件,也就是在软件领域中采用工程学。[2]

软件工程的不足首先体现在软件工程并不适合所有软件项目。软件工程是为了解决大型项目遇到的问题,这些项目需要庞大的团队历经多年。但是现在绝大多数软件项目都是由相对较小的团队完成的。

软件工程的不足还体现在忽略了一个重要的因素,那就是“人”的因素。软件工程对团队中的个人应该如何锻炼自己的技艺这个问题几乎没有论述。[1]相反软件工程给我们一个暗示:只要能定义一个有组织、有纪律、可计量的开发过程,任何人都可以完成软件开发,因此我们不需要技艺超群的高手。而事实上,优秀的程序员和设计师所犯的错误比别人要少得多,并且发现错误也更迅速,所以程序员的知识、技能、经验和职业素养对项目成败起着至关重要的作用。

三、教师需要学习软件工艺的理念和实践

软件工艺的理念和实践是我们教育工作者改进软件教育的理论基础。工艺学针对的是个人能力,软件工艺把极具专业精神的开发者称为软件工艺师或者软件工匠,它蕴含着专业、务实、自豪的态度[3];软件工艺认识到软件和其他传统工艺的的差异,并注意确保软件工程所取得的成就不会遗失,还需要利用工程学给我们带来的新工具提高工作效率,让科学知识和实践知识互相补充;更为重要的是,软件工艺将职业荣誉感重新带回软件开发行业,工艺学认为那些出类拔萃的程序员对软件项目的成败极其重要,鼓励开发者编写优秀的软件,同时关注如何让开发者成为优秀的开发者;软件工艺抛弃了软件工程大量使用平庸程序员的做法,用少量优秀的开发者来替换他们,因此管理变得更容易,层级式的企业结构不再适用,取而代之的是扁平化管理,因为知识、技术和能力都掌握在员工手里,软件工匠不需要“命令-控制”型管理者,而是需要善于处理开发者、使用者、和客户之间的关系的管理者,软件工艺学认为一个真正优秀的开发者比管理他的人有价值得多。

四、软件工艺在软件专业教学中的实施方法

(一)加强程序设计课程与实践的融合

会编程不等于会开发软件。当前程序设计课程最大的问题在于:教师是脱离实践的环境在孤立地讲解编程语言。这种教学方法相对枯燥,难以培养学生的学习兴趣和学习积极性。更一步说,程序设计课程与实践的脱节妨碍了学生能力的发展。例如:老师在课堂上只讲解如何编写循环语句,却不告诉学生如何正确地使用循环,循环在实际工作中是如何解决问题的。为了让学生能够知道大型应用程序是如何使用循环语句的,我们改进了教学方法,在学生了解基本的语法和小型案例之后,教师带领学生一起剖析研究一个一万行左右规模的带有注释的程序,用这种方式告诉学生如何编写真正有用的程序,教给他们正确的、合乎习惯的语言用法。

(二)培养学生对编程的热情和务实的态度

软件工艺的理念包含两个部分:热情和务实[3]。热情就是热衷技术,务实就是认真工作,这实际上是软件工艺所倡导的生活方式和做事态度。那些对技术热衷、对工作负责的软件开发者总是会得到企业的青睐。

对技术热衷,对学生就意味着要主动学习。要告诉学生如果他想成为优秀的软件开发者,他必须首先表现得像个专业人士,这意味着自己要花时间去提升知识水平和磨练技术,应该自己掌控自己的职业生涯,主动安排学习内容和学习时间。要引导学生不能只拘泥于教材,还要多看其他专业人士撰写的书籍。不仅要看讲述具体技术的书籍,也要读讲述新概念、新范式、新做法的书籍,因为从概念书籍里学到的基础知识,可以帮助开发者更快地掌握具体技术。软件行业的变化速度比其他行业都要快,语言、框架、实践、流程都在持续进化,软件开发者要想获得成功,就必须紧跟时代步伐,并不断完善自我。

认真工作和精益求精,对学生就意味着要反复练习。要想写出高质量的代码,就必须练习提高代码质量,除此之外别无他法。练习的重点是目前所学习的技术,练习得越多就越适应,到后来就慢慢感到自然提高了。练习的时候要尽力编写质量高的代码,就算花很长时间给变量、方法、或类起名字也没有关系,关键是尽力找到最恰当的名称。做练习的时候不仅要完成任务,而是要竭力做得最好。要告诉学生什么是做工精良的代码,所谓做工精良,就是说,无论应用程序有多旧,开发者都能轻易理解其原理;程序的副作用都在明确掌控之中;程序的设计清晰而简洁,业务逻辑也都很好地表述在代码之中;测试用例的覆盖度很高,测试代码也写得比较可靠;添加新功能或修改现有功能,所花的时间不会太长[3]。

(三)丰富学生的职业技能

由于软件工艺指导下的软件公司变得更加精简,组织结构变得更加扁平,它要求软件开发者不能像过去那样只精通一项技能,而是要成为公司所需的通才。为了适应这种工作方式,软件开发者必须提升自身技能,写好代码只是对软件开发人员的最低要求。现在的软件开发者还需要具备测试能力,分析能力,对业务的理解能力,良好的沟通能力,以及更为外向的个性。软件项目要成功,必须有优秀的软件开发者参与协作,他们不只善于写好代码,还能帮助业务人员达成他们的目标,提供建议和反馈。

教师在专业教学中特别把技术文档编写、PPT制作、技术主题演讲纳入训练的常态和考核的范畴,由学生自己担当评委进行互评打分。这样的内部研讨学习环境,使学生更有动力深入研究所学习的技术,因为没有谁愿意在知之不深的情况下走上讲台或者担当评委。通过这样的反复训练,不仅使学生养成深入思考的习惯,而且在职业技能和职业自信心上都得到了大幅提升。

(四)建立工作室制度或导师制

在传统工艺学中,学徒期是一个相当长的时期,软件工艺也继承了这个传统,原因在于现在学校里的教学模式无法有效地将技艺传授给学生。要学习一项技艺不仅需要认真观察师傅的操作,而且还需要在师傅的监督和指导下亲手实践。

软件专业自2016年以来全面开展“英才计划”,按照“全体合格+部分精英”“全面合格+专项特长”的人才培养思路,分别建立了软件精英俱乐部,大数据工作室,云计算工作室,得到学院从场地到经费的大力支持。来到工作室的学生得到良师的指导,经过一年或两年的时间,已经脱颖而出,取得了显著的成绩,在全国各种软件大赛、大数据技术和应用大赛中取得了很好的成绩。

(五)引进企业进驻教学大楼

高校的课程很少有为真实的项目开发而设置,因为高校不是软件公司,大学教育模式的问题在于它无法为学生提供足够的实践指导,软件工艺所倡导的协作开发和成果复用在学校反倒认为是在作弊,而且学校课程侧重强调软件开发中的技术而忽略了重要的“软技能”,“软技能”同样是成为优秀的软件开发者所必须的。笔者在校企合作与技能型人才培养模式上经历了多年的研究和尝试,最终确定引企入校是适合软件人才培养的校企合作最好方式。

引企入校是引进软件企业实体进驻教学大楼,由学校提供相对便宜的办公场所和实习生,由企业提供商业项目和企业讲师。学生在第三学年暑期开始以实习生的身份参与企业的真实项目开发。企业讲师由经验丰富的软件开发者担当,他们负责安排和指导实习生的工作,并为学校开设培训课程和编写培训教材。从工艺学的角度来说,开发者最了解软件开发中的问题,他们在担任讲师的同时也在实际项目中工作,因此他们能编写出有用的教材,他们讲授的课也最贴近实际情况,最终是所有人都受益:学生在校期间就知道了商业应用软件开发是如何进行的,获得了宝贵的实际项目经验,为他们成为优秀的软件开发者缩短了进程; 企业不仅降低了生产成本,而且还可以从学校获得源源不断的人力资源,许多优秀实习生毕业后直接成为企业的正式员工,实现了从学校到企业的无缝衔接;学校从校企合作中提升了服务社会、服务企业的能力,提升了学校办学知名度和办学能力; 校、企、学生才能真正实现了三方共赢。

猜你喜欢
工艺学开发者代码
脑工终结时代的来临:通用人工智能机器生产工艺学批判
机械制造工艺学课程多元化教学研究
关于材料工艺学教学实践与改革的相关探讨
创世代码
创世代码
创世代码
创世代码
藏族工艺学的历史渊源及其相关藏文伏藏文献概述
“85后”高学历男性成为APP开发新生主力军
16%游戏开发者看好VR