理性看待AI编程
理性看待AI编程
我们曾经说过,AI协作编程逐渐被接受,以及SDD理念的推出,这背后是以下三点原因推动:
1.代码生成能力突破,大型模型已经能稳定生成:
1
2
3
4
API
CRUD
前后端逻辑
测试代码
2.代码生产成本接近零
3.Repo级理解能力,AI已经可以理解:
1
2
3
整个代码库结构
跨文件依赖
模块关系
同时聒噪的声音也很多,比如:”AI取代研发”,”一些公司只保留初级研发+AI”等等。
现在让我们从三个维度来聊聊,如何理性看待AI编程。
首先有必要认识一下什么是一个工程。
工程的结构:不是线性流程
工程的真实结构
多数人把工程理解成:
1
需求 → 写代码 → 上线
但真实结构更接近:
1
2
3
4
5
6
7
8
9
[问题建模]
↓
[系统结构设计]
↓
[实现(代码生成)]
↓
[运行态控制]
↓
[反馈 → 重新建模]
1. 建模层(Modeling)👉 决定问题是什么
1
2
3
用户行为(是否突发并发)
业务约束(票是否可超卖)
风险模型(是否有攻击)
2. 结构层(Architecture)👉 决定系统如何承载问题
1
2
3
是否需要队列削峰
是否需要缓存
状态如何分布
3. 实现层(Execution)👉 决定功能如何落地
1
API、数据库、逻辑实现
4. 控制层(Control)👉 决定系统在异常下是否存活
1
2
限流、熔断、降级
监控、报警、回滚
5. 反馈 👉 这是闭环的关键 运行态产生的数据、事故、用户行为变化:
1
2
3
修正问题模型(原来对并发的假设是错的)
调整结构设计(这个模块的边界割裂了事务一致性)
甚至推翻原有架构(业务形态已变化)
工程的难度主要不在“构建”,而在“预测 + 控制”
真实的工程你会遇到:
① 非线性
1
2
流量 ×2 → 系统压力可能 ×10
错误会放大(重试风暴)
② 涌现性
1
2
问题来自“组件之间的交互”
不是单点代码错误
③ 延迟反馈
1
2
架构问题往往在上线后才暴露
稳定性问题只有在压力下出现
AI 在工程中发挥了什么作用
AI 擅长的区域
局部的、上下文闭环、确定性的任务,如:
1
2
3
4
5
6
7
8
9
写函数
实现 API
数据处理逻辑
输入明确
输出可验证
有标准答案或可测试
这些特性对应工程中的:
1
实现层
AI 不擅长的区域
即工程中的不可见部分:建模层 + 结构层 + 控制层
1
2
3
4
5
6
7
8
9
10
11
全局一致性
多模块协同、长周期演化
隐含约束
容量、成本、非功能性需求
非线性系统
突发流量、故障传播路径
运行态认知
实际生产环境的复杂性、真实用户行为
为什么很多人会高估AI在工程中的作用,把工程简单理解为编程实现。
人的认知缺陷
1. 可见性偏差
1
2
3
4
5
6
我能看到的 = 重要的
我的工作 = 写代码 = 工程
写代码(可见) → 被高估
架构设计(不可见) → 被低估
稳定性(没出问题) → 被忽略
2. 线性思维偏差
1
2
3
线性思维:投入 ×2 → 产出 ×2
实际情况:小错误 → 系统崩溃,非线性风险不易被察觉
一个典型崩溃链路:
1
2
3
4
5
6
7
瞬时流量 ↑
→ DB 连接耗尽
→ 请求变慢
→ 用户重试
→ 流量进一步 ↑
→ 服务线程阻塞
→ 整体不可用
这里没有一行代码写错
3. 幸存者偏差
1
2
3
看到:小团队 + AI 做出产品
看不到:大量系统在早期规模下“假性稳定”
4. 经验错位
1
2
3
初级问题定位:代码问题 → 修代码 → 解决
真实情况可能是:系统问题 → 结构问题 → 无法局部修复
站在整个工程角度,实现层最可见、反馈最快,我们把最容易替代的部分当作最重要的部分,AI极大的降低了实现成本,但没有降低系统的复杂度。
This post is licensed under CC BY 4.0 by the author.