AI时代高级开发者的技能
嵌入到Cursor等强大IDE中的大型语言模型,如今能作为高效的编码助手,显著提升专业软件工程团队的产出和能力。
然而,要获得预期的功能与非功能性结果,并保持可接受的代码质量,并非自动实现。作者与团队在工作中识别出编码助手大放异彩的有价值用例,并确定了有助于在足够质量水平下实现预期成果的实践与方法。
核心论点:资深软件工程师处于确保编码助手成功的理想位置,因为他们在软件工程和项目管理最佳实践中积累的经验与专业知识——这些在AI时代看似过时——恰恰是有效使用这些工具的关键。
文章描述了适配的现实编码助手用例,并详细解释了支持成功AI编码会话的实践。
三种关键措施
为在AI辅助编码设置中成功工作,需要三项关键措施:
- 结构化的需求
- 基于工具的防护栏
- 基于文件的关键帧
这些措施本质上都是限制性措施,旨在引导强大的AI模型完成“我们的事”,而非任其发挥。
措施一:结构化的需求
成功AI编码会话的基础是精确且完整的需求集。
- 方法:提供大量相关上下文和背景信息。例如,在提示中说明功能涉及多个代码库、各自的角色、需要实现的具体组件(如API端点、客户端、UI控制器)。
- 隐式引导:通过提供现有类似功能的文件作为“灵感来源”,引导AI遵循现有的命名、空间结构和代码模式。
- 适度留白:无需过度规定细节(如具体显示的数据、UI精确样式),因为AI模型在训练中已见过大量类似案例,结合通用指令和样式指南通常能生成良好的第一版界面。
措施二:基于工具的防护栏
需求定义了目的地,基于工具的防护栏则确保我们直达目的地。
- 利用质量工具:AI能理解和有效使用静态分析器、测试套件等质量工具。在Cursor中,AI可以理解这些工具,并在其代码更改破坏静态类型检查等问题时自动调整。
- 提供验证手段:为AI提供验证其工作的手段(如用于测试API端点的
curl命令)。
- 技术栈的隐式防护栏:强类型语言等技术栈本身也能限制AI偏离方向。
措施三:基于文件的关键帧
AI擅长创造性解决问题,但需要约束其创造力,特别是在代码组织方面。
- 概念来源:借鉴动画工作室的工作流——高级动画师创建关键帧(关键时刻),初级动画师填充中间帧。
- 实践方法:在AI编码开始前,开发者预先在代码库中创建好“空壳”文件(最小化的存根文件),例如一个只包含命名空间和类声明的PHP类,或一个包含路由定义的控制器存根。
- 提供的信息:这些存根为AI提供了关于文件组织、命名空间结构、命名约定和代码模式的关键隐含信息。
实践效果与案例
在主要项目中应用这三项措施,团队已能够完全由Cursor构建功能,无需手动编写代码。
- 案例一(后端到前端UI):AI成功将仅后端实现的功能,结合现有样式指南,在数分钟内生成了专业的前端界面。后续添加搜索功能等扩展也极为高效。
- 案例二(全新技术栈项目):这些方法也使开发者能在不熟悉的领域(如用Python创建ELK-stack监控工具)实现应用。
- 成效:在数小时内从零构建出工作应用程序,证明了方法的有效性。
- 局限:对于全新技术栈,代码质量可能存在“初级工程师”水平的问题,需要后续利用AI根据反馈进行改进。
结论
通过提供结构化需求、实施基于工具的防护栏以及使用基于文件的关键帧,可以在保持代码质量和架构完整性的同时,驾驭AI的力量。
这些久经考验的实践,以及最重要的通过实践积累的人类经验,在AI辅助开发时代比以往任何时候都更有价值,远未过时。
对于主力项目(在技术和架构舒适区内),使用编码助手已成为日常业务,因为所述方法允许我们有针对性地引导AI,并且易于验证结果代码的质量。在全新技术栈的项目中使用相同技术,虽然开辟了新的开发可能性,但也伴随着需要警惕的陷阱。