乐于分享
好东西不私藏

我用AI写代码一年半了,说点没人告诉你的事

我用AI写代码一年半了,说点没人告诉你的事
* 不是广告,不推工具。一年半的AI编程真实体验——哪些活适合丢给AI、哪些必须自己写、以及一个很多人忽略的核心能力。

一年半前我第一次让 AI 帮我写代码,兴奋得不行——感觉雇了个不要钱的实习生。

一年半后的今天,我每天还在用。但我的用法完全变了——从"你帮我写"变成了"你帮我想"。

一、AI写代码的三个阶段

回顾这一年半,我的 AI 编程体验分三个阶段:

阶段1:惊喜期(头两周)

"卧槽它真的能写代码!"

→ 什么都丢给 AI,包括架构设计

→ 写了一堆不能用的代码

→ 改 bug 的时间比手写还多

阶段2:幻灭期(1-2个月)

"它写的代码看着对,跑起来全错"

→ 开始怀疑 AI 的能力

→ 回归手写,只偶尔用 AI 查文档

→ 效率反而下降了

阶段3:协作期(3个月至今)

"我知道什么时候用它、什么时候信它"

→ AI 负责机械劳动,我负责决策

→ 效率比纯手写提高 3-5 倍

→ AI 还成了我的代码审查员

大多数人卡在阶段2就放弃了。这篇文章就是帮你跨过去。

二、AI编程的"能力地图"

经过一年半的磨合,我把 AI 的编程能力画了一张地图:

任务AI表现我的信任度你可以怎么用
CRUD 接口
⭐⭐⭐⭐⭐
90%
写完直接测,基本一次过
SQL 查询
⭐⭐⭐⭐⭐
85%
用来生成再自己优化
正则表达式
⭐⭐⭐⭐⭐
95%
救命级——手写正则是不可能的
单元测试
⭐⭐⭐⭐
80%
它写你验证逻辑
普通算法
⭐⭐⭐⭐
75%
标准实现闭着眼用
解释陌生代码
⭐⭐⭐⭐
80%
阅读复杂代码库的利器
配置/Dockerfile
⭐⭐⭐
60%
生成骨架,手动填细节
重构建议
⭐⭐⭐
50%
听建议但不照搬
架构设计
⭐⭐
20%
只参考思路
性能调优
⭐⭐
20%
得先自己定位瓶颈
调试诡异bug
⭐
10%
帮你缩小范围就谢天谢地

核心原则: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 养废了。*

相关学习资料