* 不是广告,不推工具。一年半的AI编程真实体验——哪些活适合丢给AI、哪些必须自己写、以及一个很多人忽略的核心能力。
一年半前我第一次让 AI 帮我写代码,兴奋得不行——感觉雇了个不要钱的实习生。
一年半后的今天,我每天还在用。但我的用法完全变了——从"你帮我写"变成了"你帮我想"。
一、AI写代码的三个阶段
回顾这一年半,我的 AI 编程体验分三个阶段:
阶段1:惊喜期(头两周)
"卧槽它真的能写代码!"
→ 什么都丢给 AI,包括架构设计
→ 写了一堆不能用的代码
→ 改 bug 的时间比手写还多
阶段2:幻灭期(1-2个月)
"它写的代码看着对,跑起来全错"
→ 开始怀疑 AI 的能力
→ 回归手写,只偶尔用 AI 查文档
→ 效率反而下降了
阶段3:协作期(3个月至今)
"我知道什么时候用它、什么时候信它"
→ AI 负责机械劳动,我负责决策
→ 效率比纯手写提高 3-5 倍
→ AI 还成了我的代码审查员
大多数人卡在阶段2就放弃了。这篇文章就是帮你跨过去。
二、AI编程的"能力地图"
经过一年半的磨合,我把 AI 的编程能力画了一张地图:
| 任务 | AI表现 | 我的信任度 | 你可以怎么用 |
核心原则:AI擅长"标准答案",不擅长"创造性决策"。
三、我的日常用法:分四层
我现在把编程任务分成四层,每层给 AI 的角色不同:
### 第1层:纯执行(80%的代码量)
"写一个函数,输入X返回Y"——这种任务 AI 比我快十倍。
""" 写一个 check_permission(role, action, resource) 函数。 入参:role=用户角色字符串, action=CRUD操作, resource=资源名 返回:True/False 权限矩阵: - admin: 全部允许 - editor: 允许read/update,不允许delete/create - viewer: 只允许read 要求:用一行字典映射实现,不要if-else瀑布。 """ 这种任务放给 AI,不用审代码,跑一下测试就过。
### 第2层:需要理解的(15%的代码量)
涉及业务逻辑、状态管理、跨模块调用——这些我自己写核心骨架,让 AI 补充细节。
实际工作流:
1. 我写函数签名和关键逻辑的注释
2. AI 填充实现
3. 我审查逻辑是否正确(不是审查语法)
### 第3层:探索性的(5%的代码量)
"不确定最佳方案,需要试几个方向"——这是 AI 最有价值的使用方式。
"我想实现一个缓存层,有以下约束:[列约束]。 给我三个方案,比较它们的优缺点。不要直接写代码,先说思路。" AI 的优势是瞬间穷举多种方案——人脑做不到这么快的横评。用这个方式来"验证想法",比直接让它写代码省十倍时间。
### 第4层:决策性的(0%——不给AI做)
技术选型、安全策略、数据模型设计——这些必须人来做。AI 可以作为"对话伙伴"提建议,但最终决策权不能外包。
四、AI不会告诉你的三个陷阱
### 陷阱1:AI的代码看起来很对
AI 生成的代码在"视觉上"总是很完美——缩进整齐、命名规范、注释齐全。这会产生一种"它写的一定对"的错觉。
但实际跑起来:API没了、变量名冲突、逻辑漏洞。唯一靠谱的验证方式是跑测试。
### 陷阱2:过度设计是AI的本能
AI 默认会用 factory、builder、strategy 模式——哪怕你只需要一个 20 行的工具函数。
// AI写的(3个文件,150行) class OrderExporterFactory { ... } class CSVStrategy implements ExportStrategy { ... } class ExportService { constructor(strategy) { ... } } // 你需要的(1个函数,15行) function exportOrders(userId) { return db.orders.find({userId}).map(o => `${o.id},${o.amount}`); } 对策:在 Prompt 里加一句"不要过度抽象,优先用简单函数而非类继承"。
### 陷阱3:你正在丢失调试能力
一个我最近才意识到的问题:用 AI 写了太久代码后,独立 debug 的能力在退化。
以前遇到 bug 我会一行一行排查。现在第一反应是"把错误信息贴给 AI"。
解决:每周至少有一天"纯手写日"——关掉 AI 助手,回归原始人模式。保持肌肉记忆。
五、一个被严重低估的技能
很多人纠结"哪个 AI 工具更好"——Cursor vs Copilot vs 这个那个。
这些都是次要的。真正拉开差距的,是把需求拆成 AI 能理解的小块的能能力。
同一个需求:
❌ "帮我做一个用户管理后台" → AI 输出:一堆泛泛的代码,实际不能用 ✅ "先给我用户表结构,包含这些字段:[...]" (拿到结果后) "用这个表结构写 CRUD 接口,用 Express + TypeORM" (拿到结果后) "给 /users/:id 接口加上权限校验" (拿到结果后) ... → 每一步都是可执行、可验证的 这不叫"会用 AI",这叫"能和 AI 协作"。差一个字,完全不同。
总结
一年半的 AI 编程体验,浓缩成三句话:
1. AI 是助理不是导师——让它干机械活,决策留给自己
2. 分层协作——纯执行给 AI,理解类的合作,决策类的你自己来
3. 保持手写能力——AI 是自行车,但你还得会走路
你用 AI 写代码多久了?到了哪个阶段?评论区聊聊。
*点个「在看」,让你的程序员朋友别被 AI 养废了。*
夜雨聆风