他们告诉我,软件开发者很快将被自主代理取代。然而,我每天都会遇到糟糕的软件。当AGI到来时,它的第一个任务可以是推出一个像样的日历应用程序吗?
我不是来抱怨糟糕的软件的,至少在这篇文章中不是。我在这里是为在一个代码生产限制被极大解除的时代,高质量软件的必要性进行辩护。
当限制消失时,质量应更受重视
如果你愿意,你可以在Zed中以黄油般流畅的120fps“氛围”式编写代码,并且每天24小时生成代码。但在一个物质充裕的世界里,对质量的要求应该更高。
作为软件工程师,我们衡量自身贡献的标准不应是生成的代码行数,而应是可靠、设计精良、易于修改且使用愉快的系统。
网上有很多关于10倍(甚至100倍!)工程师的讨论。大多数人都在谈论人工智能如何帮助我们更快地开发软件,帮助我们开发更多的软件。作为匠人,我们应该审视人工智能,并问:“这如何能帮助我构建更好的软件?”
系统设计更重要
如果你在一个解决实际问题的代码库中待过一段时间,我确信你能理解这种情绪:“我希望它更好,但我没有时间修复它。”系统以阻碍我们生产力和想象力的方式损坏,但我们必须发布。总是有一种激励我们通过弯曲现有系统而不是修改它来达到目标,即使这让系统“不太对劲,但足够好”。
我们Zed的价值观“发布与工艺”之所以成对存在,是有原因的。我们应该感到紧迫,但不应该把紧迫作为偷工减料的借口。短期收益不值得公司生命周期内次优速度的代价。现在这一点更是如此,因为一个棘手的代码库不仅阻碍了我们自身在其中工作的能力,也阻碍了AI工具在其中发挥作用的能力。
认识到这种动态并不能使解决问题变得更容易。由于我们只有在构建系统时才能了解系统,我们可能直到系统开发相当深入之后才知道“正确的设计”是什么。我们做出的许多决策可能在当下都有道理,但随着时间的推移它们会累积起来,在我们还没意识到的时候,我们发现自己在一个感觉像遗留代码库中工作——尽管我们在每一步都试图避免这种结果。
所有这一切使得评估贡献的关键性比以往任何时候都更高,不应以你修改了多少行代码来衡量,而应以你对最终系统可靠性、可理解性和可变性方面的影响来衡量。
承担责任,提升标准
那么我们如何构建好的软件呢?可能有多种方法,但我会告诉你我的方法。它需要承担用户体验的责任。
作为代码编辑器的用户,我渴望快速的体验。如果复杂的3D游戏能以每秒120帧的速度运行,那么我的编辑器就没有理由不能以同样快的速度渲染2D文本和矩形。那是我最初对Zed的目标,尽管当时我不知道如何实现它。根据我过去创建名为Atom的代码编辑器(以及其衍生产品Electron)的经验,我确实知道一件事,那就是我必须超越网页技术。否则,我永远无法实现比网页浏览器更好的体验。
所以我重新开始了。但重新开始意味着承担更广阔的范围,学习一门具有“施虐狂式”有用编译器的系统编程语言,并学习编写着色器。所有这些都增加了项目的风险,但没有它们,Zed不可能成为今天的样子。幸运的是,得益于大型语言模型(LLMs)的力量,这种学习和从零开始的软件开发变得异常容易。即使有幻觉,我当初在学习Rust借用检查器错误时,几乎愿意付出任何代价来拥有一个语言模型与我聊天。
对用户体验完全负责不再像以前那么冒险了。如果我们有追求卓越体验的抱负,但只具备部分必要的技能,AI可以帮助我们弥补阻碍我们前进的知识鸿沟。它不会完全替代真正的专业知识,我们仍会在前进中犯错,但它将使我们比过去更快地进行实验、学习和迭代。
志存高远!构建真正卓越体验的门槛从未如此之低。
让我们一起解决
AI代理存在的时间并不长。我们已经学到了很多关于如何最好地使用它们,但仍有许多有待学习。更重要的是,工具本身也在不断改进,这使得我们追求理解的目标不断变化。
在这个快速发展的环境中,我们如何确定哪些技能和技术与哪些工具最匹配?我们一如既往地这样做:相互分享知识!
这就是为什么今天我们要介绍Agentic Engineering——将人类工艺与AI工具相结合,以构建更好的软件。
我们每隔一周就会邀请专家与我们一起探讨这些问题。阵容非常令人兴奋。加入我们的探索,让我们一起解决这个问题。
在下方注册,您将收到现场活动的邀请和摘要。
在不断精进我最喜欢的工具的同时,我很高兴能找到利用AI突破界限的方法,帮助世界编写的不仅是更多的软件,而是更好的软件。