"我打算从「培养目标」和「课程结构设计」去描述这门课程"
培养目标
在AI编程时代,这门课程的培养目标应该是帮助非专业者构建一套工程师思维模型
我认为这个工程师思维模型有三层:
(工程实现、构建可观测性、调试方法论)
执行与工程化
这一层指的是一些稍微具体一点的计算机工程思维。比如:
1. 构建可观测性
代码对非专业人士来说往往是"黑盒"。专业程序员会通过打日志或在控制台输出信息来观测逻辑。如果你不会编码,也需要具备这种"观测意图"。这种可观测性能帮助你了解目前系统的运行状况。
例如在一个基于youtube视频的学习工具时,你需要以某种方式将获取到的字幕和语音全部展示出来作为中间装袋,以此判断某一步骤是否出错。
2. 抽象复杂问题的能力
计算机技术本身很复杂,一个简单的APP背后可能有很多深层的技术基础。此时我们需要一定的抽象能力去简化结构帮助我们理解。
以网页开发为例子,你要能抽象出它的基本结构:一个网页应用由用户端和服务端组成,中间通过网络连接。进一步抽象服务端,它包含接口暴露、服务内部逻辑以及持久化数据。
3. 调试和排查思维
当遇到具体问题时,常常需要运用对比、缩小范围的方法去寻找问题根源,找到问题根源之后借助AI基本就能解决问题了。
通过这种逐步缩小范围的方法,你可以找到真正的问题根源。找到问题的根源之后,借助 AI 可能就能很快地解决问题了。
以上只是我列举的一些基本的工程师思维,可能还会有别的一些~
工程控制层
这一层的核心概念是:针对项目,你要时刻清楚的知道,1. 你正在做什么 2.项目/系统处于什么阶段 3.目标是什么
在工程构建过程中,你会不断面临选择。AI 可以给你选项,但无法替你判断目标、阶段 and 取舍是否合理。你必须清晰地预判:做完这件事后会付出什么代价,能得到什么。这一切都基于你对当前位置和目标的精准掌控。当然,如果你不能清晰地预判,你承认你的模糊,并打算去试一试,那么也请一定要知道 “目前项目是在尝试状态”
内生驱动力
1. 结构复杂事物的倾向(或称为一种认知的倾向):
简单来说,就是你对这件事情有多好奇,你多想把这件事情彻底搞清楚。
2. 创造的欲望:
你有多想做出一个产品去帮助别人,或者有多想做一件属于你自己的产品。
这一层我目前觉得在概念上稍微有一点空泛,不像表层的工程思维那么具体。
它指的其实是你真正有多想去完成一件事情的动力,有点类似于现在提倡的 High Energy(高能动力)。
我目前能想到的在工科领域,这种 High Energy 有两个表现:
课程结构设计
我认为在AI时代可以进行一些新的探索,不用像以前那样遵循从基础到代码训练、到开发模式、到应用的路径。我认为新的课程结构可以省去许多中间环节,只需掌握最基础的核心概念之后,便可以马上直接进入开发阶段。
基本概念
这部分很简单,就是列出一些基本概念并进行学习,理解这些基本概念的具体含义。
为什么要学基本概念
1. 为你打下零星的知识铺垫:让你大概知道后续在讨论 AI 相关内容时,具体的语境 and 含义。
2. 明确后续探索的边界:让你知道在课程中如果需要深入探索,触达到某个基础概念时,了解到这个程度就足够了。对于再往下的底层探索,就可以先停一停,不必继续深究。
如何学基本概念
通过让 AI 直接帮我们快速拆解这些基本概念在现实生活中应用所处的位置和结构,通过这种拆解来帮你快速理解。
比如我们在刷 Twitter 的时候,这个过程经历了 手机问服务器要内容->服务器去数据库拿内容->服务器整理好后返回给手机。
// 在这个过程中,数据库起什么作用?可以把数据库理解为一个超大的资料库,里面有很多张"Excel"。这些表里存储了所有人的推特内容。
当你刷新 Twitter 时,服务器应该返回最新的推文给你,这个过程就类似,服务器会向数据库发送请求:"喂、我要最新的消息,请返回最新的推文"。数据库接收请求后,将存储的那些最新推文返回给服务器。
// 这样你或许就能对数据库这个概念有一个基本的了解。
开发练习阶段
"其实我觉得,这个阶段不应该被称为"练习",而应该叫作"直接开始做"。"
而且现在有一个很好的地方:我们不用再像传统课程那样,整齐划一地设定同样的目标。完全可以让 AI 根据你的兴趣,设定不同的开放性目标:如果你想做游戏,那就让 AI 帮助你开始做游戏;如果你想做网页,那就去做网页;
写在后面
还有一个很有趣的点:我反应过来,当我写完这篇课程的设计之后,或许这个课程已经完结了。
因为有了一个大框架之后,AI 就可以帮助你根据这个大纲开始训练,剩下的具体实施部分,或许能让AI开始代劳了。