有的人使用 Code Agent 提效 30%,有的人提效 300% 甚至更多。
区别不仅在于模型的选择,或是 Prompt 写得有多好,更重要的是工作流程。
提升 30% 是工具的辅助,提升 300% 则是生产关系的变革。如果只看到 30%,那用不用 Code Agent,差别好像不那么大,而如果有的人用了 Code Agent 实现了自身几倍效率的提升,对于不使用 Code Agent 的人来说,就是降维打击了。
串行开发
传统的开发流程中,所有工作都必须由人完成,所以只能串行开发,即使负责多个项目,也是在多个项目中切换,同时只能处理一个项目。
Code Agent 已经可以完成大部分编码工作,如果还是按照传统的工作流程,只是把编码的工作交给 Code Agent ,这时效率提升仅仅来自代码生成速度的加快,提升有限。
和 AI 的交流也是需要学习和适应的,知道 AI 能做什么,不能做什么,擅长什么,不擅长什么,需要在不断的尝试中探索。
有限的效率提升加上与 AI 的沟通成本,这也是很多人拒绝使用 AI 的原因。
当掌握了和 AI 的沟通方法后,就能将自己从编码工作中解放出来,获得很多看着 AI 干活的空闲时间。
并行开发
如果把 Code Agent 带来的空闲时间也利用起来,就能进一步提升效率,这就需要切换到并行开发流程。
并行开发可以按项目和分支维度分为多项目单分支,单项目多分支,多项目多分支。
多项目单分支
这是并行开发最好上手的方式,只需要在多个项目中开启 Code Agent,自己不断给 Code Agent 描述需求,确认方案,由 Code Agent 来实施。
哪个 Code Agent 完成了或者需要确认了,程序员再介入。
单项目多分支
相对多项目的需求,更常碰到的情况是单个项目中有多个需求,它们可能是互相依赖的,也可能是互相独立的。
平时我们在一个项目中可以切换分支,但同时只能使用一个分支,无法并行开发。这时就需要 git worktree 命令。git worktree 可以管理工作区,多个工作区彼此独立,在每个工作区都可以开一个 Code Agent。
常用的几个命令:
git worktree add:添加一个工作区,比如 project-a,要开发一个 feature-a,就可以使用git worktree add -b feature-a ../project-a-feature-a master,从 master 签出一个 feature-a 分支,工作目录是 ../project-a-feature-a。git worktree list:查看工作区列表。git worktree remove:移除工作区。
在实际开发中,如果要开发一个新的功能,就添加一个使用新功能分支的工作区,在工作区进行开发,直到相应分支代码合并到主线分支,再移除工作区。
如果功能互相独立,就从主线分支签出,如果互相依赖,则从具体的功能分支签出。
因为会有集成测试的需求,我会再添加一个用于集成测试的工作区,并添加一个脚本用于将各个功能分支合并到集成测试分支,每次有新的功能分支或对功能分支做了新的提交,就重新执行一次脚本进行合并。
cd ../project-a-integration
git checkout integration
git reset --hard master
git merge feature-a --no-ff --no-edit
git merge feature-b --no-ff --no-edit
git merge feature-c --no-ff --no-edit
...
git push -f
注意这个脚本不要放在集成测试分支的工作区,不然会被 reset。
有了多项目单分支和单项目多分支的基础,多项目多分支也没什么难度了。
效率卡点
AI 生成代码的速度很快,并行开发时,程序员往往成为卡点。
要找到自己的卡点,才能进一步提升效率。我目前发现卡点主要来自两部分,一是 review 代码,二是功能验证。
这两部分都需要人来操作,如果操作时间过长,很多 Code Agent 都等待人来确认下一步,这时就又回到了串行流程。
关键在于如何减少这两部分所花费的时间。
对于代码 review,如果是一个比较大的功能点,尽量先和 AI 确认好实现方式,不要让 AI 自由发挥,或者将大功能拆成多个小功能,分步实现,这样每次 review 的工作量不会太大,自己看完一部分代码后,可以先提交,然后不断往之前的提交中追加内容,这样也更容易区分每次的改动。
对于功能验证,如果需要启动服务,构造数据进行验证,往往花的时间最多。比较好的办法是让 AI 自己验证,比如先让它写好单元测试,或者给它一个验证方式,而不要一直等着人去验证。
写在最后
Code Agent 出现之前,程序员之间的差别可能不那么明显,即使再厉害的程序员,要实现一个功能,也有很多时间要花在编码上,而编码的速度是有一个上限的。
而有了 Code Agent 之后,程序员之间的差别将成倍拉大,当有的人满足于使用 Code Agent 从编码工作中解放出来,多了一些空闲时间,有的人则同时开发多个功能,将自己的效率提升好几倍。
如果只把 Code Agent 当做一个更快的代码生成器,只是有了更好的辅助工具。而如果使用了并行开发流程,一个人能干之前好几个人的事情。从一个人只能做一件事,到一个人同时推进多件事,生产关系有了变革,这才是 Code Agent 真正的价值。