AI时代自动化的重要性及其三个理由
我一直在思考一件事:过去,我认识的最优秀的工程师会花大量时间以各种方式自动化他们的工作。更好的vim/emacs自动化,编写lint规则以捕获重复代码问题,构建一套端到端测试,这样他们就不需要手动对应用进行冒烟测试。这些是工程师能做的最高杠杆活动,因为它倍增了他们的产出,从而能够构建更多东西。
我认为现在许多这样的自动化变得更加重要。原因有几个。
首先,基础设施和开发者体验自动化能加速你的工作。如果你正在运行一支agent大军,每个agent也会被加速。更多的自动化意味着每单位时间更多的产出。
其次,将事情迁移到代码中能提高效率。你的agent可以在每次看到某个问题时修复它,但这会消耗token,并且可能遗漏情况。如果Claude转而编写一个lint规则、CI步骤或例程,那么这类问题就可以永远被完全自动化。这就是人们谈论循环时的真正含义——自动化整个类型的琐碎工作,而不是一次性解决它们。这并非新想法。工程师们已经这样做很久了!
第三,也是最重要的,自动化使他人更容易贡献代码。我越来越多地看到,工程师在第一天就能贡献代码,因为Claude可以为他们导航代码库,而非工程师也能像工程师一样有效地贡献代码。阻碍这两者的,是存在于人们头脑中而非自动化中的领域知识——你以前在上手时必须学习的东西。得益于agent,可编码为基础设施的领域知识不再局限于lint规则、类型和测试所能表达的内容;现在它可以捕获几乎所有的领域知识,编码为代码注释、技能、CLAUDE.md规则和记忆。如果我为一个我不熟悉的iOS代码库提交一个PR,而代码审查者因为我没有使用正确的框架而拒绝它,或者如果设计师构建了一个新功能,但因为不符合正确的架构模式而被拒绝,这些都是自动化的失败。
每个团队都应该编写CLAUDE.md、REVIEW.md、技能和文档,使agent能够在没有提示者任何额外上下文的情况下高效地在代码库中工作。这听起来很疯狂,同时,这是工程师一直以来的工作的自然延伸:自动化,并将领域知识编码为基础设施。随着模型变得更聪明,工具链变得更成熟,这项任务会变得更容易。与此同时,每个团队都有责任寻找方法,将他们的领域知识转化为基础设施,以便Claude能更好地编写代码,代码审查能自动捕获问题,并且下一个在代码库上工作的人能更容易地贡献。
我认为现在许多这样的自动化变得更加重要。原因有几个。
首先,基础设施和开发者体验自动化能加速你的工作。如果你正在运行一支agent大军,每个agent也会被加速。更多的自动化意味着每单位时间更多的产出。
其次,将事情迁移到代码中能提高效率。你的agent可以在每次看到某个问题时修复它,但这会消耗token,并且可能遗漏情况。如果Claude转而编写一个lint规则、CI步骤或例程,那么这类问题就可以永远被完全自动化。这就是人们谈论循环时的真正含义——自动化整个类型的琐碎工作,而不是一次性解决它们。这并非新想法。工程师们已经这样做很久了!
第三,也是最重要的,自动化使他人更容易贡献代码。我越来越多地看到,工程师在第一天就能贡献代码,因为Claude可以为他们导航代码库,而非工程师也能像工程师一样有效地贡献代码。阻碍这两者的,是存在于人们头脑中而非自动化中的领域知识——你以前在上手时必须学习的东西。得益于agent,可编码为基础设施的领域知识不再局限于lint规则、类型和测试所能表达的内容;现在它可以捕获几乎所有的领域知识,编码为代码注释、技能、CLAUDE.md规则和记忆。如果我为一个我不熟悉的iOS代码库提交一个PR,而代码审查者因为我没有使用正确的框架而拒绝它,或者如果设计师构建了一个新功能,但因为不符合正确的架构模式而被拒绝,这些都是自动化的失败。
每个团队都应该编写CLAUDE.md、REVIEW.md、技能和文档,使agent能够在没有提示者任何额外上下文的情况下高效地在代码库中工作。这听起来很疯狂,同时,这是工程师一直以来的工作的自然延伸:自动化,并将领域知识编码为基础设施。随着模型变得更聪明,工具链变得更成熟,这项任务会变得更容易。与此同时,每个团队都有责任寻找方法,将他们的领域知识转化为基础设施,以便Claude能更好地编写代码,代码审查能自动捕获问题,并且下一个在代码库上工作的人能更容易地贡献。