第九章

AI 时代的软件工程

第十二层 · AI辅助编码/评审/平台工程 当 AI 加入了云间书店技术部

一、AI 编程助手入职第一天

王姐说到做到,云间书店技术部采购了 AI 编程助手。入职第一天,小陈就玩疯了:

# 小陈:AI 帮我写个库存预警函数
# 输入:库存数据;输出:低于阈值自动提醒补货

def stock_alert(inventory, threshold=10):
    """对库存低于阈值的商品生成补货提醒。"""
    low = [(item["name"], item["stock"])
           for item in inventory
           if item["stock"] < threshold]
    return low

"师傅!AI 三秒写完了!我原来要写半小时!"小陈兴奋地喊,"照这个速度,咱们一个月能做完半年的活!"

老周站在旁边,看着小陈面前的屏幕,说了句意味深长的话:"小陈,你听说过'AI 幻觉'吗?"

"AI 会一本正经地胡说八道。它写的代码,语法全对、看着合理,但可能藏着逻辑错误、安全漏洞、甚至根本不存在的函数调用。AI 写代码,就像雇了一个特别勤快但偶尔会说谎的新人。 这一章,我们讲的就是:AI 时代,软件工程管理怎么变。"


二、AI 在软件工程里的四个角色

老周在白板上画出 AI 在开发流程中的位置:

需求 ──▶ 编码 ──▶ 评审 ──▶ 测试 ──▶ 发布 ──▶ 运维
         │        │        │        │        │
         ▼        ▼        ▼        ▼        ▼
      AI辅助编码  AI代码评审  AI测试生成  AI发布辅助  AI运维排障
      (Copilot)  (自动扫描) (自动用例)  (自动发布)  (日志分析)

"AI 不是替代某一个岗位,而是渗透到整个流程的每一个环节。但每个环节的用法和风险完全不同。"

2.1 AI 辅助编码(Copilot 类):最快的提效,最大的风险

"这是现在最成熟的场景。AI 补全代码、生成样板、写单元测试、解释老代码……"

AI 辅助编码的正确姿势:
  ✅ 用:生成样板代码、写测试、解释看不懂的代码、翻译旧代码
  ✅ 用:作为"第一稿"——你审阅后修改,比自己从零写快
  ❌ 别:不审阅直接提交(幻觉风险)
  ❌ 别:把核心业务逻辑全交给 AI(你根本不知道它为什么这么写)
  ❌ 别:在代码里留 AI 生成的密钥/凭据(它可能"编"一个)

"铁律:AI 写的代码,必须有人负责。 谁提交的,谁负责——这条和人工代码完全一样。"

2.2 AI 代码评审:机器当"第二双眼睛"

"还记得第四章的代码评审吗?现在 AI 可以当评审员:"

AI 评审能发现:
  - 明显的 bug(空指针、越界、拼写错误)
  - 安全漏洞(SQL 注入、硬编码密钥)
  - 常见反模式(重复代码、过度嵌套)
  - 缺失的测试

AI 评审发现不了:
  - 业务逻辑对不对(它不懂云间书店的满减规则)
  - 架构边界对不对(它不知道哪个模块该不该 import 谁)
  - "这段代码是否真的满足需求"

"所以正确的姿势:AI 评审做第一轮(快速扫雷),人工评审做第二轮(判断业务与架构)。 别让 AI 评审完全替代人工——它只能抓'技术病',抓不了'业务病'。"

2.3 AI 测试生成:把"不写测试"的人补上

"小陈,你还记得咱们测试覆盖率目标 80% 吧?"老周问,"有了 AI,这个目标好实现多了:"

# AI 生成的单元测试(人审阅后使用)
def test_stock_alert():
    inv = [{"name": "三体", "stock": 3},
           {"name": "活着", "stock": 15}]
    result = stock_alert(inv, threshold=10)
    assert result == [("三体", 3)]        # 只有三体低于阈值

def test_stock_alert_边界值():
    assert stock_alert([{"name": "A", "stock": 10}], 10) == []  # 等于阈值不报警

"AI 特别擅长生成边界测试(等于阈值、空列表、极端值)——这些恰恰是人最容易漏的。但记住:AI 生成的测试,人也要审,不然测试可能是'错的测试',让你误以为代码没问题。"


三、平台工程:AI 时代的地基

"除了 AI 直接干活,还有一个更底层的趋势:平台工程(Platform Engineering)。"老周说,"它的目标,是把整个开发环境变成'自助服务'——开发者想要一个测试环境?点一下,自助创建;想要数据库?点一下,自动配好。"

平台工程 vs 传统运维:
  传统:开发者提工单 → 运维手动配环境(慢,运维是瓶颈)
  平台:开发者自助申请 → 平台自动创建环境(快,标准化)

云间书店的"开发平台"(理想状态):
  ├── 一键创建开发环境(代码+数据库+依赖全自动)
  ├── 一键部署到任意环境(测试/预发布/生产)
  ├── 自助申请数据库/缓存(配额内自动开通)
  └── 统一监控与日志(所有人能看到系统状态)

"平台工程的精神:把'重复的、标准化的'工作,从人手里拿走,交给自动化平台。 AI 时代尤其重要——AI 写得快,部署得更快,没有好平台,AI 产出再多也上不了线。"


四、AI 时代的团队角色变化

"最后,聊聊最让人焦虑的问题:AI 会替代程序员吗?"老周问。

小陈犹豫了一下:"会……吗?"

老周没直接回答,而是画了一张图:

传统程序员(写代码的人):
  需求 ──▶ 想清楚 ──▶ 写代码 ──▶ 测试 ──▶ 上线

AI 时代的软件工程师(对结果负责的人):
  需求 ──▶ 想清楚 ──▶ 让 AI 写 ──▶ 审 AI 的代码 ──▶ 测试 ──▶ 上线
              ▲            ▲            ▲
         (更值钱了)  (省下来的时间)  (新技能:AI 审阅)

真正的变化:
  - "怎么写代码"的权重下降(AI 会了)
  - "要什么"和"对不对"的权重上升(AI 不会,还是人判断)
  - 需求分析、架构设计、代码评审、质量把关 → 人的核心价值

"所以小陈,答案很明确:AI 替代的不是'程序员',是'只会写代码的程序员'。 你去年学的那些底层知识、这十个月学的管理知识,恰恰是 AI 时代最值钱的部分——因为 AI 会写代码,但不知道为什么要写这段代码、这段代码对不对、怎么让一群人协作写出对的代码。"

"软件工程管理的核心,从来没有变过:需求对齐、质量防线、协作节奏、风险控制。 AI 只是把'写代码'这个环节变快了,其他环节——人的判断、人的协作、人的责任——反而更重要了。"


五、AI 时代的管理新规(云间书店版)

老周把 AI 引入后的团队规范更新了一遍:

云间书店技术部 · AI 使用规范(V1.0)
  1. AI 生成的代码,必须经人工评审后才能合并(和人工代码同标准)
  2. AI 生成的测试,人必须审阅,禁止"测试也全自动"
  3. 核心业务逻辑(支付/库存/折扣),AI 只能写初稿,人必须重写关键路径
  4. AI 写出的密钥/凭据/敏感信息,一律视为不可信,重新配置
  5. 所有代码提交者(人或 AI)都记录在案,责任到人
  6. 每周例会加一项:分享 AI 用得好的场景(互相学习)

"你看,这些规矩,跟我们前面讲的每一章都是同一套逻辑——管人、管协作、管风险。AI 只是团队里新来的'很能干的新人',管理它,用的是同样的方法。"


六、章末:老周的第十二层总结

第十二层:AI 时代的软件工程
├── AI 辅助编码   → 提效最快,幻觉风险最大,必须人工审
├── AI 代码评审   → 机器抓技术病,人抓业务病
├── AI 测试生成   → 擅长边界用例,但测试本身也要审
├── 平台工程      → 环境自助化,让 AI 产出能快速上线
└── 角色进化      → 从"写代码"到"对结果负责",人的判断更值钱

"小陈,你回头看这棵树的十二层——从'为什么需要管理',到'AI 时代的软件工程',每一层都在回答同一个问题:怎么让一群人,稳定、可靠、高效地做出好软件。"

"而所有答案的本质,还是那句话:软件工程的所有管理实践,都是'人类协作 + 防错'的产物。 工具在变,技术在变,AI 也在变——但'人怎么协作、怎么防错'这件事,永远不变。"

"明天,是你出师的日子。王姐说了,让你给全组讲一次'技术部这一年'。"老周笑了,"题目我都给你想好了——《我们踩过的坑》。去把终章准备好。"

✌ 语言