AI如此强大,以至于任何试图亲自解决问题的举措都会显得笨拙不堪。然而不要忘记,提出正确的问题才是最难的事情。——我瞎说的
目前在使用大模型写代码时,一般来说超过5k token就处理不了了。所以我们在使用AI做开发的时候,经常会觉得所有AI开发工具都不得劲。因为AI根本没有全局观念,特别是当项目体量变大的时候,你让AI去修改某些东西,他根本就不会去想已经实现了什么东西,时时刻刻都表现得像个刚加入团队的新人,用起来十分恼火。
有限制的token就像人的工作记忆,人的工作记忆也是有限的,那么人类是怎么解决这个问题的呢?人类会对问题有一个整体的概念,人类还会分解问题,制定计划。当需要多人协作的时候,会把任务的边界制定清楚,划分模块,定义接口。即便如此,人类在开发大型项目时,也会遇到诸多问题,比如:在开发大型项目时人类也重复造轮子;项目太复杂以至于开发者自己都搞不懂它;即使是自己的项目,写着写着就忘记以前写的是什么意思了。
“系统工程”对构造复杂系统提出了一些理论指导。系统工程指出管理系统生命周期的方法有以下几种:
1、计划驱动方法:按照需求、设计、构建、测试、部署的范式进行。
2、渐进迭代式开发(IID):提供连续交付以达到期望的系统。
3、精益开发:起源于丰田的“准时化”哲学思想,是一个动态的、知识驱动的、以客户为中心的过程。
4、敏捷开发:强调持续交付、欢迎需求变更、面对面交流、简单性、动态调整。
人具有自适应性,可以自发组织,具有很强的应对变化的能力,所以当我们发现方法1并不符合实践出真知、螺旋上升等认知规律的时候,我们发展出了方法234等,AI目前似乎并不具有这种自适应性。所以我认为目前AI的最佳实践还是计划驱动方法。
计划驱动方法按照既定的计划和步骤推进项目,强调在项目开始前对需求、设计、开发、测试、部署等各阶段进行详细规划。该方法具有以下特点:
一是线性推进,各阶段按顺序依次进行,前期工作完成后才进入下一阶段;
二是强调文档化,每个阶段都需要产出相应的文档,如需求规格说明书、设计文档等,以便后续工作和沟通;
三是注重阶段性评审,各阶段结束时进行评审,确保工作成果符合要求。
计划驱动方法适用于需求明确、变更较少的项目,有助于提高项目管理的可控性和可预测性。至少我们可以在某一时刻形成一个需求快照,让AI就这一时刻的需求,做出一个最好的应答。
将计划驱动方法类比到人类与AI的协同开发流程中,我们可以:
- 宏观上按阶段推进,微观上引入Sequential Thinking
- 文档先行,用文档记录整体概念与局部概念
- 合理拆分,分解问题到适合AI处理的(比如5k token)
- 与AI沟通时附上相关文档,确保AI在解决局部问题时也了解整理概念
- 每个阶段的产出都需要人工介入评审,确保工作成果符合要求
唯一的问题是,也许某一天AI突破了token限制,这种与AI协同开发的工作方法论就会变成一种自然涌现。