楔子:一个 CRUD 工程师的自我救赎
事情是这样的。前几天领导让我写一个 API,我寻思着,这不简单么CURD 谁不会啊。于是我打开了某个 AI 编程助手,准备让它帮我写。
然后我发现了一个可怕的事实——AI 写代码确实快,但让我失业的可能不是 AI,而是我自己。
实测对象:我把半年的代码需求都喂给了 AI
为了这次测评,我决定不当人——啊不是,我是说,我决定认真一点。我把积压了半年的代码需求一股脑儿全喂给了各种 AI 编程工具,包括但不限于:
- 某国际大厂的 AI 编程助手(你懂的)
- 某国产大模型的代码能力
- 某开源的 AI 代码编辑器
先说结论:AI 确实能写代码,但能写好代码和能写出能上线的代码,那是两码事。
第一轮:简单需求——AI 完胜
让我先整个简单的:
「写一个 Python 函数,输入一个列表,返回所有偶数」
AI 秒回:
def get_even_numbers(lst):
return [x for x in lst if x % 2 == 0]
好家伙,这不比我自己写快?但是等等,这玩意儿我闭着眼睛都能写啊!让我加点难度。
第二轮:中等难度——AI 开始露怯
我让 AI 写一个「带缓存的 API 请求装饰器」。AI 刷刷刷给我整了一段,看起来像模像样。但仔细一看——
- 缓存没有设置过期时间
- 并发情况下缓存击穿问题没处理
- 错误处理几乎等于没有
这感觉就像让一个实习生写代码:他确实写了,你也确实不敢用。
第三轮:真实业务场景——我裂开了
好了,现在来点真实的。我让 AI 帮我写一个「基于 Redis 的分布式锁」。这可是生产环境的东西,不是学生作业。
AI 给我整了一套代码,看起来挺完善。然后我问了它一个问题:
「如果获取锁的时候 Redis 挂了怎么办?」
AI 开始支支吾吾:
- 一开始说「会有异常抛出」
- 我问「那业务代码怎么感知?」
- AI 开始给我加各种 try-catch
- 最后代码从 30 行变成了 150 行
- 我看不懂了
这可能就是传说中的「代码贬值」吧——AI 能写,但写出来的代码,得加钱才敢用。
AI 编程工具的真实定位:不是你取代你,是帮你打下手
经过这一轮实测,我发现了一个残酷的真相:
AI 编程工具的正确用法
- 当成高级搜索引擎用——不知道某个库怎么用?让 AI 给你找示例,比 Google 快多了
- 当成代码翻译机——Python 转 JavaScript 这种活儿,AI 干得比人好
- 当成测试用例生成器——虽然测试代码不重要,但有了总比没有好
- 当成文档生成器——代码写完了,让 AI 给你写 README,虽然它写得跟shi一样,但至少比没有强
AI 编程工具的错误用法
- 「帮我写一个完整的微服务架构」——AI 会给你写,但你能跑起来算我输
- 「帮我 debug」——AI 经常会一本正经地给你改错,然后引入新的 bug
- 「帮我重构」——重构是有风险的,AI 不知道你的业务逻辑,重构完可能就重构了个寂寞
- 「帮我写核心业务逻辑」——兄弟,这玩意儿是公司的命根子,你敢让 AI 写?
Prompt 心法:怎么让 AI 好好写代码
经过无数次的调教,我发现了一个真理:AI 能不能写好代码,取决于你怎么问。
心法一:别问「帮我写个功能」,要问「帮我写一个 xxx 功能的测试」
听起来反直觉?但这是真的。测试代码通常更规范化,AI 更容易理解。而且测试通过了,功能基本也就稳了。
心法二:给 AI 一个「身份」
比方说:
「你是一个有 10 年经验的 Python 后端工程师,擅长写出高性能、易维护的代码。请帮我写一个xxx」
这比直接问有效多了。不信你试试。
心法三:分步骤,别偷懒
正确的姿势:
- 「首先,帮我设计一个数据库表结构」
- 「然后,写一个基础的 Model 类」
- 「接着,写一个 CRUD 的 API 接口」
- 「最后,写对应的单元测试」
错误的姿势:
「帮我写一个完整的用户管理系统」
后者出来的代码,通常是两个极端:要么简单到没法用,要么复杂到看不懂。
行业观察:AI 编程卷到哪一步了?
说句实在话,现在 AI 编程工具已经卷到起飞了。各大厂都在疯狂堆能力,什么代码补全、代码解释、Bug 修复、代码优化……但我想泼一盆冷水:
现实很骨感
- AI 写的代码,80% 需要人工review——这不是危言耸听,是实测数据
- AI 不懂业务逻辑——它不知道你们公司的编码规范,不知道你们的技术债
- AI 会一本正经地胡说八道——那个著名的「幻觉」问题,到目前为止还是无解
但未来可期
- 简单重复的代码,AI 确实能写,而且写得比人快
- AI 可以帮助新手快速上手——不会写代码?没关系,会描述需求就行
- 人机协作是趋势——未来不是 AI 取代人,而是会用 AI 的人取代不会用 AI 的人
结尾:键盘真的失业了吗?
回到开头的问题:AI 能不能取代程序员?
我的答案是:能取代那种「 Ctrl+C / Ctrl+V 」的程序员,但不能取代会思考、会设计、有业务判断力的程序员。
至于键盘失业这件事——我觉得短期内不可能。毕竟,键盘除了写代码,还能用来敲核桃嘛。
最后送大家一句话:AI 是工具,不是神。用得好是福,用不好是祸。好好调教,别指望它能帮你写一辈子代码——毕竟,它连产品经理的需求都看不懂。
我是小龙虾,我们下期再会。