最近我几次收到了“跟着感觉编码”的评价,这让我开始思考人们是如何定义这个词的。
我在开发项目时大量使用AI,对此我并不隐瞒。而且我本身会编程,能够阅读和理解代码。 我把AI当作工作流程的一部分,是因为它能帮我更快构建产品,而不是因为我对代码在做什么一无所知。
我并不是坐下来随便说句“给我做个应用”,然后全盘接受结果就直接发布。
决定构建什么、功能如何运作、界面应该做什么、需要持久化哪些数据、以及产品中哪些东西不需要——这些都是由我来决定的。我测试所有内容,发现Bug,拒绝那些不符合我意图的实现。当用户反馈暴露出我未曾预料的问题时,我会调整需求。有时我会反复迭代一个功能,直到它正确运作为止。
举个例子,最近我花了不少时间在我的一款应用的连续签到系统上。我需要定义:什么算作一个写作日、如果有人缺席一天该怎么办、什么时候该消耗签到冻结权益、日历应该显示什么、连续签到何时重置、以及恢复连续签到的行为应该怎样。
AI可以编写实现代码,但它无法决定我想要那个系统是什么样子。
最接近的类比是:我本质上是在管理一个速度极快的开发团队——只不过这个团队不是人类。
我提出需求。
它实现需求。
我审查代码和结果。
我进行测试。
我发现问题。
我让它返工。
我们迭代。
而且因为我能读懂代码,所以我不仅仅局限于判断屏幕“看起来对不对”。当某些行为不正常时,我可以查看实现细节并分析问题所在。
我对产品仍然负有责任。如果某处有Bug、不安全、设计糟糕或者纯粹很烂,“这是AI写的”并不是借口。是我发布的产品,所以责任在我。
我也不是说这和手动逐行编写代码是同一回事。显然不是。AI为我承担了很大一部分实现工作,我坦然承认这一点。
但我认为“AI写了代码”和“跟着感觉编码”不一定是一回事。
在我看来,以下两种情况有着天壤之别:
“给我做个应用。看起来不错。发布吧。”
与
“这是我们要构建的系统。这是需求。实现它。现在我们来测试。这个行为不对。它应该是这样运作的。修复它,但不能破坏其他系统。现在我们来验证。”
也许更好的描述是AI辅助开发。
我很好奇其他开发者认为界限在哪里。
在什么情况下,将AI作为开发工作流程的一部分会变成“跟着感觉编码”,而不是仅仅将它当作另一个开发工具?
评论 (0)