17611538698
webmaster@21cto.com

人工智能编程真的很无聊

人工智能 0 4 19分钟前
图片

21CTO导读:我们过去花时间用代码解决问题,现在我们却成了没人真正理解的代码的维护者。

原本不想在标题里用“人工智能”这个词,但标题也可以写成“软件工程的未来很无聊”,尽管这两个标题的意思并不是完全相同。

软件的开发方式在发生变化,不管我们喜欢与否,也不管这种变化是好是坏,人工智能编程在某些公司已经占据主导地位,但在我看来,它带来的问题比解决的问题还要多。而我们目前面对的,从所有这些生成的代码来看,这些问题解决起来并不那么有趣。

这就是我为什么说它“无聊”的原因。

我们来回想一下,曾经做程序员是多么令人兴奋和光荣。

我不去追溯太久远的从前,因为我大约在2005年才开始编程,但即便如此,现在也感觉像是上个世纪的事了。我们那时写的代码并不完美,但我们非常重视它,每一行代码都经过深思熟虑,每一笔内存分配都经过仔细计算。

我们会花上好几天的时间来确保代码的稳定性。我并不是说那时没有截止日期,截止日期依然存在,这一点从未改变。而且,只有极少数人真正懂得如何编写优秀且高效的程序。这就是为什么程序员这份工作令人感到热情与光荣。

但如今呢?现在每个人都可以通过访问LLM(可能是指某个网站或软件)并支付少量费用购买代币来生成代码。

从某种意义上说,程序员这个职业发生了翻天覆地的变化,它已经变成了一个尚未完全成型的全新职业。试想一下,你花了数年时间成为一名烹饪大师,精益求精,却有一天发现自己的工作变成了品尝机器烹饪的菜肴。幸运的是,烹饪界并没有像编程界那样发生巨变。

好了,感性的开场白就到此为止,让我们来看看这些问题,顺序不分先后。由于没有太多答案,我想留给大家讨论或思考。


图片


问题一:我们现在该如何学习?


我喜欢读书和做笔记。几年前,如果你想学习新东西,这可是项重要的技能,因为在某些情况下,这是解决特定问题的唯一途径。遇到数据库扩展难题?那就去读读Martin Kleppmann 的《设计数据密集型应用》。我知道很多人不喜欢 Stack Overflow,因为它的用户比较固执,而且提问的用户体验也不尽如人意,但我必须说,在大多数情况下,在那里提问、查看重复答案、打开几个链接,就能找到答案。而且这个答案你会记住很多年,因为我们的大脑就是这样运作的。


写这篇文章的时候,我打开了我的 StackOverflow 账号,想看看它还在不在,这让我意识到我曾经为了回答和提出那么多问题付出了多少心血。这一切又是为了什么呢?难道是为了让 Sam 和 Dario 不加任何署名就直接抄袭吗?

以前:

问题 → 研究/阅读/思考 → 解决方案

现在:

问题 → 解决方案

有了如此高效的解决方案捷径,我们该如何调动大脑的积极性呢?似乎在大多数情况下,这一步都被完全忽略了。

图片


问题二:代码库侵蚀


当你开始将AI生成的代码引入到遗留的、非AI代码库中,或者即使是全新的代码库,在初期阶段,通过仔细审查Pull Request,你仍然可以控制大部分代码,工程师也能理解代码的工作原理。


但无论你做什么,一旦你开始接受AI生成的代码,你的代码库最终都会被侵蚀;这几乎是不可避免的,而且生成的代码越多,情况就越糟糕。


由于代码库规模庞大、接口松散、文档分散且缺乏连贯性,即使是AI现在也难以理解代码库。代码审查流程几乎总是被省略,或者AI审查AI自身,并将所有内容都标记为“LGTM”(良好可用)。


因为除此之外,还有什么方法可以审查和测试大量涌入的变更呢?我喜欢这句话,即使是在AI出现之前的大型Pull Request中也是如此:


给审阅者一个 10 行的 Pull Request,他会发现 10 个问题;给他一个 500 行的 Pull Request,他会说“LGTM”(看起来不错)。

我的主要原则一直是尽量减少代码量,但人工智能却做不到这一点,它只会不断添加东西,导致代码库臃肿、构建和测试速度缓慢。

这不仅仅关乎代码库。由于请求新功能如此便捷,代码库中现在充斥着大量未使用的功能,而且这些功能之间还相互冲突。令人遗憾的是,这种情况并非立竿见影。人工智能最初会带来显著的性能提升,但随后却暴露出所有这些问题。它就像代码库的毒品。

你能在这个过程中发现哪个是“知名”程序员吗?反正我没发现。

图片


问题三:噪声与管理


你难道没注意到我们工作中的一切都变得越来越臃肿吗?不仅仅是代码,还有人们发送的备忘录和我们收到的信息。


所有东西,或者说大部分东西,都是人工智能生成的,而收件人往往需要费力地去解读它们,或者从中筛选出真正有用的信息。我可以容忍人工智能生成的代码,但如果连邮件或文档也写得一塌糊涂,那就太不尊重人了。


现在,管理者们对交付更多、更快的成果抱有更高的期望,因为我们有了人工智能,对吧?好像生成代码曾经是个障碍似的。因此,每个人都更加努力,这导致了问题2,并由此引发问题3。


图片


所以,这些就是我们需要着手解决的问题,它们将重新定义程序员的角色。

你可能会问:“那为什么说这很枯燥呢?”我的回答是:过去我们花时间用代码解决问题,而现在我们却成了代码的维护者,而这些代码根本没人真正理解。

作者:场长

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信