使用AI Coding之后,对于事物的掌控力其实是在变弱的 关于AI Coding的思考(二)

最近在工作上遇到一些非常棘手的问题,让我想起了在没有AI之前解决问题的方式。在没有 AI 的时代,通常来说,我们对于一个功能的开发是渐进式的。虽然进度慢,但是我们对它的掌控力是比较强的,所以出现问题的时候也能够有的放矢。

AI时代来临之后,整个功能的开发节奏加快了很多,这必然就导致开发者对于具体代码的掌控力有所下降了。

我们用AI去开发一个demo,一个从0~1的独立的小项目,自然是能感受到其对传统古法编程的降维打击。但是对于一个大规模的线上运行的持续迭代的项目,其复杂程度就体现在更高的维度了。首先,AI无法获取充分的信息,比如说这个问题是偶现的;对于客户端来说,还有一些对AI更不利的问题:这个bug的表现通常是在UI上,对于一些纯逻辑的内容,AI可以通过日志or输出来精确地获得运行的反馈;但是客户端代码的反馈往往是可视化的,AI通常无法准确地理解。如果是偶现问题的话就更麻烦了,因为连开发者自己也没有办法获取全部的必要信息。

另外有一个问题,就是很多排查问题的潜移默化的经验在AI时代很容易丢失,特别是那些没有经历过古法编程时代的开发者。比如对于一个偶现的问题,我们要优先尝试复现,这里就涉及到这个问题是不是出现在特定的平台、特定的版本。对于我们的项目,除了特定的版本,还要找到对应的浏览器内核的版本。浏览器内核还要去加载小程序前端库的版本,一层套一层。这些事情在环境上都是隔离的,AI 无法帮你做到。至少目前是这样。

当然,AI 在一些比较独立、目标明确的事情上还是提效明显的。比如说,我可以通过日志直接去找到关键信息,还原出用户的行为链,再导入另一个工具进行回看,这是一个纯体力活,AI 干起来效率就挺高。

但我这个想法的核心意思是:在AI时代来临之后,人编码的吞吐量变大了,但对于代码的理解变得肤浅了。这样在复杂的系统里面出现问题之后,人的掌控力其实是下降了的。