什么是「人与 AI 协同开发」

过去,人们谈到软件开发时,通常会默认一个前提:软件由程序员开发


业务人员提出需求,产品人员整理需求,程序员负责实现,测试人员负责检查,用户通过反馈继续推动修改。

即使其中已经使用了自动化工具,整个过程的中心仍然是人,尤其是专门从事软件工作的那部分人。


但现在真正值得讨论的,已经不是 AI 能写多少代码,

而是软件开发的主体正在发生变化


未来的软件,不再只是由人独立完成,也不只是由 AI 自动生成,

而是由人与 AI 共同理解、共同设计、共同实现、共同维护

这里的「共同」不是简单地把任务拆开,也不是一方完成之后交给另一方检查,

而是双方在同一个问题中不断交换信息、调整方向和改变系统。


这就是人与 AI 协同开发

一、程序员是一种社会分工

首先需要重新理解,为什么过去会有专业程序员。


这并不是因为普通人天然不能做软件,也不是因为软件只能由某种特殊的人生产。

人们只是根据自己的兴趣、知识、意愿和现实条件,选择不同的工作方向

有人选择研究业务,有人选择做产品,有人选择从事设计、科研、运营或管理,也有人选择长期研究软件。


当软件需要持续投入时间和注意力时,社会便形成了相应的分工:

一部分人专门负责把问题变成软件,其他人则通过他们获得软件能力。


程序员由此成为一种稳定的职业角色。


这种分工本身没有什么神秘之处。

社会总是会把复杂的工作拆开,让不同的人承担不同的部分

人们不是因为无法完成全部工作才进行分工,而是因为分工通常比每个人都亲自处理所有事情更合适。


AI 改变的不是人的能力本质,而是这种分工的成本。


过去,一个领域工作者如果想把自己的工作流程变成软件,往往需要经过较长的协作链条。

现在,他可以直接与 AI 讨论问题,让 AI 帮助分析可能性、寻找已有能力、生成实现、运行验证,再根据结果继续修改。


但这不意味着所有人都会转行成为程序员。


大多数人仍然会根据自己的兴趣和生活选择工作方向。

研究人员不一定想成为软件工程师,运营人员不一定想长期维护代码,教师也不一定想把软件开发作为职业。

他们只是多了一种选择:当自己的问题适合软件化时,可以和 AI 一起把它做出来


大家都会写文章,并不意味着大家都会靠写文章谋生。

未来大家都可以参与软件生产,也不意味着大家都会以软件开发为职业。


真正扩散的不是程序员这一职业,而是软件化能力

二、软件开发不是一条接力线

现在很多关于 AI Coding 的文章,仍然喜欢把软件开发描述成一条接力线

人提出目标,AI 编写代码,人进行审核;或者 AI 负责实现,人负责判断。


这种描述看起来清楚,却把一个不断变化的过程冻结成了固定分工

它默认人和 AI 是两个相互独立的参与者,也默认今天的能力边界会长期存在。


但真实的软件开发并不是这样。


一个新项目开始时,人可能掌握业务背景,却未必知道所有技术可能性;

AI 可能了解大量技术资料、类似系统和实现路径,却未必知道组织内部的实际情况。

双方掌握的信息不同,也都可能遗漏重要内容。


因此,目标本身就需要共同形成。


人介绍已知的背景,AI 补充相关知识;

AI 发现原始想法中的冲突,人补充现实限制;

人表达偏好,AI 提出不同方案;

双方在讨论中逐渐明确真正要解决的问题。


最初的一句话需求,往往不是最终目标。

随着人和 AI 共同了解系统,双方可能发现新的约束、新的机会,甚至发现原来的问题定义并不准确。

目标不是一开始就完整地交给 AI,而是在协作中逐渐变得清晰。


目标确定之后,架构也不是人设计完、AI 负责填充。


人和 AI 都需要观察系统的模块、能力、数据流和依赖关系。

双方先从整体和模块层面理解变化,再根据需要一起深入到文件、函数和具体实现。

某个模块边界不合理,可能由人发现,也可能由 AI 发现;

某种实现方式不符合业务,可能由人指出,也可能由 AI 通过对比和实验发现。


编码同样不是 AI 独立完成的环节。


人可以直接修改代码,可以改变模块设计,可以否定 AI 提出的方案,也可以在实现过程中改变原来的目标。

AI 则可以根据人的修改继续重构、补充、测试和解释。

所谓「AI 写代码」,只是双方共同改变软件时,其中一种常见的协作形式。


验证也不是 AI 做完测试,再由人最后验收。


一个系统是否正确,既要看它实际上做了什么,也要看这些行为是否符合业务目标。

AI 可以运行大量测试、操作浏览器、回放用户流程、分析日志、寻找反例;

人可以补充历史规则、用户习惯和现实背景。

AI 可能先发现异常,再请求人解释某条业务规则;

人也可能先提出疑问,再让 AI 追踪影响范围。


双方共同判断问题,共同选择修复方式,也共同观察修复后的结果。


软件上线以后,情况仍然如此。

软件本来就不是一次交付后静止不动的产品,它一直会受到用户、环境、需求、故障和资源变化的推动。

过去,推动软件变化的主要是人组成的开发团队;

未来,推动软件变化的力量会变成人和 AI 共同组成的开发系统。


AI 可以发现问题、提出修改、主动请求信息;

人可以补充上下文、改变优先级、调整目标、直接干预实现。

具体由谁先行动、谁参与更多,并不是固定规则,

而是会随着问题和双方能力不断变化。


因此,人与 AI 协同开发并不是把软件流程切成两半,而是让双方共同参与整个过程

三、变化首先发生在开发产物

当软件不再由人单独生产,代码本身也会发生变化。


过去,代码的很多价值来自于人需要亲自阅读和维护它

于是人们格外重视命名、抽象、复用、依赖数量和局部结构。

代码不仅要能运行,还要尽可能适合人长期理解。


人与 AI 协作之后,当然可以产出比过去人工开发更好的代码。

AI 可以同时分析更多文件,快速寻找重复逻辑,比较不同实现,完成跨语言迁移,也可以根据测试和运行结果不断重写模块。


但代码「更好」并不意味着每一部分代码都值得被长期打磨。


如果一个模块只是当前需求下的局部实现,重新生成的成本很低,那么它没有必要承担过多的历史负担。

某些一次性脚本、临时工具、边缘页面和适配代码,完全可以在需要时重新生成。

重复代码也不一定总是问题,复杂抽象有时反而比局部重复更昂贵。


代码的长期价值,会越来越取决于它是否稳定提供某种能力,而不是它是否值得人逐行欣赏。


这并不是说代码会消失,

而是代码从「必须长期保存的主要资产」,变成了「能力在某个时刻的实现形式」。


同一个能力可以先由 AI 临时生成,后来被固化成普通代码;

也可以先使用一段成熟实现,之后根据新的语言、平台或性能目标重新生成。

实现本身可以变化,能力仍然继续存在


代码、测试、文档和规范也不一定都要提前完整建设。

很多约束可以在任务发生时,由人和 AI 根据已有代码、用户行为、历史记录和运行结果共同恢复出来。

真正重要的不是所有资料都必须事先写好,而是系统在需要时能够重新建立对问题的理解。

四、基础设施会从复用代码转向提供能力

代码产物可以随时变化,会进一步改变基础设施的意义。


过去,基础设施主要以人能够直接复用的形式存在:公共库、SDK、组件、框架、脚手架和开发文档。

平台团队的任务,是把能力封装好,再让开发者学习如何使用。


未来,基础设施更重要的任务,是让人与 AI 都能够发现已有能力,并知道这些能力可以解决什么问题


组织内部可能已经存在一个数据服务、一个审批流程、一套消息系统或一个批处理工具。

但如果人和 AI 不知道它存在,或者不知道它适合当前问题,那么这项能力实际上就很难发挥作用。


因此,未来的基础设施不仅要提供能力,还要提供能力的说明

  • 能做到什么;

  • 不能做到什么;

  • 适用于哪些场景;

  • 应该如何调用;

  • 需要什么权限;

  • 大致成本和限制是什么;

  • 怎样判断调用成功;

  • 失败后可以使用什么替代方案。


平台团队不一定需要为所有未来需求提前编写完整组件。

更可能的方式是,把稳定、共享、高频的能力建设好,把它们暴露给人和 AI;

至于低频、个性化、一次性的部分,则在真正需要时由人和 AI 共同创造。


于是,未来会逐渐出现两种知识。


一种是已经存在、相对稳定、可以被反复调用的能力

它们可能是 API、工具、服务、数据接口,也可能是经过验证的业务流程。


另一种是使用过程中才产生的知识

它们可能是临时代码、新模块、特定流程、一次性测试或当前任务中的解决方案。


基础设施的核心,不再只是「提前写好更多代码」,

而是让已有能力足够容易被发现,让新的能力可以在使用时快速产生


这也是为什么未来的平台建设可能越来越像能力目录、能力网络和 agent 使用环境,而不只是传统意义上的代码库。

五、软件只是一个更早显现的例子

人与 AI 协同开发并不只属于软件行业。


软件之所以最早显现,是因为代码容易生成、容易运行,也比较容易通过测试观察结果。

但更广泛的变化是,许多工作都会从个人独立完成,逐渐变成人与 AI 共同完成


  • 研究人员可以和 AI 一起确定研究方向、查找资料、设计实验、处理数据和分析结果。

  • 设计师可以和 AI 一起理解用户、形成方案、制作原型并根据反馈修改。

  • 运营人员可以和 AI 一起观察流程、识别异常、判断原因和执行处理。

  • 教师可以和 AI 一起设计课程、分析学习情况并调整教学方式。


在这些场景中,AI 并不只是某个环节的自动化工具,人也不只是最后的审批者

双方会共同理解问题,共同补充信息,共同试验方案,并根据结果继续改变方向。


当然,不是每个人都会采用这种方式。

人仍然会根据自己的兴趣、知识、习惯和其他选择决定是否使用 AI,也不是每个问题都值得软件化。

但一旦某个领域开始采用这种协作方式,它的工作结构就可能发生变化。


AI 的更大作用,不是让所有人都学会写代码,

而是让更多工作拥有一个可以共同思考、共同行动和共同改进的智能协作者

结语

人与 AI 协同开发,真正改变的不是「谁负责哪一步」,

而是软件开发不再由一个孤立的主体单独推进


人和 AI 共同了解背景,共同发现问题,共同形成目标;

共同观察模块,共同选择方案,共同参与实现;

共同运行测试,共同解释结果,也共同处理那些原本没有预料到的情况。


有时人参与得更多,有时 AI 参与得更多;

有时一方先提出方案,有时另一方先发现问题。

具体的协作方式会随着技术、环境和任务不断变化,但双方共同推进问题解决这一点会越来越稳定。


未来,遇到新的软件问题,不一定是人先想清楚再告诉 AI,也不一定是 AI 先完成再等待人检查。

更可能是双方一起进入问题,一起建立理解,一起尝试方案,一起面对失败,再一起寻找新的办法。


专业程序员仍然会存在,软件专业性也不会消失。

变化在于,专业程序员不再是所有软件化问题的唯一入口;

软件也不再只是软件行业内部生产的产品。


人与 AI 会共同成为开发者。


这不是因为所有人都转变成了程序员,也不是因为 AI 取代了某种职业,

而是因为软件开发终于从一种固定的社会分工,逐渐变成了一种可以由人和 AI 共同参与的普遍活动。