老夫在大学教了二十年的Java课程。
早期的Java课程,是以介绍语法特性为主的,考试方式是“闭卷“,这个,是与当时技术与开发工具的发展水平密切相关的,学生需要”死记硬背“,试题也以知识点考核为主。这个阶段大约持续了三五年。
后来,开发工具(比如IntelliJ IDEA)变得越来越强大与智能,针对各种语法错误,给出的提示信息已经很准确,能直接给出很靠谱的建议,甚至能自动地更正有错误的代码,对一些代码,甚至能给出相当不错的”优化“建议,自动重构代码。
这种场景下,再把教学重点放到语法特性上,已经没有太多意义,于是,我将教学重点从语法特性的介绍,转向JDK中的主要组件以及核心技术特性的介绍上,关注开发实践,介绍特定场景下特定功能如何编程实现,同时,取消了闭卷考试,采用“可上网”、“可带书”的全开放的“开卷考试方式”。
为了强调开发实践重要性,还要求学生同步完成一个完整的Java应用开发。
这种转换,实施已经超过了十年。
近些年,AI技术有了突破,以ChatGPT为代表的AI工具,已经可以直接回答许多具体的技术问题,直接给出实现特定功能的实现代码,对于IDE来说,纷纷地集成了AI功能,能非常准确地“猜测”你要干的事情,自动帮你写代码。
智能时代,教学重点又需要调整了,主要两方面:
一是教学广度的拓展,不再局限于语法特性+JDK,还应该拓展到相关的开发框架及工具的介绍,比如,通过Spring Framework介绍IoC,通过Netty展示如何开发高性能网络应用,这些,可以让学生能开发出真正有用的软件,而不是写几个“HelloWorld”的玩具程序。另外,对于相关理论原理的介绍,也应该加强,比如,用《操作系统》原理,指导多线程技术的学习,用《计算机网络》知识,开发网络应用。
二是从软件系统开发全流程角度 ,将重点“前移”,更多地介绍系统分析与设计方法,介绍针对特定需求、特定场景,如何得到一个可行的技术解决方案。当前AI还没聪明到能理解人类“模糊”并且“变化”的需求,并自动生成解决方案这一步。
另一块则要介绍重构、单元测试和版本管理等与软件工程相关的内容,进行面向团队协作的工程化训练。AI只是工具,真正的事情,还是需要人与人之间的合作才能完成的。
现在,不应该再强调特定功能如何实现了,这种事情,交给AI去干更合适,人只要确认AI生成的代码是否可用和正确就行了。
我们人类的关注点,应该放在“把握全局”与“相互协作”上。
智能时代,必须想清楚如何用好机器去更快更好地做事情,不然,可能会坐等机器把自己给淘汰而无可奈何。
发布于 北京
