我是不敢让 ai 帮我写程序的,每回问它的问题,十次倒有八次是错的,问完之后还要自己去网上搜一遍,然后反复测试,才敢写进代码。
不知道大家怎么甩手给它的。
——盗贼

盗贼毫无疑问是编程高手,几十年的开拓履历,其余他写的代码都属于一些底层代码,被演习过的比例极少,AI 大概率写不出来高质量代码,不放心让 AI 帮忙写程序正常。
但对付普通程序员来说,不一定要像盗贼那样,谢绝 AI 的帮助。

比如我便是个普通程序员,写的都是一些大略的前端 UI 代码,或者后端增编削查代码,并没有太高技能含量,就常常让 AI 给我帮忙,还是让我效率提升不少的。
我总结下来履历便是:像用演习生一样用 AI 赞助你编程。

在科技公司或者开拓团队常常能看到这样的场景:某些资深程序员,写代码特殊牛,效率特殊高,但是很多活都压在他们身上,成为了团队瓶颈,于是老板说,这样弗成,给你几个演习生或者新伎俩式员帮你分担一些吧。

像用演习生一样用 AI 赞助你编程

大多数时候这种发起是被谢绝的,倒不是他们藏私不愿意带人,而是在他们看来,把活交给演习生,一个大略的任务都要花几天韶光,自己一小时就做完了,中间还要沟通,做完质量弗成还要帮忙擦屁股,花的韶光超过自己写的韶光,一点都不合算,另可自己做。

这些确实是事实,但是可能忽略了一些问题:

演习生是会发展的,很多事情教了一遍就不须要再教第二遍了。
再繁芜的程序也是有些“体力活”的,比如说搭个脚手架,新增个模块,大略的重命名/重构,等等。
对付资深程序员来说,总是干体力活会倦怠的,但是对演习生来说恰好是一个学习的好机会。
能从演习生身长进修到新的东西。
当我们对一门技能太熟习,会有路径的依赖,不太随意马虎创造或者接管新的技能,同样的任务让演习生做,虽然大多数时候不如你做的,但是也会有面前一亮的时候,能学到一点新的东西或者开阔一下眼界:原来还可以这样!
如果你的任务不能交给演习生做,大概架构上存在一些不敷,无法合理的将功能拆分。
有些程序员的活不能拆分出来,一个缘故原由可能是架构还不足好,模块都在一起,无法拆分。
当然纵然拆分后肯定还是有些繁芜模块是无法进一步拆分的,这不在此列。

我在带演习生上有一些履历,以是在利用 Cursor 或者 GitHub Copilot 的时候,便是把 AI 当成一个演习生用,效果是很好的。

01 首先体力活都交给 AI 来做

体力活指的是那种重复的、哀求不高的、繁琐的事情。
比如说:

新建一个页面、一个 API一个数据库增编削查的模块单元测试

这些活说难也不难,但是自己写有点麻烦,以是我每次都是 Cursor 里面用 CMD+i 唤出 Composer,把干系代码文件都添加上作为高下文,然后提出哀求,一个初始的功能就有了。

比如我要为自己的博客网站增加一个 Sitemap 的功能,我当然可以自己写,但光文件都得创建好几个,还得写一些基本的读取数据库和输出 Sitemap 代码,乃至我还得去查询一下 Sitemap 规范。
正由于如此,以是我一贯

很快就帮我把干系文件都创建好了,虽然说 robots.txt 都给我做成动态的有点业余,但是也还好,至少我知道了内容该当是什么,

理论上基于这个结果,还可以一贯提要求,知道满意为止,或者差不多了自己接管手动修正一下。

我个人是以为,让 AI 帮忙先实现一个基本的模块,意义不仅仅在于减少了体力活,而是帮你开了个头!
万事开头难,很多时候真的便是由于没有一个开头就没连续,当有个初始的结果,哪怕烂一点,再基于它上面修正要大略很多,更随意马虎交付。

02 给“演习生”一个葫芦,让他们学着画瓢

对付演习生来说,轻微繁芜一点任务很难从无到有做出来,但是如果给他们一个已经做好的模块作为参考,照着葫芦画瓢,那么也能做个差不离。

让 AI 帮你编程也是一样的,你不能指望 AI 能像你一样厉害懂你的代码库,但是你可以教它,把一个类似的实当代码给它参考,乃至于写一段伪代码让它实现。

就拿前面 sitemap 的例子,添加到高下文的 feed.xml/route.ts 便是“葫芦”,有了这个“葫芦”,它去“画瓢”就随意马虎多了,它可以从中去学习最佳实践是什么。

03 设计架构和技能选型的时候,选“演习生”熟习随意马虎上手的技能

技能选型是一个让人纠结的事情,须要各种考量,现在更是多了一个维度,便是要考虑把 AI 当成你的团队成员,想让 AI 能更好的帮你干活,那么就少造一些轮子,少用一些偏僻的框架或类库,用那种最盛行的,演习语料最多的框架和库。

比如我在给自己搭建博客的时候,选的 Nextjs、Tailwindcss、ShadcnUI、D1(Sqlite),这些都是相称盛行和随意马虎上手的框架和库,以是我让 AI 帮我实现一个 Sitemap,它能知道在什么创建文件,遵照什么规范,写 UI 也知道如何帮我添加精确的 CSS。

04 将繁芜任务分解成大略的任务,让“演习生”帮你完成小的模块

资深程序员和新伎俩式员的一个分界,便是能不能将繁芜模块拆分成大略的小模块。
比如我要搭建一个自己的博客网站,就 AI 现在的能力,是没办法自动完成这样一个项目,但是我可以让它帮我创建一个页面,帮我实现一个数据库读写的功能模块,帮我基于数据库读写模块实现一个 API,而我自己,则可以聚焦于数据库的表设计、系统的架构设计、UI 设计这些事情上。

05 向“演习生”学习

现在在实现功能的时候,哪怕我比较熟习的,我会习气性问一下 AI,让它帮我天生一段代码,虽然大多数时候它不一定比我写的更好,乃至是缺点的,但有时候它能提出一种全新的我没考虑过的思路,那我就能从中学习到点什么,往后可能就用的上了。

就像大数学家陶哲轩,也在用 AI 帮忙办理数学问题,并非 AI 数学比他厉害,而是给他供应了不一样的思路。

我曾碰着过一个问题,我考试测验了几种方法,但都无法办理。
于是,我考试测验讯问 GPT,你建议我利用什么其他方法来办理这个问题?GPT 给我供应了 10 种可能的方法,个中有 5 种我已经考试测验过,或者明显没有帮助。
的确,有几种方法并不实用。
但个中有一种我还没考试测验过的方法,那便是针对这个问题利用天生函数。
当 GPT 建议我利用这种方法时,我意识到这便是我漏掉的精确方法。
以是,将 GPT 视为一个互换伙伴,它确实具有一定的用途。
——陶哲轩

06 对“演习生”产出的结果要验证

既然 AI 只是一个演习生,那么就解释它天生的代码是靠不住的,哪怕看起来很好,总是要像对待演习生一样,去对代码做审查,理解它实现的思路,对结果进行测试验证,涌现问题让 AI 改进或者手动修复。

如果有人去责怪产品的问题是由于 AI 天生的质量弗成,那只能解释是在甩锅,就像你生产环境的故障不能怪这是演习生写的,难道你们不做 Code Review,不做 QA 的吗?

07 末了

这是我在日常利用 AI 赞助编程的一点履历分享。
如果你把 AI 当成一个资深程序员,那么你大概是要失落望的,但是如果你把 AI 当作一个演习生,它真的可以做不少事情,让你提升编程效率。

其余一些现在 AI 还不能完备替代专业程序员的地方:

基于业务需求进行抽象和架构设计的能力对繁芜问题进行分解和统筹方案的能力涌现问题定位和调试的能力当然还有出问题背锅的能力

欢迎分享你的履历!

本文由大家都是产品经理作者【赛博禅心】,微信"大众号:【赛博禅心】,原创/授权 发布于大家都是产品经理,未经容许,禁止转载。

题图来自Unsplash,基于 CC0 协议。