软件匠艺在“氛围至上”时代的论证
The Case for Software Craftsmanship in the Era of Vibes

原始链接: https://zed.dev/blog/software-craftsmanship-in-the-era-of-vibes

作者认为,软件开发中AI的兴起应该用于提高软件质量,而不仅仅是加快其生产速度。虽然AI工具提供了前所未有的编码速度和可访问性,但重点应该从数量转向创建可靠、设计良好且用户友好的系统。 基于创建Zed代码编辑器(以及之前的Atom/Electron)的经验,作者强调了“交付与工艺”——在紧迫感和避免导致长期技术债务并阻碍AI有效性的偷工减料之间取得平衡。完全掌控用户体验并学习新技能,甚至采用Rust等新语言,对于构建卓越的软件至关重要。大型语言模型通过弥合知识差距,使这一过程风险更低。 作者介绍了“自主工程”,它结合了人工技艺和AI工具,并邀请其他人加入探索过程。他们邀请人们加入他们的团队,帮助他们构建更好的软件。最终目标是利用AI不仅创建更多软件,而且创建更好的软件,并强调根据可靠性、可理解性和可更改性来评估贡献的重要性。

A Hacker News discussion revolves around the value of software craftsmanship in an era of AI-generated code. Some argue that increased code generation leads to more low-quality software, mirroring the mobile app store's abundance of trivial apps. They doubt companies will prioritize quality over new features and market share, leading to increased complexity and tech debt. Others argue that the article advocates for quality due to the anticipated noise and complexity, emphasizing the need to differentiate. The discussion also touches on the fragmentation of the software market and the challenge of finding quality content. Some suggest AI can enhance developer productivity and improve software quality, particularly for smaller projects. However, skepticism remains about AI's ability to produce high-quality code, given its training on potentially flawed code. Concerns are raised about security vulnerabilities in AI-generated code and the potential for AI to replace software engineers.
相关文章

原文

They tell me software developers will soon be replaced by autonomous agents. Yet every single day, I encounter bad software. When AGI comes, can its first assignment be to ship a decent calendar app?

I'm not here to complain about bad software, at least not in this post. I'm here to make the case for quality software in an era where constraints on code production have been dramatically lifted.

You can vibe code at a buttery-smooth 120fps in Zed and generate code 24 hours a day if you're so inclined. But in a world of abundance, the bar should be higher for quality.

As software engineers, we should measure our contribution not in lines of code generated, but in reliable, well-designed systems that are easy to change and a pleasure to use.

There's a lot of talk online about the 10x (or even the 100x!) engineer. Most people are talking about how AI can help us make software faster and help us make more software. As craftspeople, we should look at AI and ask, "How can this help me build better software?"

If you've spent any time in a codebase that solves real problems, I'm sure you can relate to this sentiment: "I want this to be better, but I don't have time to fix it." The system is broken in ways that hobble our productivity and imagination, but we need to ship. There's always an incentive to achieve our goals by bending the existing system instead of revising it, even if that leaves the system "not quite right, but good enough."

Our values at Zed of "Shipping & Craftsmanship" exist as a pair for a reason. We should feel urgency, but we shouldn't be using urgency as an excuse to cut corners. Short-term gains aren't worth the cost of suboptimal velocity for the lifetime of the company. This is even more true now that a gnarly code base hinders not only our own ability to work in it, but also the ability of AI tools to be effective in it.

Recognizing this dynamic doesn't make it any easier to resolve. Since we're only learning about a system as we build it, we may not even know what the "right design" is until rather far into the system's development. Each of our many decisions may make sense in the moment, but over time they accumulate, and before we know it we find ourselves working in what feels like a legacy codebase—despite trying at every turn to avoid that outcome.

All of this makes it more critical than ever to evaluate contributions not by how many lines of code you touched, but by your impact on how reliable, understandable, and changeable the resulting system will be.

So how do we build good software? There are probably multiple ways, but I'll tell you mine. It requires taking ownership of the user's experience.

As a user of a code editor, I want a fast experience. If complex 3D games can run at 120 frames per second, there's no reason my editor couldn't render 2D text and rectangles that fast. That was my initial goal for Zed, although at the time I didn't know how to achieve it. One thing I did know, based on my past experience creating a code editor named Atom (and its spinoff, Electron), is that I'd have to look beyond web technology. Otherwise, I'd never be able to achieve an experience better than a web browser.

So I started over. But starting over meant taking on a much wider scope, learning a systems programming language with a sadistically helpful compiler, and learning to write shaders. All of that added risk to the project, but without it, Zed couldn't have become what it is today. Luckily, that kind of learning and de novo software development just got vastly easier, thanks to the power of LLMs. Even with hallucinations, I would have given almost anything to have a language model chat me through Rust borrow checker errors when I was first learning.

Taking full ownership over the user's experience is not as risky as it used to be. If we have the ambition to pursue an amazing experience, but only some of the skills necessary to deliver it, AI can help us overcome the knowledge gaps standing in our way. It won't be a drop-in substitute for actual expertise, and we'll still make mistakes as we go, but it will let us experiment faster, learn faster, and iterate faster than we ever could in the old days.

Aim high! The barrier to entry to building truly great experiences has never been lower.

AI agents have not existed for very long. We've already learned a lot about how best to use them, but there remains much to learn. What's more, the tools themselves continue to improve, which creates ever-moving goalposts in our pursuit of understanding.

In this rapidly evolving environment, how can we determine which skills and techniques work best with which tools? The same way we always have: sharing knowledge with one another!

That's why today, we're introducing Agentic Engineering—combining human craftsmanship with AI tools to build better software.

Every other week we'll be bringing on experts to hash things out with us. The line up is super exciting. Join us in our discovery and let's figure this out together.

Sign up below for invites to the live events and recaps in your inbox.

As we continue to sharpen my favorite tool, I'm excited to find ways to push the envelope with AI to help the world write not just more software, but better software.


联系我们 contact @ memedata.com