掘金 人工智能 06月24日 14:34
为什么AI让顶级工程师更强,却让菜鸡程序员更菜?真相扎心了
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了AI辅助编程对软件工程团队的影响。作者认为,AI是优秀工程师的倍增器,而非替代者。文章强调了扎实的基础、良好的工程实践以及如何利用AI工具提高效率。核心观点包括:AI辅助编程能加速开发,但需要正确的运用;优秀工程师能从AI中获取更多价值;注重基本功的修炼至关重要。文章还提供了具体的战术和技巧,例如使用代理式编码工具、编写规范、调试和监控应用程序等,旨在帮助团队在AI时代更好地构建高质量软件。

💡 AI是优秀工程师的倍增器,而非替代者,基础扎实、工程实践良好的团队将获得更大优势。

🚀 良好的技术表达、敏锐的系统判断力以及扎实的基础是工程师有效利用AI工具的关键。

🛠️ 团队应注重代码规范、自动化测试、持续集成等实践,以构建AI能高效运作的软件环境。

💡 AI可以帮助工程师提高效率,但要避免过度依赖,确保产出高质量的代码,并不断学习和探索。

📚 积极利用AI学习、创建文档、调试和优化,以提升自身技能和项目质量。

文章首发于公众号:非著名程序员。

Nilenso 软件公司的工程师 Atharva Raykar 写了一篇文章《AI辅助编程:适合不能只靠感觉的团队》。

这篇文章的观点很好,我非常认同。

作者认为:AI 不会替代优秀的工程师,而是会让优秀的工程师变得更强大。那些基础扎实、有良好工程实践的团队,在 AI 时代会获得更大的竞争优势。而那些基础薄弱、流程混乱的团队,AI 可能会放大他们的问题。

这提醒我们:在拥抱 AI 的同时,更要注重基本功的修炼。

全文翻译如下:

《AI辅助编程:适合不能只靠感觉的团队》

那些想要打造周全、精良产品的工程团队,应该引入AI。但这需要会用这些工具。我们这十多年来专注于构建高质量软件的经验,让我们摸索出了如何用这种新的开发方式来打造更好的产品。

用AI开发很快。这种速度提升很重要,因为运用得当的话,团队能更快地与用户形成反馈循环,做出更好的产品。

但AI工具也很难用。用错了,可能效果平平,更糟糕的是,项目被低质量代码和技术债务拖累,反而让开发速度变慢。

这份动态手册基于我们在生产环境软件的复杂战壕中使用AI工具的经验——在那里,没人能承担得起只凭感觉做事的后果。希望其他团队能从我们的发现中学习和受益。

AI是个倍增器

想让AI好用,先让自己变强。AI是个倍增器。如果你本身系数很小,就看不到多大收益。如果你是负数,那收益也是负的。

我发现,最优秀、最有经验的工程师能从AI工具中榨取出更多价值。原因有几个:

所以,要体现出工匠的关怀。归根结底,你应该产出让自己骄傲的成果,哪怕AI帮了忙。这在我看到的系统输出中得到了很好的体现。

举个例子。这个提示不算不合理,但不够周到:

写一个Python限流器,限制用户每分钟10个请求。

我觉得这个提示能给出还行的结果,但也会遗漏一些边界情况、好的实践和质量标准。而nilenso的人可能会这样向AI提出同样的任务:

用Python实现一个令牌桶限流器,要求如下:- 每用户每分钟10个请求(通过`user_id`字符串标识用户)- 支持并发访问的线程安全- 自动清理过期条目- 返回元组(allowed: bool, retry_after_seconds: int)考虑:- 令牌应该逐渐补充还是一次性全部补充?- 系统时钟变化时会发生什么?- 如何防止不活跃用户造成的内存泄漏?优先选择简单、可读的实现,而不是过度优化。只使用标准库(不用Redis/外部依赖)。

你猜哪个提示能更好地实现程序设计者的意图?

有个对我们很有效的技巧是元提示。我用一个简单的任务提示模型,让它帮忙找出权衡点和边界情况。然后我把这些变成技术规范,交给另一个LLM代理去执行。甚至我上面分享的"更好的提示"也是通过让AI想出好提示得来的。根据我的经验,模型已经变得很擅长给自己写提示了。

这些工具的具体使用方法还在变化,但有一个稳定的原则:真正努力让自己成为好工程师。你的习惯会很快传递给你使用的AI系统。这之所以有效,是因为对人有帮助的东西对AI也有帮助。

对人有帮助的东西对AI也有帮助

我想澄清一下什么是软件工程,这在AI颠覆的背景下值得重新审视。

软件工程不是写代码。至少,这不是其决定性特征,就像写作不是用墨水在纸上做腕部练习一样。

对我来说,软件工程是维护大量定义明确的心智模型来满足商业或经济需求的艺术和科学。很多工作都围绕着制作和管理这些大型、复杂的社会技术系统,而代码只是这些系统的一种表现形式。

在AI足够强大到能完全吞噬整个社会技术系统并把所有培育它的人类都排除出去之前,它必须参与并受益于这个系统。简单来说:AI在人类也能蓬勃发展的环境中表现得要好得多。这意味着你的团队的软件基础应该扎实。

AI能蓬勃发展的系统,是具有高质量团队和代码库标志的系统。这些标志包括:

今天的AI可以并将使用所有这些东西来让事情"正常工作"。当我给编码代理一个任务时,它会在代理循环中通过运行测试用例和静态分析工具不断自我纠正。这大大减少了完成工作所需的手把手指导和干预。

丰富的环境和上下文帮助AI更好地工作。

这里有个轶事:我之前在一个有两个服务的项目上工作,其中一个有我上面描述的所有东西——好的测试、文档完善的更改、代码中一致的模式、大量的检查和防护栏。另一个服务更乱,没有上述任何东西。与前者相比,我们的AI编码助手在后者的代码库上难以完成同等难度的任务!这可能是因为混乱的代码库对AI来说和对人类一样令人困惑。对于正确做事的方式存在混合信号。

编辑器中的工具和技巧

现在我已经概述了总体策略,以下是一些对我有帮助的具体战术。

使用最好的前沿AI模型,不要省钱。

擅长提供上下文。

实现新功能或重构

调试

编辑器外的工具和技巧

使用AI来提升你自己的技能和知识

创建大量文档

这样做有充分理由——文档现在生成成本很低,而且反过来会让你项目上的LLM(和人类)更加有效。

微摩擦润滑剂

LLM大大降低了为团队日常遇到的所有小摩擦点创建润滑剂的成本。

代码审查

调试和监控运行中的应用程序

性能优化

AI如何改变工艺的影响

这是我们编写软件方式的巨大转变,我认为这需要对之前被认为是常识的一些想法进行改变。

首先,花太多时间寻找和构建复杂抽象的价值降低了。DRY对于确保代码中的模式不会不同步很有用,但实现和维护抽象以处理变化的需求是有成本的。LLM让一些重复变得可以接受,让你能等待更长时间并避免过早抽象。

重做工作现在极其便宜。小范围的代码不如大范围的结构模式和代码组织重要。你也可以构建大量原型来测试想法。为此,感性编程很棒,只要原型被丢弃并稍后重新正确编写。

与LLM协作还让你能利用生成器-验证器差距。通常验证和修复东西比从头生产它们更容易。这降低了尝试新事物的激活能量。

测试是不可妥协的,AI消除了因为写测试太慢而不写测试的所有借口。但总要审查断言!

未来我们学到更多关于这些工具后要添加到这个手册的内容

博客原文链接:blog.nilenso.com/blog/2025/0…

最后,欢迎大家关注我的公众号:**非著名程序员,**每天持续为大家分享 AI、技术、副业和互联网相关的干货,一起突破圈层,实现个体崛起。
原文地址:mp.weixin.qq.com/s/CYicaf5QV…

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

AI辅助编程 软件工程 工程师 AI工具 代码质量
相关文章