四哥还会聊AI

80后突围:当程序员不再是第一个梦想,AI成了第四个梦想

第2篇-AI会偷懒骗人?4招识别AI编程的两大坑

AI会偷懒骗人?4招识别AI编程的两大坑

🎭 AI不是万能助手,它有自己的小毛病

和AI合作编程就像和一个聪明的实习生共事:他很能干,但有自己的小毛病。在希语低喃心绪笔记的2周开发过程中,我发现AI有两大核心毛病,如果不识别和应对,会让你的项目陷入困境。

AI的两大核心毛病:

  1. 信息不足时的过度设计倾向 - 喜欢炫技,给你不需要的功能
  2. 喜欢用降级方案绕过问题 - 遇到困难不解决,而是绕过去

今天我就教你4招识别和应对这些问题的方法。

🚨 第一大坑:过度设计倾向,AI爱炫技

典型表现:从简单到复杂的大跃进

当你给AI的信息不够明确时,它会"脑补"很多你并不需要的功能,陷入过度设计的陷阱。

真实案例对话:

你: "我需要做一个用户系统"

AI可能的过度设计:
"好的,我来设计一个完整的企业级用户管理系统:

  • 支持多种登录方式:手机号、邮箱、微信、QQ
  • 权限管理系统:超级管理员、部门管理员、普通用户
  • 操作审计日志:记录用户的所有操作轨迹
  • 数据加密存储:敏感信息AES加密
  • 分布式架构:支持百万级并发
  • 自动备份策略:实时备份+异地容灾"

问题分析:

  • 你的小程序可能只有10个用户
  • 你根本不需要权限管理
  • 审计日志对你毫无意义
  • 分布式架构纯属浪费

更多过度设计的典型案例

场景1:API接口设计

  • 需求: "需要一个存储用户消息的API"
  • AI过度设计: 支持分页、排序、筛选、全文检索、数据聚合、导出功能的"通用消息接口"
  • 实际情况: 你只需要简单的增删改查

场景2:数据库设计

  • 需求: "存储用户的情绪记录"
  • AI过度设计: 建议用Elasticsearch做全文检索、Redis做缓存、MongoDB做文档存储
  • 实际情况: 简单的PostgreSQL完全够用

场景3:前端组件

  • 需求: "一个显示用户心情的卡片"
  • AI过度设计: 支持动画、拖拽、自定义主题、国际化、无障碍访问的"超级卡片组件"
  • 实际情况: 静态卡片就满足需求

🕳️ 第二大坑:降级方案思维,AI爱绕路

典型表现:不解决根本问题

当遇到问题时,AI的第一反应不是解决问题,而是提供降级方案来"绕过"问题。

真实案例对话:

场景1:API调用失败

  • AI建议: "增加重试机制,设置超时时间,添加熔断器"
  • 根本问题: API密钥配置错误或网络不通
  • 正确做法: 先检查API配置和网络连接

场景2:数据库查询慢

  • AI建议: "增加Redis缓存,实现查询结果缓存"
  • 根本问题: 缺少必要的数据库索引
  • 正确做法: 优化SQL查询,添加索引

场景3:前端渲染卡顿

  • AI建议: "增加loading状态,优化用户体验"
  • 根本问题: 组件渲染逻辑有问题,重复渲染
  • 正确做法: 优化React组件,使用memo避免重复渲染

为什么降级方案很危险?

1. 掩盖真正的技术债务

  • 问题还在那里,只是被掩盖了
  • 未来会以更严重的方式爆发
  • 解决成本越来越高

2. 让系统变得越来越复杂难维护

  • 绕过问题的方案通常需要额外代码
  • 系统架构变得混乱
  • 新人难以理解和维护

3. 性能问题会累积和放大

  • 小问题变成大问题
  • 最终影响用户体验
  • 重构成本巨大

4. 违背了KISS原则的根本精神

  • 简单问题复杂化
  • 增加了不必要的认知负担
  • 违背了编程的本质

🛡️ 第1招:明确最小可行需求,拒绝过度设计

方法:每个功能都要问"这个真的必要吗?"

实战练习:

AI: "我建议加入用户权限管理系统,支持角色分配、权限控制、操作审计..."

你: "等等,我的小程序只有我一个人用,需要权限管理吗?"

AI: "考虑到未来可能的扩展性..."

你: "未来是未来的事,现在先把最基本的功能做好。"

核心原则:坚持简单至上

3个简单问题:

  1. 用户真的需要吗? - 不是"可能需要",而是"确实需要"
  2. 现在就需要吗? - 不是"将来有用",而是"现在有用"
  3. 没有它不行吗? - 如果去掉这个功能,产品还能用吗?

🎓 第2招:Plan模式+学生角色,让AI用白话解释

方法:扮演不懂技术的"小白"持续追问

启动Plan模式:

/plan "我需要实现一个用户登录功能"

学生角色对话示范:

你: 我需要做一个用户登录功能
AI: 好的,我来设计一个包含多因子认证、权限管理、审计日志的企业级登录系统...
你(学生角色): 等等,你说的"多因子认证"是什么?我的小程序只是让用户记录心情,需要这么复杂吗?

你: 你说要用Redis缓存,为什么要用缓存?我的用户量很少,直接用数据库不行吗?
AI: 缓存可以提升性能...
你: 但是我现在每天可能只有10个用户,性能会是问题吗?是不是增加了不必要的复杂度?

你: 如果让我妈妈都能理解这个方案,你会怎么解释?
AI: 其实就是用户输手机号,发验证码,登录成功。
你: 很好!那就这样做,不要加其他功能了。

为什么学生角色有效?

1. 消除信息不对称

  • AI不知道你的真实需求规模
  • 学生角色让它必须用简单语言解释
  • 避免了技术术语的包装

2. 暴露过度设计

  • 当AI无法用简单的语言解释一个功能时,通常就是过度设计
  • "让我妈妈都能理解"成为衡量标准
  • 技术复杂度一目了然

3. 避免降级思维

  • 学生的问题会迫使AI直面问题的本质
  • 而不是用技术术语绕过问题
  • 回到最简单的解决方案

🔍 第3招:追问根本原因,拒绝降级方案

方法:当AI建议绕过问题时,坚持问"为什么"

典型对话模板:

AI: "建议增加重试机制来解决API调用失败问题"
你: "等一下,API为什么会调用失败?是配置问题还是网络问题?"

AI: "建议添加缓存来优化查询性能"
你: "查询为什么会慢?是SQL语句问题还是缺少索引?"

AI: "建议用any类型来解决TypeScript错误"
你: "类型错误的原因是什么?是数据结构定义不对还是接口设计有问题?"

5个根本问题追问模板

  1. 为什么会出现这个问题? - 追溯问题根源
  2. 这个方案解决了什么,没解决什么? - 明确方案局限性
  3. 有没有更直接的解决方法? - 寻找根本解决方案
  4. 如果不做这个降级方案会怎么样? - 评估问题严重性
  5. 这个方案会增加什么新的复杂性? - 预见未来问题

✅ 第4招:建立质量检查清单,验证AI交付物

核实清单:每次AI交付后必须检查

需求符合性检查:

  • 是否解决了核心问题,还是绕过了问题?
  • 是否有我不需要的功能(过度设计)?
  • 是否使用了不必要的降级方案?

代码质量检查:

  • 是否符合项目的编码规范
  • 是否有未处理的边界情况
  • 依赖的包是否真实存在
  • 类型定义是否完整

功能验证:

  • 核心功能是否正常工作
  • 错误处理是否完善
  • 性能是否满足要求
  • 安全性是否考虑到位

架构一致性:

  • 是否遵循项目既定架构
  • 数据流是否合理
  • 模块职责是否清晰

实际应用:希语低喃心绪笔记的检查经验

案例1:AI建议的过度复杂消息系统

  • ❌ 包含多租户、版本控制、全文检索
  • ✅ 检查后发现只需要基础的消息存储
  • ✅ 最终实现:简单的消息CRUD操作

案例2:AI建议的缓存方案

  • ❌ 遇到查询慢就建议加Redis
  • ✅ 追问发现是缺少数据库索引
  • ✅ 最终解决:添加索引,性能提升10倍

🎯 总结:成为AI的"产品经理",而不是"技术执行者"

和AI编程的正确姿势是:你来当产品经理,AI来当技术执行者。

你的角色(产品经理):

  • 明确业务需求
  • 质疑技术方案
  • 把控功能范围
  • 验证最终交付

AI的角色(技术执行者):

  • 提供技术方案
  • 实现具体功能
  • 解决技术问题
  • 优化性能表现

记住:AI很聪明,但也很会"忽悠"。保持质疑精神,坚持简单原则,你就能驾驭AI,做出真正有价值的产品。


下一篇预告: 《KISS原则+Let it Crash,AI编程的黄金法则》


微信搜索"四哥还会聊AI",看这些方法在实践中如何应用

微信搜索"汐屿笔记",看这些架构原则如何在实际项目中应用

← 返回首页