正在加载文章内容,请稍候。
正在加载文章内容,请稍候。
代理式编码改变了写代码的方式,但理解软件工程基础仍然重要,因为你需要引导代理做出正确的权衡。 关键技能包括构建全栈应用、管理数据、设计架构、保证安全可靠并在生产中扩展与运维。 即便代码由代理生成,懂软件原理的人能避免性能、可用性、成本和维护等方面的错误。

精准输入
✍️ 写下你的想法,自由记录即可。如果没有灵感,试着回答上方的费曼输出问题。
登录后可保存笔记、高亮、划线和批注。
代理式编码把代码生成交给了工具,却没有替开发者承担架构、数据、安全与运维上的取舍。这篇文章从五组基础能力出发,说明为什么越能让代理写代码,越需要有人理解整个软件系统如何工作。

代理编码如何改变了软件工程的基本原理?即使您使用编码代理编写所有代码,了解软件基本原理对于引导您的代理做出您想要的权衡非常重要,甚至可以知道需要做出哪些权衡。此外,当您构建人工智能应用程序时,人工智能核心通常通过更广泛的软件应用程序来表达,您需要帮助构建或塑造这些应用程序。
一个不理解软件基本原理的编码新手可以创建简单的应用程序,但这通常会导致编码代理在延迟、可用性、一致性、可靠性、可维护性、简单性和/或成本方面做出糟糕的权衡。在这种情况下,开发人员甚至不知道存在这种权衡,因此没有引导代理为其应用程序环境做出正确的决策。
本文介绍了我们对人工智能工程技能的研究表明,软件工程中最重要的事情是什么。它需要具备以下技能:
代理编码使许多以前扮演更专业角色的开发人员(如前端开发人员或移动开发人员)能够发挥更广泛的全栈角色。编码代理可以帮助开发过程中您可能不太熟悉的部分。但是,了解全栈的实际工作方式非常重要。熟练的开发人员了解前端和后端系统的关键组件和概念,包括 UI 组件、缓存、页面渲染、API 选择和设计、身份验证、状态和会话管理、异步处理、数据持久性、测试、安全性和可访问性。
数据值得特别关注,因为它是软件构建的基础,相对难以更改(即使代理帮助迁移)。当您知道如何管理数据时,您可以仔细考虑访问模式,并使用它们来决定要存储什么以及存储多长时间。您可以识别正确的数据模型,并选择适当的存储类型(如关系表、文档、键值或图形)和基础设施,这反过来又会影响速度、可扩展性、可用性、可靠性和成本。您了解事务、并发以及如何确保数据干净、一致和新鲜。必要时,您可以确保适当的隐私、治理和合规性。您知道如何管理数据生命周期。
随着应用程序的发展,您还知道如何随之发展数据架构。决定如何管理数据需要大量由人提供的上下文。您的人工智能系统将从数据源获得自己的输入上下文,因此,如果数据架构选择不当,人工智能并不知道自己不知道什么。这就是为什么它需要具备相关背景和人工智能工程技能的人——也就是您——进行干预、纠正错误。如何为代理构建数据基础设施(而不仅仅是传统软件或人员)也是一个快速发展的领域,您应该继续随着该领域的发展调整最佳实践。
当您了解完整软件和数据栈的主要组件时,就可以更好地决定如何将这些部分组合在一起。良好的系统设计需要了解软件的用途(有多少用户?延迟有多重要?成本有多重要?等等),从而对应用程序平台、前端和后端之间的边界、系统分解、应用程序状态放置和架构粒度(单体与微服务)作出选择。您还将选择技术栈(编程语言、运行时、组件/前端/后端框架、数据技术)——有时需要先通过实验评估选项,再确定方案。
此外,正确的架构是一个移动目标,具体取决于项目所处的阶段。用于快速构建原型的简单架构,可能不适合第一个生产系统;随着应用程序扩展,架构也可能再次改变。作出这些决策需要对软件组件和应用程序上下文有深入的技术理解,才能持续改进架构并作出更好的权衡。
要构建可靠的系统,您应该知道如何制定测试策略来验证系统的正确性:如何组合单元测试和集成测试、使用哪些框架,以及需要达到怎样的覆盖水平。您还需要知道如何围绕潜在故障进行设计——如何处理故障(如 API 达到速率限制)、构建优雅降级,并尽量缩小故障的爆炸半径。此外,“安全左移”不是先编写软件,再考虑如何保护它,而是在生命周期早期就开展安全工作。正如越来越多开发者正在走向全栈,许多开发者现在也承担了部分安全工程师的职责。如今,您可以使用人工智能工具扫描代码漏洞、检查供应链依赖注入风险,并检查云配置中的攻击面,但要正确完成这些工作仍然需要安全知识。
要为真实用户提供服务,您必须知道如何将软件部署到生产环境。您需要理解软件开发生命周期(SDLC):除了构建和测试之外,还包括配置部署环境、决定发布策略、应用部署自动化(CI/CD),以及了解基础设施即服务(IaaS)。
在生产中运行软件,需要部署可观测性工具、设置警报和管理事件。要扩展应用程序,您还应该了解真实负载,并知道如何扩展服务器、进行负载均衡、调整数据基础设施(通过分片、索引、复制),或进行架构更改,使系统适应规模增长。最后,版本控制、代码审查、依赖关系维护和技术债务管理等编码最佳实践,有助于您长期发展系统。
编码代理改变了我们构建软件的方式,包括不包含任何 AI 组件的软件。编码知识的某些部分(如记忆编码语法)正在过时。但是,深刻理解软件工作原理的开发人员,仍然远远胜过那些不理解代码的开发人员。
除了人工智能之外,了解软件的基本原理还能帮助您判断软件可以做什么、不能做什么。这些知识会成为您使用编码代理和塑造所构建产品的重要上下文。我将在以后的文章中继续讨论这些问题。
文章先指出代理编码扩大了开发者的能力边界,同时也放大了无知带来的隐性风险;随后依次展开全栈开发、数据管理、系统架构、安全可靠性和生产运维五项基本功,最后把结论落在人的判断上:语法记忆可以贬值,但理解系统、提供上下文并权衡成本的能力更加重要。
费曼输出