从一次AI编程实战聊聊:AI辅助设计,为什么人的判断力比以往更值钱

14 阅读10分钟

从一次AI编程实战聊聊:AI辅助设计,为什么人的判断力比以往更值钱

上篇文章我复盘了一次真实的AI协作设计过程 《一次与AI的"设计对话"》

那些关键判断到底是怎么做出来的?为什么能问出那些问题?

今天这篇文章,我想聊聊更底层的东西:在AI时代,工程师的判断力从何而来。


一、AI时代,工程师最稀缺的能力不是写代码

先说个现象。

现在用AI编程工具的人很多,但多数人的用法是这样的:

需求 → 丢给AI → 拿结果 → 复制粘贴

这种用法有没有价值?有。但价值有限。

因为AI给的是标准答案——它会给你一个"差不多对"的方案,但很难给你一个**"这个场景下最合适"**的方案。

就像解题一样,AI能给你一个解题过程,但判断哪个解法最优、哪个假设有问题、哪个边界情况需要考虑——这些,依然需要人来做。

这就是为什么我说:在AI时代,工程师最稀缺的能力不是写代码的速度,而是卓越的决策能力。


二、充分讨论:让AI成为思考的伙伴

这次设计让我深刻体会到一件事:AI最强的能力不是写代码,而是快速呈现多种可能性。

传统模式

需求 → 直接让AI生成代码 → 调试修改 → 完成

本次实践

需求 → 多轮方案讨论 → 质疑和优化 → 达成共识 → 才考虑实现

通过对话,我们可以探索更多备选方案,发现盲点。充分的讨论让我们避免了"第一个想法陷阱"。

实践建议

  • 不要急于要代码,先让AI分析问题的本质
  • 多问"为什么",质疑每个设计决策的必要性
  • 要求对比方案,让AI给出2-3个备选方案并分析优劣
  • 记录决策过程,像这次复盘一样,保留思考的轨迹

案例回顾:如果没有充分讨论,我们可能会停留在第一版的复杂设计(1000+行代码、三目录结构、复杂状态机),而不是最终的极简方案(350行代码、单一索引、无状态文件)。


三、设计先行:架构思维比编码速度更重要

AI时代的悖论:

  • 代码生成速度提升了10倍
  • 但糟糕的设计带来的技术债务也增加了10倍

设计思维,比编码速度更重要。

在这次实践中,我有几个体会:

1. 先画架构图,再写代码

我们花了大量时间讨论文件流转、索引结构、并发控制,这些讨论避免了后续的重构成本。

2. 明确边界和职责

FallbackWriter只负责写入和滚动,IndexManager只负责索引管理,CompensationHandler只负责补偿。职责清晰,代码自然简洁。

3. 考虑异常场景

程序崩溃怎么办?磁盘满了怎么办?索引损坏怎么办?提前设计容错机制,而非事后补救。

核心观点:AI可以让编码速度提升10倍,但优秀的设计仍然需要人类的深度思考。设计的质量决定了项目的上限,AI只是帮助你更快地达到这个上限。


四、学会质疑:批判性思维是AI时代的护城河

回到上篇文章的案例。

AI给我的第一个方案,其实不算差。三目录结构、状态机、复杂索引……放在两年前,我可能就接受了。

但我没有。

为什么?

因为我有几个质疑的习惯

质疑一:这个设计解决了什么问题?

三目录结构的目的是区分文件状态。但如果文件存在就代表待补偿、文件不存在就代表已完成,那状态字段是不是就多余了?

质疑二:这个设计带来了什么成本?

断点续传听起来很美好,但需要额外的索引来记录进度。数据库成功率>99.9%,10MB文件重读几百毫秒。这个成本值得吗?

质疑三:有没有被忽略的边界情况?

AI没有主动提到当前文件可能不被补偿的问题。这不是AI的错——它只是按标准模式生成方案。但边界情况,往往藏在标准模式的缝隙里。

这三个质疑,帮我把方案从"看起来完善"优化到了"真正可靠"。


五、让AI自我审视:高级技巧

这是我这次设计实践中最重要的发现:不要只让AI给出方案,还要让它审视自己的方案。

实践方法

1. 要求AI自我批评

用户:请分析这个方案的缺点和潜在问题

AI:这个方案存在以下问题:
- 索引结构过于复杂,维护成本高
- 三个目录的管理增加了实现难度
- 状态字段可能冗余...

2. 要求对比多个方案

用户:请给出3个不同复杂度的方案,并对比优劣

AI:
方案A(复杂):完整状态机+多目录+详细索引
方案B(中等):单一索引+无状态文件
方案C(极简):无索引+全量重试

推荐:方案B,平衡了可靠性和复杂度

3. 要求找出边界情况

用户:这个方案在哪些极端情况下会失败?

AI:
- 磁盘空间不足时...
- 程序崩溃时索引可能损坏...
- 并发读写可能冲突...

建议增加相应的容错机制

4. 要求优化建议

用户:这个方案还能如何简化?

AI:
- 可以去掉状态字段,靠文件存在性判断
- 可以用Properties替代JSON
- 滚动时可以迁移索引,避免孤儿数据

本次实践中的应用

1轮:AI给出初始方案(复杂索引+三目录)
   ↓
我问:"这个方案是否过于复杂?能否简化?"
   ↓
AI自我审视:"是的,可以去掉状态字段..."
   ↓
第2轮:简化方案(单一索引+无状态)
   ↓
我问:"当前文件不补偿会有什么问题?"
   ↓
AI自我审视:"低流量场景下会延迟补偿..."
   ↓
第3轮:优化方案(允许补偿当前文件)
   ↓
我问:"滚动时索引如何处理?"
   ↓
AI自我审视:"应该迁移索引,避免重复补偿..."
   ↓
最终方案:极简且完善的设计

核心原理

  • AI拥有广泛的知识,但缺乏主动的批判思维
  • 通过提问,我们可以激活AI的"批判模式"
  • AI能够发现自己方案中的问题,但需要你引导它去审视

核心观点:AI会给你"看起来合理"的方案,但只有人类才能判断"是否真的必要"。**质疑能力是将AI输出转化为优质方案的关键过滤器。**而让AI自我审视,是提升质疑效率的强大工具。


六、知识广度与深度:决策质量的基石

说到这里,可能有人会问:你凭什么能问出这些问题?是经验吗?是天赋吗?

我觉得都不是。

知识广度

这次设计涉及的知识领域包括:

文件系统
  ├─ 文件IOBufferedWriterRandomAccessFile)
  ├─ 原子操作(rename、临时文件)
  └─ 并发控制(ReentrantReadWriteLock)

数据结构
  ├─ Properties vs JSON
  ├─ 索引设计(键值对 vs 嵌套对象)
  └─ 队列模型(生产者-消费者)

分布式系统
  ├─ WALWrite-Ahead Logging)
  ├─ 断点续传
  └─ 幂等性保证

性能优化
  ├─ 延迟刷盘
  ├─ 批量处理
  └─ 动态调整策略

软件工程
  ├─ 包装器模式
  ├─ 职责分离
  └─ 渐进式优化

如果我不知道WAL是什么,我怎么判断AI的方案合不合理?

如果我不了解幂等性,我怎么知道数据库唯一约束能保证什么?

知识广度决定了你能看到多少可能性,知识深度决定了你能判断哪个可能性是真正值得追求的。

如何提升知识广度

  1. 跨领域学习,不要局限于自己的技术栈
  2. 不仅知道"怎么用",还要知道"为什么"
  3. 阅读开源项目源码,关注技术博客和论文
  4. 通过实际项目应用新知识

七、AI时代的卓越决策能力

最后,我想聊聊AI时代工程师的核心竞争力。

很多人担心AI会取代程序员。但从我的实践经验来看,AI取代的不是程序员,而是"只会写代码"的程序员。

为什么这么说?

因为AI在编程领域的价值,是加速执行——它能快速生成代码、快速尝试方案、快速迭代版本。

定义问题、判断价值、权衡取舍——这些,依然需要人来完成。

AI可以给你10个方案,但决定哪个方案最优的是你。

AI可以写出代码,但判断这段代码是否真正适合当前场景的是你。

AI可以优化性能,但定义优化目标的是你。

这就是为什么判断力比以往更值钱——因为AI能做的事越来越多,而人需要做的事也越来越高端。

传统工程师的核心能力

  • 编码速度
  • 算法能力
  • 框架熟练度

AI时代工程师的核心能力

  • 问题定义能力:准确识别真正的问题
  • 方案设计能力:设计简洁可靠的架构
  • 决策判断能力:在多个方案中选择最优
  • 批判思维能力:质疑和优化AI的输出
  • 知识整合能力:跨领域知识的连接和应用

八、给AI时代工程师的建议

不要做的事

  • 盲目接受AI生成的第一个方案
  • 跳过设计直接让AI写代码
  • 停止学习和思考,完全依赖AI
  • 追求技术的复杂性,忽视简洁性

要做的事

  • 充分讨论:让AI成为思考伙伴,多轮对话探索方案
  • 设计先行:先明确架构和边界,再生成代码
  • 学会质疑:批判性审视每个设计决策
  • 持续学习:拓宽知识广度,加深理解深度
  • 沉淀经验:记录决策过程,形成方法论

九、结语

这次审计日志降级方案的设计过程,让我深刻认识到:

AI不会取代工程师,但会使用AI的工程师会取代不会使用AI的工程师。

更重要的是:

在AI时代,工程师的价值不在于写代码的速度,而在于决策的质量。

  • AI可以快速生成10个方案,但决定哪个方案最优的是你
  • AI可以提供技术细节,但判断是否必要的是你
  • AI可以优化代码性能,但定义优化目标的是你

卓越的决策能力 = 充分讨论 + 设计先行 + 学会质疑 + 知识广度

这四项能力,是AI无法替代的,也是AI时代工程师最稀缺、最有价值的核心竞争力。

愿我们都能成为善用AI、超越AI的卓越工程师。


这个系列是《一次与AI的"设计对话"》的姊妹篇。如果还没看第一篇,建议先看那个实战案例,再来看这篇方法思考。


完整仓库地址:

github仓库地址 gitee仓库地址