软件开发逆向教学思维的探讨

2021-07-12 09:27刘振兴李太宁
科技视界 2021年9期
关键词:入门逆向软件

叶 钰 刘振兴 李太宁

(泰州职业技术学院<信息技术学院>,江苏 泰州 225300)

1 企业用人需求分析

笔者通过电话与网络采访搜集了23 家软件开发企业的招聘需求,这些企业在2020 年一季度共计招聘软件相关岗位需求是16 个,其中基础软件开发类需求岗位为9 个,占到总岗位需求数的56.25%。 这些基础软件开发类需求大致可以总结成使用不同的编程语言与技术, 完成上级交办的开发任务。 从此可以得出结论, 企业需求量最大的是实现软件基础功能的开发人员,而设计算法、架构调整等对专业技能要求较高的职位占据的比例则小很多。 所以对于软件开发专业的高校教育来说,尤其是高职院校的教育目的,首要并不是理论知识是否完备,基础是否牢靠,而是应该将能否开发出可用的软件功能作为首要目的。 针对学有余力的学生,再鼓励并指导其进行深层次的学习。

人类社会发展到现在,任何现存的知识体系都已经是极其复杂并相互嵌套的。 几乎没有人能将一个专业的所有知识从底层开始全部掌握清楚。 软件专业由于发展时间较短,发展速度极快,导致教学模式远远跟不上产业发展速度。 计算机原理至今还是软件开发专业必修的基础课程之一,但实际情况是,就连内存溢出这种曾经被认为是每个开发人员必须深度掌握的知识, 如今绝大多数编程语言都已经能够自动解决,只有少部分不得不用到C 系列等语言进行开发的工作岗位需要熟练掌握。

2 逆向教学模式的理论依据

如何吸引人们的注意力,引导用户产生兴趣,其实在心理学、新闻传播等学科的研究已经非常深入了。近几十年来, 学界针对各种这类问题进行了非常多的实验。 例如:什么样的油画更容易被买家购买,什么样的流行歌曲更容易被传唱并引起话题等。 《大西洋月刊》的专栏作家Derek Thompson 在其著作Hit Makers:The Science of Popularity in an Age of Distraction[2]引用了大量相关研究并概括成一个通俗的“公式”,也就是“喜欢=熟悉+意外”。 法国认知心理学专家 Stanislas Dehaene 最新发表的著作How We Learn:Why Brains Learn Better Than Any Machine for Now[3]中也用大量的篇幅介绍了最近几年的最新科研成果, 再次论证了人脑在学习方面的这种特殊模式。 同时根据美国亚利桑那大学和布朗大学的最新研究成果, 学习的最佳效率是知识的未知率为15.87%。 也就是说,当一个人学习新知识的时候,大约85%的东西都是以往知识体系中已经熟练掌握的,才能让学习的效果最大化。

而在软件开发以及很多其他学科的教学中, 采用的都是从基础知识开始,如数据结构、计算机基础、信息论等。 这些学科与学生的基础知识体系是没有任何直接关联的,是人们在对大脑结构一无所知的年代,根据宗教、文化、风俗等学科总结出的教学方法,从学习效率这方面来说,是十分低效的。 近年来,随着对大脑的研究逐步深入, 尤其是认知神经学等相关前沿学科的飞速进步,本文所提及的“逆向教学”概念,才是顺应人脑生理结构的正向学习模式。 对软件开发这种如今已经遍布人们生活方方面面的学科来说,尤其如此。

3 在软件开发教学中实践逆向教学思维

根据前文所述, 在软件开发中实践逆向教学,实际上就是按照人们在日常生活中对软件开发的熟悉程度来逐步展开教学活动,而不是按照软件开发这门学科的知识体系来开展教学活动。 这种逆向,其实只是针对传统软件开发教学的逆向,但对应到人们的生活中,这其实是正向的教学,是顺应人类本能学习习惯的教学模式。 就好比如何学习成为一名厨师,一般是先从打扫卫生、切配、颠勺开始,而不是先从营养学、化学组成开始。 这就是从人们熟悉的,切实可操作的部分入手,开始学习一门新知识最快的路径。

对应软件开发, 与人们生活对应程度最高的,其实是软件的使用。 如今人们从儿童时期开始就不可避免地使用无数软件。 从家里的电视、家电、智能家居设备,到公共场所的取号叫号、订餐选座,无一不是软件开发的目的之一。 而所有软件中,即时通信软件,即聊天软件,无疑是使用频率最高的软件之一。 所以软件开发教学,从这些软件入手则是最自然不过的入门途径。 当然,不同的教师可以根据自己的知识特点选择不同的软件作为入门,只要不脱离人们日常熟悉并使用的软件这个范畴即可。

常规软件开发项目化教学,如果教学目的是学习如何开发即时通信软件, 那么通常都是从需求分析、技术选型、模块设计入手。 这是已经熟悉了软件开发专业的软件工程师的思考路径,不是刚入门甚至没有入门的学生的思考路径。 软件开发的思维模式与日常生活的思维模式有着根本的不同,不能要求外行一开始就了解并习惯这种思维模式。 所以,如何使用软件,如何找到使用过程中的问题,才是教学最先应该设计的部分。 在软件开发整个生命周期中,发现问题与解决问题才是最重要的能力。 当然任何专业都需要一个善于发现问题与解决问题基本素养。 如何在使用中找到问题就是最佳的入门抓手, 而如何设计这些问题,就成了课程改革的重点与难点。 最佳的问题设置,应该让学生在未掌握相关知识的时候,发现不了相关问题,但是当学生解决一个简单问题之后,自然地发现新的问题,并引申出相应的知识点。 好比游戏设计一样,只有积累经验升级学会新的技能后,才能解锁更高级的地图与装备。

4 真实教学情境

在软件开发课程中, 老师给学生布置了一个任务,就是测试某些软件的功能是否有漏洞。 老师教学软件并不是什么复杂的管理系统,而是大家平时每天使用最多的聊天软件。 每个人都知道聊天软件应该怎么用,有哪些功能,按钮点了以后应该显示什么。 所以每个人都能参与到测试中来。

老师会在聊天软件中故意设置一些简单的问题或陷阱,所有人的bug 修改通过git 提交。 从最简单的错别字开始,到一些测试按钮和测试消息,以及代码没有格式化。 让学生自行参与修改代码。 每次修改只要点一下运行就能自动运行,减少中断的次数。 每一次调整,点击运行,都是给学生建立正向反馈,每次运行成功的效果,都是在一点点建立学生对软件开发的信心。 同时让找问题与学生的成绩进行挂钩。

笔者所在团队在教学实践中初步尝试了本文所提及的教学思路, 并在课后进行了教学效果问卷调查。 调查结果显示,与未进行逆向教学的班级学生相比,对于入门课程的教学,学生在课后对本专业更有兴趣的比例在90%以上,而传统教学模式的学生在课后并没有对课程产生更多的兴趣。 论证了本文所提及的教学思路能起到一定的效果。

5 问题与展望

首先, 逆向教学思维更适用于一些与日常生活有着密切联系的学科, 因为如果一门学科的应用在日常生活中不常见的话, 那么就没有很好的办法在入门的几次课程中调动学生的积极性。其次,逆向教学思维不适用于一些需要长期积累培养,量变到质变的学科,例如艺术、文学等学科。最后,也是最重要的,这种教学方式,不太适用于需要精密严谨的科学理论支撑的学科。即使同样是软件开发,如果是开发交通控制、金融等应用,那么如果没有系统扎实的理论知识,很容易产生错误。而日常应用软件的开发则没有太过严格的要求。所以本文所述的教学方法, 尤其适合是用在高职院校的软件开发教学中, 帮助学生快速建立基本知识架构与信心,从而在就业时能及时对接企业需求。

当然,设计这门课程,离不开丰富的软件开发经验与大量的课程研发时间,这远不是一两个人用短短几个月时间能够研发成功的。 例如,学生的兴趣与反馈, 就需要经过多次真实课堂的教学实验并快速迭代,才能找到较为可行的路径。

猜你喜欢
入门逆向软件
逆向而行
禅宗软件
注重细节,表现均衡的4K入门之选 Acer(宏碁)HE-4K15
软件对对碰
学习和自己的相处之道 独木舟的入门 CANOE
几何入门,四个“重视”
拒子入门
谈软件的破解与保护
逆向工程技术及应用