“都什么年代了程序员还在手搓代码,连小白都能写 Prompt 生成代码了”

现在社交媒体上有一种风气: 就是都在标榜自己用 AI 写代码多么高效,多爽。用 Prompt 来 AI Coding 就是高端的,代表先进生产力的,不用 AI 写 Prompt 手搓代码就很 Low。
这事我还是要替程序员说点话,为什么有些时候要手搓代码而不是写 Prompt。
AI 能提升编码效率这个没问题,但不代表说已经到了能完全替代手搓代码,更不能把两者对立起来。
首先我们应该回归初心,写代码是为了什么?
刨除学习和自嗨为目的的写代码,通常我们写代码是为了构建软件产品,因为要构建一个产品,才需要去写代码实现产品需求。那么 AI 写代码和手搓代码,都属于写代码的手段,而不是目的。
先把这个问题分清楚:无论是你用 AI 写代码还是手搓代码代码,都属于手段而不是目的!
如果你只是为了标榜用 AI 写代码而用 AI,那就是为了手段而忘记了目的,当然换成你为了手搓代码而抵制 AI 写代码,也一样成立。
然后,哪些情况适合 AI 写代码,哪些情况适合手搓代码
1. 任何情况下,都应该尝试用一下 AI Coding
很多任务开始前,可以先用 AI 写一遍,了解 AI 编程的优缺点在哪里,边界在哪里;另外每隔一段时间都要再测试一下以前失败的地方,可能随着模型的进化和工具的升级,以前不能解决的问题就会解决。
试试没坏处,AI 不行了再手搓,或者基于 AI 的结果手动改进。
AI 应该是程序员的一个重要工具,就像战士的枪一样,应该对它的优缺点适用场景了如指掌
2. 原型开发适合用 AI 写代码
原型开发是最适合用 AI 大量生成代码的场景,尤其是 Web 开发,现在的 AI 很擅长,并且不需要考虑代码后期维护、性能、安全性这些。
3. 当你需要借助代码来理清楚思路或者保持心流的时候,手搓代码
编程是创造性的工作,有时候我们需要直接的渐进的反馈,手搓代码更能让我们跟上自己思维的节奏,就像写作的时候,用键盘一个字符字符的敲打修改,更能和自己的思路保持相同的节奏,如果 AI 一次性生成太多内容,或者我们不想要的内容,反而会打乱自己的思路。
另外我个人的经验是 AI 写代码很容易打断心流,要等待结果,要重新修改提示词抽卡,很打断心流,有时候我宁可手动写,虽然慢一点,但是可以保持心流状态,代码质量也更有保证。
4. 当你需要从一门语言翻译到另一门语言,用 AI 生成
AI 最擅长的工作之一就是翻译了,当你需要从一门编程语言翻译成另一门编程语言,那绝对是 AI 的强项,提示词也简单,把要翻译的代码给 AI 让它按要求重写即可。
5. 当你无法用文字或者图片描述你要做的事情的时候,或者写 Prompt 的成本更高的时候,手搓代码
Prompt 不是万能的,很多需求或者问题是没法用文字或者图片描述清楚的,或者要清楚的描述成本比手搓代码成本还高,那真的没必要还要去写 Prompt。
如何把需求表达清楚并没有想的那么容易,尤其是那些自己擅长写文字的资深人士,是体会不到要清晰的用文字描述清楚一个需求是有点难度需要练习的,而有时候写代码反而直接些,因为简单并什么二义性。
所以我建议新手可以多用伪代码当提示词,代码也是很好的 Prompt。我自己在写不熟悉的语言的时候,通常会用熟悉的语言写成伪代码,然后让 AI 生成目标语言的代码。
6. 当 AI 写的代码质量满足不了要求的时候,只能依赖于手搓
现在 AI 写的代码虽然质量不错,但随机性很强,有时候很好,有时候却不怎么样,对于复杂一点的没训练过的算法,或者训练语料不足的语言,还是得手搓才能获得更好的结果。
7. Debug 代码的时候,优先用 AI
我发现 AI Agent 对于 Debug 代码能力挺强的,经常能帮助找到一些隐藏的 Bug。AI 比人有优势的地方在于看到人看不见的盲区。但 AI 很多时候也不行,还得去人工复现一点点缩小范围。
8. 模块级、上下文充足的代码优先使用 AI 生成
如果你的代码只是模块级别,并且上下文充足,AI 生成通常能又快又好,如果效果不好可以调整提示词多生成几次。
9. 需要长期维护的核心代码,最好手搓
有些核心代码需要长期维护,虽然也能 AI 生成,但是如果完全 AI 生成对于程序员来说可能就变成了个黑盒子,不了解它怎么实现的,性能如何,有没有安全问题,给后续维护带来困难,所以这部分代码,最好手搓,或者说 AI 写完后要人工认真审查修改,确保对代码是理解的,代码是没问题的。
我列这么多,一方面都是我使用过程中总结下来的经验,一方面也是为了说明用 AI 还是手搓,其实没标准答案,得看不同的场景以及使用 AI 的人。不能简单的就认为手搓代码不如 AI 写代码高级。
AI Coding 和手搓代码是最佳搭配
AI Coding 和手搓代码不是对立的,搭配用很好的。AI Coding 可以拓展能力边界、提升效率、减少重复劳动,手搓代码可以为 AI Coding 兜底,当 AI 解决不了时人工来写,当 AI 写不好时人来修改,就算时 AI 写的代码,也离不开人工的 Review。搭配好可以事半功倍。
写在最后
用 AI 写代码还是手搓代码代码,都属于手段而不是目的,写代码的目的是为了构建产品。
不是所有的场景都适合 AI 编程,很多时候还是得手写代码,所以会写代码依然是重要的基础能力,不要因为 AI 写代码强了而忽视了锻炼自己的编程能力。
专业程序员就算手搓代码再熟练也需要多使用 AI Coding,让它成为自己有力的工具。
非专业人士也不要瞧不起手搓代码,当你遇到 AI 解决不了的问题,还得找专业程序员去手搓代码帮你兜底。
至于未来 AI 如何进化,我们都需要保持关注,持续学习,无论 AI 怎么强,用好它也能让自己更强。