AI Coding 是不是真的降低了软件开发的门槛?

先说一下结论:AI Coding 只是降低了 Coding 的成本,但是并没有降低软件开发的门槛。 差不多半年前,我一直没想清楚 AI Coding 带来的变化是什么,这里主要的原因是没有想清楚怎么让 AI Coding 开发的系统保持可持续性和可维护性。但是经过这半年的思考以及在团队内的推进落地,我觉得这个问题,我有了一个大概了答案了。 AI Coding 打破了编程语言的门槛,提升了 Coding 的效率。但是什么场景适合用什么语言,以及 Coding 的内容怎么是合理、正确的,这些如果指挥 AI 的人没有足够的认知,那 Coding 的结果应该是比较碎片化的,导致碎片化的核心原因在于:软件系统需要长期多次迭代,而每次迭代都意味着与 AI 的多轮对话。由于对话存在时间跨度,AI 很难在每次生成代码时都自动获取并聚焦于完整的项目全局上下文。在缺乏人为干预的情况下,这种‘上下文丢失’必然导致系统模块间的设计不一致和逻辑冗余。。这也就导致迭代的碎片化产生,也就导致系统模块之间存在不一致的设计以及雷同的逻辑等。 那作为一个合格的资深开发来说,要怎么用好 AI Coding 呢?这就是最近半年大家一直提的 harness ,那么什么是 harness ?以及怎么去构建、迭代、维护这个 harness ?其实没有一个标准解释。要解释这个话题,需要回溯一下在 AI Coding 之前,我们怎么让团队的同学在一套开发机制、规范、标准下持续迭代的。 以前,我们在冷启动一个软件项目的时候,一般都会基于某一个框架完成项目脚手架的搭建,比如 MVC 分层、微服务组件、限流组件、工具划分、日志标准、代码风格等等,有了这些,不管是团队内部老同学还是新同学,都可以快速的在一个标准下完成软件的迭代,这些我们在之前把它叫做架构、系统设计、领域设计,一般是有团队资深的研发负责制定、维护和迭代,随着软件的迭代,那么这套框架的标准、规范、机制也会逐步成熟,具体体现在业务能力逐步收敛、架构职责逐步清晰、领域角色逐步稳定等等。但是 AI Coding 出来之后,好像大家只是关注在 Coding 上,没有把目光聚焦在软件的可持续性上。 我们再回到 AI Coding 的时代,其实软件开发的过程并没有发生变化,以及对软件质量的要求也没发生变化,唯一发生变化的是 Coding 的方式发生了变化。如果把之前我们的代码语言也是作为一门人类的语言,会更好理解 AI Coding 时代的变化,在之前,我们是通过合适的代码语言去搭建一个项目的脚手架和组件以及原则去规范多人开发过程中的软件研发标准,只是我们通过代码语言去和众多研发交流。而对比现在,我们更多的是通过自然语言去和 AI 交流,代码语言变成了我们更熟悉的自然语言,Coding 的角色变成了 AI 。既然如此,我们完全可以用自然语言,将过去的项目脚手架、框架、组件和领域设计原则重新定义一遍。本质上,我们只是换了一种表达媒介:将传统的软件架构约束,固化为 AI Agent 能够精准理解的 rules (规则)和 skills (技能)。这套约束机制,就是 AI 时代的 harness 。所以一个可以被 AI Coding 的软件系统,应该有一个配套的 harness ( rules+skills ),为了更好的被承载和迭代,应该是和这个系统的 codebase 在一起,作为软件开发的一部分。从这个角度看,软件开发的要求没有变化,作为资深研发的价值还是会被放大,因为这里的 harness 的成熟度取决于你的经验和理解。 总结一句: 之前我们的系统架构和设计原则,以及形成的框架、组件,是那个时代的 harness ,AI Coding 时代,只是需要把我们的 harness 演进成符合这个时代的要求,本质内容和目标没有发生变化,但是这套 harness 会比之前更加精炼。