为什么软件开发教育必须变得更加个性化
Source: Dev.to
基础知识 vs. 角色特定知识
我目前在阅读 Robert C. Martin 的 Clean Architecture,这让我产生了疑问:软件开发中哪些知识是真正的基础性知识,哪些知识只适用于特定角色?
我的答案是,专属于特定角色的知识量是巨大的。当然也有基础性的方面——比如降低耦合、提高内聚——这些每个人都应该了解。然而即使在这些基础层面,也很少有知识是普遍认同的。我们领域的大部分知识至今仍然争论不休。有些人认为不使用 TDD 是不负责任的,而另一些人则认为 TDD 不切实际,甚至会导致糟糕的设计,因为在开始实现之前没有足够思考设计。
培养未来开发者的挑战
- a) 有限的普遍适用知识 – 大多数概念都取决于你所工作的上下文。
- b) 丰富且仍在争论的知识 – 许多实践仍有争议,并随时间演进。
使用 AI 实现个性化学习
我认为答案在于让教育更加个性化,而有了 AI,我们现在正处于能够真正实现这一点的绝佳位置。今天我“即兴编码”(vibe‑coded)了一个小型网页应用,让它与我本地的 LMStudio 服务器通信,我意识到即兴编码可以让你以比传统教育更有针对性的方式学习。
例如,它生成了一个使用 await 关键字的 JavaScript 异步函数。我既不知道什么是异步函数(虽然我可以猜),也不清楚 await 关键字到底做了什么。看到这些关键字出现在实际示例中,我去 Mozilla Developer Network 查找,迅速掌握了它们背后的概念。
核心技能:阅读代码
这才是教育应当改变的方式。关键就在于能够 阅读代码。最常用的编程语言的语法足够相似,只要你能在一种语言中识别关键字,就能在其他语言中发现它们。我的能力在于阅读函数声明,识别 async 作为修饰函数的关键字,并发现 await 也是关键字,从而去查找这两个概念。
当然,一些计算机科学的基础也是必需的,但最基本的任务是教会学生阅读代码,然后让他们走出去,配备 AI,自主学习。经过一段自我导向的学习后,再把学生召集回与同伴和导师一起,展示他们的代码并演示所学内容。
提议的教育模型
- 自主学习——在个性化学习比以往任何时候都更容易的时代。
- 由合格的导师指导——提供上下文和反馈。
- 以正确的方式实施——摆脱“这里有一些你在实践中永远用不到的高级数学”的正面冲击,转而培养学生做他们实际会做的事。