想请教大家的ai coding工作流
日常工作和个人项目都会用 coding agent。最近遇到一个挺困扰的问题,想请教一下有经验的工程师。
我的体感是:在已经比较成熟、抽象比较清晰的代码库里,AI coding 用起来很顺手。但在让 LLM 从零开发的项目里,一方面,随着功能增加,我会逐渐失去对代码库的掌控。另一方面现在即使是很好的模型也经常生成一些非常complex and defensive的代码,加很多一看就不合理的fallbacks。
一开始也会认真讨论设计、review plan,当时觉得自己都理解了。但过几天继续迭代,就开始跟不上:这个逻辑放在哪里?为什么又多了一个模块?新增功能应该改哪一层?
最近在读《A Philosophy of Software Design》,虽然是大模型之前时代的书了,但里面关于抽象的讨论很有共鸣:好的设计好的抽象,应该让开发者比较容易判断,为了修改某个行为,需要去改哪些模块。回头看自己,有时候连项目到底有哪些模块都快记不清了😂
我感觉这里有两个互相关联的问题:
代码本身可能在变得难懂。每次功能都能跑,但模块边界逐渐模糊,职责散落在不同地方,后续修改越来越费劲。
即使代码结构还算合理,我自己也没有建立起对它的熟悉度。很多实现决策和调试过程都是 agent 完成的,我看过解释,但下次遇到问题,还是不知道从哪里入手。
第二点尤其让我担心经验积累。我理解工程判断力、设计上的 taste,需要从具体实现、踩坑和修改中慢慢长出来。但现在很多时候,我的工作变成了:描述需求、看结果、继续提修改。功能确实做出来了,但我不太确定,自己从中积累了多少能迁移到下一个项目的经验。
想请教经验比较丰富的engineer: 连续迭代一个项目时,怎么让自己始终跟得上代码的变化?设计文档和 plan 之外,还有什么有效的习惯?出现哪些信号时,你们会暂停加功能,先重新梳理结构?对工程经验还不够丰富的人,怎么在使用 AI 提高效率的同时,继续积累设计和调试能力?尤其想听一些具体例子,想参考大家真实用得下去的工作流。