软件教书匠金旭亮 26-01-10 10:55
微博认证:北京理工大学计算机学院教师 金旭亮 头条文章作者

好的学生,有一个共同的特点,就是学习“自主性”、“主动性”非常强,还喜欢思考和总结。

我班的文尧同学,我这学期只讲了Java最基础的知识,他自己就已经把Web前后端开发都学了,还包括诸如Git,单元测试,设计模式,各种与结课设计相关的开源框架等等,全都用于自己的项目中。才大二,现在就已经能一人手撸前后端,是一名“全栈工程师”了。

其实学习就是这样,需要用到什么,就去学什么,何必去管这些知识与技术,是“本科生学的技术”还是“研究生学的技术”?

技术本身是一个整体,不要割裂。

关于AI这块,以下摘自其提交的开发文档,本人一字未改。

========================

6 本项目中 AI 技术及工具应用情况

6.1 使用过的 AI 工具

我主要使用了两类 AI 辅助工具:

一类是 IDE 里的代码补全工具,尤其是 GitHub Copilot(使用 GPT‑5.1 模型),在 IntelliJ 和 VS Code 中为我实时提供函数实现、接口草稿和重构建议;

另一类是少量的大模型对话,用来在卡住的时候讨论架构思路、拆分模块,或者请它帮忙检查某段代码有没有明显的设计问题。

6.2 在本项目中如何使用 AI

从代码量上看,AI 参与的比例其实不低:后端大约有 60% 的代码是在我先写好接口和注释之后,由Copilot 生成初稿再由我修改、精简得出的;前端因为我本身不太熟悉Vue + TypeScript + Vite 这一套栈,所以大概有接近 90% 的代码是 AI 给出初稿、我根据业务需求和运行效果反复调整得到的。

不过,项目的整体架构设计、服务解耦方式、包结构、文件拆分和命名等核心决策,都是我自己先想清楚再动手的。比如:后端要不要拆成 config / model / service.api / service.impl / web 这几层,哪些地方应该先抽象出接口、再选择具体实现,这些都不是 AI 能直接替我做完的事情。我一般的做法是先自己划分清楚模块边界和调用关系,再让 AI 帮我填充某个接口的实现细节或者生成样板代码,然后再结合测试和运行结果进行修改。

6.3 个人对 AI 辅助开发的感悟

这次课程设计让我比较深刻的一点体会是:AI 是一个非常强的效率放大器,但它本身不会自动提高程序员的水平。如果开发者自己不懂数据结构、算法和软件架构设计,或者根本不知道一个系统应该怎么拆分模块,那么就算有再强的 Copilot,最后写出来的也往往只是能跑的拼凑代码,很难长期维护。现在的大模型还存在上下文长度的限制、全局视野不完整等问题,它很难真正替你维护一整个大型系统,所以核心的设计工作依然需要人来完成。

对「AI 会不会取代程序员」这件事,我目前并不太悲观。我更倾向于认为,AI 会优先取代的是那些大量重复、机械编写代码的工作;真正需要理解业务、做抽象、做取舍和长期维护的岗位,短期内还是离不开人。当然,这也意味着未来对开发者的要求会更高:如果只是停留在「会用某个框架堆页面」的层面,被AI 压缩掉的空间会比较大。

从个人规划的角度,这次项目也帮我更冷静地认识了自己适合和感兴趣的方向。前后端开发对我来说是非常好的练手机会,我也会继续补齐相关知识,因为把一个想法变成能跑起来的软件本身就很有成就感。同时,我对 HPC / AI Infra 这类更偏基础设施的方向也有兴趣,目前的打算是先在课内外项目里多做一些小的尝试,后面再通过实习和读研慢慢验证适不适合自己。无论最后具体做哪个方向,有扎实的编程基础、清晰的设计思路,以及对包括 AI 在内各种工具理性使用的态度,应该都会是有用的。

发布于 北京