做中学之“猫捉耗子”
在教学过程中,我对法律的制定者的敬意日益加深,对所谓的“恶法”也多了一份宽容,还从不少律师身上学到不少东西。
吴军老师(微博,知乎专栏)在硅谷来信第142封信“”中说:
在美国,内幕交易也时有发生,但是总体来讲被规范得很好,对于它的处罚也是非常严厉的。回顾我们在第84封信中谈到的“生活是具体的”这一原则,制度更完善一点对整个股市就会有莫大的帮助。因此,美国和英国的股市是全世界最健康的。而英美能做到这一条,在很大程度上要感谢它们特殊的法律*——英美法系。
英美法系(又称为普通法系)和欧洲大陆以及中国的法律体系(欧陆法系)不同,后者必须有成文的法律才能进行判决,而前者不需要,可以(由陪审团)通过常识作出是否违法的判决。而先前的判决在今后就成了具有法律依据的判例。在大陆法系的国家,制定法律需要很长的时间,罪犯很容易钻法律空子,而在英美等国,在很大程度上避免了这个问题。
我是非常讲究程序正义的,在教学中有了问题我都是先出规则,再给成绩。这个过程中不断的被学生钻空子,我不断的完善规则。从程序设计角度上讲,普通法系与大陆法系相比就相当于开发中的敏捷方法,作为敏捷方法的推崇者,要把普通法系的作法多引入教学改革中来。
我进行课程改革的过程就是通过实践一个不断解决教学中的问题、堵学生的学习漏洞的过程:
- 针对“教是老师的责任,学是学生的责任”执行不力,我们提倡“老师做教练,学生做中学”,让学生明白自己不及格是你没学好,不是老师要抓你;
- 针对“老师满堂灌只能照顾中间学生,基础好的吃不饱,基础差的吃不下”的问题,利用翻转课堂,提倡因材施教;
- 针对"平时不学习,只到期末背一下就能拿高分”的问题,进行了过程化考核改革;
- 针对“学习兴趣不浓”的问题,进行游戏化教学
- 针对“不会提问题,不敢提问题”的问题,对提问进行了指导,提供答疑论坛
- 针对“学习三分钟热度"的问题,设计了学习进度条,还有教程使用码云和博客园学习简易教程
- 针对“教材学习上的困难和学习不得法”的问题,编写了教材学习指导《Java学习笔记(第8版)》学习指导,考试重点都有
- 针对“只抄代码,不理解,不会用”的问题,写了指导积极主动敲代码,使用JUnit学习Java
- 针对“编程开发中错误提示,API文档离不开英语”的问题,提供了英语学习指导,并进行加分鼓励
更不用说学习过程中的具体问题了:
- Intellj IDEA 简易教程:课上打交道最多的工具的教程
- 使用JDB调试Java程序:调试能力与编程水平关系极大,在命令行下调试程序的指导
- Java程序设计的DOS命令基础:我们提倡在Linux下学习,有同学非要在Windows下学习
- 做中学之Vim:vim 要不断学习,精进
- ...
应该说我提供了一个很完善的学习系统,上周还是出现了令两件我感觉啼笑皆非又无可奈何的事情。
在“做中学(Learning by Doing)之背单词-扇贝网推荐” 中我介绍了自己背单词的经验,由于我从中受益良多,我鼓励我的学生也坚持背单词并进行适当的奖励。近两个学期,不断有学生向我反映有同学就没好好背单词,只为了加分打卡。我考虑到同学们能坚持就值这个加分,也没太在意,这周无意中发现这个:
这有什么意义?我们也真有学生花几十块钱来买这个服务以获取毫无意义的加分。本学期我们的扇贝打卡加分要加上学习效果了,打卡天数只做参考。
还有一件事,针对“学习三分钟热度"的问题,我设计了学习进度条。教学经验表明,排行榜对学习有较大的促进作用,继每周考核排行榜之后,我们现在想每周给出同学们学习代码量的排行榜,目的是激励大家多动手,多实践。结果就出现了这样的“滥竽充数”的代码:
这们同学“很聪明的”用空注释冒充自己写的代码,因为我们的统计脚本过滤了空行。
由于我们的成绩由过程化的考试决定的,这种行为对成绩没什么影响,没对别人造成不公平的影响,只是那位耍小聪明的同学的自欺欺人。他应该知道老师是会查看每名同学的代码的,在老师这留下一个不诚信的印象。
这件事对我们的影响是要进一步完善代码统计脚本,王志强老师比较好的处理了这个事情,对学生进行了正面引导,王老师的意见和建议:
- 之前也没有约定,不能用空的注释和垃圾注释。现在虽然把垃圾注释排除了,但是这种脚本,还可以使用大量的System.out.println等函数绕过。还需要继续优化匹配的正则表达式。所以,我希望大家还是尽量不要为了排名而使用垃圾代码和注释,否则浪费的是自己的时间。
- XXX同学这种做法也算是发现脚本的漏洞,我认为该同学具有漏洞挖掘的潜力。希望该同学能够把时间和精力花费在提高编程水平、学习网络攻防知识等方面,如果有想法可以找我聊(我目前在做漏洞挖掘和网络攻防的研究)。
- 各位同学都在打专业基础的阶段,不要浮躁、虚荣、自大,不管是搞开发还是做安全,需要聪明,但不需要小聪明,希望大家还是要脚踏实地的学习,把自己的专业基础打牢打实。最后,希望大家每天都能有一个小目标,每天都能有一点小进步。
我们的同学日后都有当领导的机会,如何管理是要好好学习的。这也是一个学习的机会。
KPI(Key Performance Indicators 关键绩效指标)是企业最爱用的绩效考核工具,但 KPI 通常只能定一些更宽泛的指标,且一般也只能分解到团队经理的头上,而很难分解到具体每个程序员的身上。
通过这次事件,同学们要明白:对程序员来讲如果用代码量来衡量工作量的话,弊远大于利。我们讨论时也说了,程序员写一段产生废代码的程序费不了什么劲。
量化考核是个好东西,用到创造性的智力劳动上就会出问题。
给在校的同学们一个作业,写好了可以加分:
- 写一个工具,检测博客园上博客的抄袭情况
- 写一个工具,检测码云上的代码质量
给其他人一个作业:
- 你上学时老师上课有什么漏洞,让你可以利用多得分?
我的大学同学于同学发现一个规律,如果好好学了,想法让老师记住你的名字,没好好学,想法让老师忽视你。
欢迎关注“rocedu”微信公众号(手机上长按二维码)
做中教,做中学,实践*同进步!
版权声明:*转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0
如果你觉得本文对你有帮助,请点一下左下角的“好文要顶”和“收藏该文”