随着代码编写的成本急剧下降,传统的软件开发习惯正受到挑战。尽管生成新代码几乎是免费的,但编写出功能正确、易于维护且设计精良的高质量代码,仍然需要大量的时间和精力。开发者需要培养新的工作习惯,学会利用并行工作的编码代理工具,同时保持对代码质量的控制,从而逐步适应这种“代理工程”的新模式。
以往的习惯:代码是昂贵的
过去,编写代码是一项成本高昂的工作。一个开发者花费一整天或更长时间,也只能产出几百行干净、经过测试的代码。我们许多工程习惯,无论是在宏观层面还是微观层面,都建立在这个核心制约之上。
宏观层面: 我们花费大量时间进行设计、估算和项目规划,以确保昂贵的编码时间被最有效地利用。一个产品功能必须能够创造数倍于其开发成本的价值,才被认为是值得的。
微观层面: 我们每天都会根据可用时间和预期权衡,做出数百个决定。例如,是否要多花一个小时重构某个函数让它更优雅?是否值得为某个边缘情况编写测试?
新的现实:代码变得廉价
编码代理(Coding agents)极大地降低了将代码输入计算机的成本,这颠覆了我们关于哪些权衡是合理的许多既有直觉。由于一个工程师现在可以同时在多个地方实施、重构、测试和编写文档,评估工作变得更加困难。
编码代理工具极大地降低了将代码输入计算机的成本,这颠覆了我们许多关于哪些权衡是合理的既有个人和组织直觉。
好代码依然有成本
交付新代码的成本几乎降至零,但交付好代码的成本仍然相当高昂。所谓“好代码”意味着:
- 代码能正常工作: 它能实现预期功能,没有错误。
- 我们确信代码能工作: 我们已采取措施向自己和他人确认代码符合目标。
- 解决了正确的问题。
- 优雅地处理错误情况: 不仅仅考虑理想路径,错误信息应足以帮助未来的维护者理解问题所在。
- 简洁且最小化: 只做必要的事,并且易于人类和机器在当下和未来理解与维护。
- 有测试保护: 测试证明了它现在能工作,并能防止未来在不经意间被破坏。
- 有适当的文档: 文档反映了系统的当前状态,并在代码变更时及时更新。
- 设计为未来的变更提供便利: 重要的是要避免过度设计,即为那些可能永远不会发生的变化增加代码复杂性。
- 满足其他相关的非功能性质量指标: 如可访问性、可测试性、可靠性、安全性、可维护性等。
编码代理工具可以在大部分方面提供帮助,但开发者仍然需要承担相当大的责任,以确保产出的代码是项目所需的好代码。
我们需要建立新的习惯
我们面临的挑战是,需要培养新的个人和组织习惯,以适应代理工程带来的便利和机遇。这些最佳实践仍在探索之中。
目前,我们能做的最好的事情可能就是反思自己的直觉:任何时候当你的本能告诉你“不要做那个,不值得花时间”时,无论如何都发一个提示给代理。最坏的情况无非是十分钟后检查一下,发现它不值得那些计算资源(tokens)而已。