现在的学生缺乏对大型工程动刀子的能力
- Books Reading
- 2025-11-07
- 427 Views
- 0 Comments
- 754 Words
我的接触的同学和我的观察力都比较有限。但是在这些天做研究、跟朋友聊科研,问大家迷茫/卡在哪,都感受到这一点。
现在的学生缺乏对大型工程动刀子的能力。
XX github proj 跑不起来。编译/安装阶段超过10条命令就束手无策。超过30页的文档找不到对应的命令。甚至连问GPT都问不明白 ......
以前总有学生吐槽说,实验室里学长不愿意带学生。但是没有基础实在是太难带了,简直是拖累节奏,并且心很累。虽然我也经常几小时干出蠢事,但是每次我都有点小生气,当然只是对事不对人。
既然是我“身边的普遍现象”,产生的原因是什么?
这些学生没有上一门专门教大家改大型程序的课。 我原本以为大学里没有这种课,后来我发现这门课,叫《软件工程》。 而很多学生都是大三大四才上的。
我最近在看《构建之法》这本软件工程书,还没有看完,但是讲的真的很生动、很精彩。在第一章里,它把不同阶段的软件比做航空里的纸飞机、气球、莱特兄弟,和成熟的航空业。而大部分学生大一大二的课程,很多作业都是如同 “完成这个算法/demo” 这种纸飞机,大部分proj都是3000行左右的demo气球 。遇到要编译科研代码这种莱特兄弟飞机,改Pytorch这种大引擎,哪怕是修螺丝,内心都做不下去。
| 航空 | 软件 |
|---|---|
| 纸飞机 | Hello world;数据结构、算法 |
| 简陋的气球 | 写网站 |
| 莱特兄弟的探索 | 新技术 |
| 成熟的民航工业 | 大型软件系统 |
我现在很希望,大家能提早去上这门课,或者提早去接触修飞机。比如,我希望软件工程课的作业可以多一些这样的作业:
“这是XX框架(比如SGLang)在2024年9月的一个issue。我们回退了所有针对其的commit,现在请你基于这个版本,去重新复现/解决这个issue”
“这是一篇 NIPS24 年的文章及github仓库,作者在H200上跑了起来。但是我们只有A100,请你配出在我们实验室能跑出来的环境,并且运行实验3”
“这篇 Eurosys 文章通过A方法让系统在运行目标B时时间下降了X%。但是,我们想profile A方法带来的overhead,请你设计实验观察它”
我原本以为只有要找工作的同学才需要重视软件工程课。我错了。哪里有软件,哪里就要有软件工程。 哪怕是科研也是如此。
希望大家能早点从课程里的“完形填空”里走出来。有空就和我一起读读这本书。
