文章摘要
作者在老板的建议下尝试使用AI工具进行编程,虽然理解其提升效率的初衷,但个人对AI持负面态度,因其导致亲友失业、资源浪费等问题。作者还提到,开发工作带来的高压使其与工作关系变得紧张,进一步影响了对AI工具的使用体验。
文章总结
标题:我尝试用AI编程,结果变得懒惰和愚蠢
在2025年4月左右,我的老板坚持让我们尝试使用AI工具进行编程。这并不是强制性的要求,而是出于对可能错失机会的担忧。我理解他的想法,毕竟在当前的软件行业经济环境下,提高生产力和利润率是必要的。尽管我对这一趋势并不感到高兴,但我能理解。
我个人对AI持保留态度,尤其是大型语言模型(LLMs)。我的伴侣因为ChatGPT而失去了写作工作,许多艺术家朋友也因为LLMs而陷入困境。最近,一位实习生也因LLMs失去了翻译工作。此外,LLMs基于未经授权的内容,消耗大量电力和水资源,成为资本家在阶级战争中的新武器。
另一个让我妥协的原因是我与开发工作之间建立的一种不健康关系。我在2022年的一篇博客中详细描述了选择这一职业带来的高风险,这种心态一直伴随着我:
七年前我开始从事网页开发时,我处于生存模式,经历了多年的低薪和失业。我必须成功,为此我必须不断学习、阅读和倾听关于网页开发的内容,监控领域动态,尽可能与同行社交。这样我才不会变得可有可无,失去工作。我会建立人脉,我会安全。
十年后,经历了三次职业倦怠,我意识到这种心态虽然一度有效,但并不健康或可取。我曾试图放下对变得可有可无的恐惧,但LLMs再次触发了这种恐惧。如果AI供应商是对的怎么办?如果我未来的公司要求使用AI怎么办?我会失去工作吗?我快40岁了,我该怎么办?
于是我尝试了AI。首先在我的日常工作中,因为我想要答案。但除了修复TypeScript类型错误、生成不可访问的模板代码或检查代码错误外,我并没有找到那些AI影响者所说的“改变生活”的用途。我的同事们也得出了同样的结论:它似乎并没有帮助我们更好地为客户实现目标。
到了7月,我开始为我的新CMS进行图像处理部分。由于个人事件导致的大脑疲劳,我决定认真尝试使用LLM来完成任务。在VS Code中设置好一切后,LLM生成了大约200行代码,主要是使用依赖项来转换、调整大小和处理图像的函数。虽然不完美,但经过一些修改后,任务在30分钟内完成,远比我手动完成要快。
我对此印象深刻,感觉自己拥有了超能力!但当我决定审计LLM生成的代码时,发现了几个安全隐患:目录遍历攻击、文件大小限制、系统文件覆盖等。我意识到初始代码有多么不安全。由于我没有编写这些代码,我对代码的整体结构和功能缺乏清晰的了解,无法快速进行修改。最终,我不得不再次依赖LLM来修复这些问题。
这时我停止了实验。我震惊于自己如此轻易地陷入了这种懒惰的编程方式。LLM给了我糟糕的代码,让我对自己的代码库一无所知,也懒得自己修复问题。尽管整个过程感觉顺畅、无摩擦、赋予力量,但这只是一种幻觉。
我意识到,使用LLM并不会让我变得更聪明或更高效,反而可能让我变得懒惰和愚蠢,最终导致我失去工作。因此,我不应该把时间花在AI上,而应该更多地学习我感兴趣的新事物。这可能是保持这份工作并确保安全的唯一途径。
最初发布时间:2025年8月8日20:03
修改和/或重建时间:2025年8月8日20:17
评论总结
评论内容主要围绕使用LLM(大语言模型)进行编程的体验和观点,分为支持和质疑两派:
支持使用LLM的观点:
1. 提高效率:多位评论者认为LLM可以显著提高编程效率,尤其是在处理不熟悉的领域或重复性任务时。例如,评论15提到:“它可能比你更快地写出更好的初稿,然后你可以在此基础上迭代。”
2. 学习工具:LLM被视为了解新技术和解决复杂问题的辅助工具。评论5建议:“与LLM进行多次对话,学习后再开始编码。”
3. 解放思维:LLM帮助开发者专注于高层次设计,减少低层次细节的负担。评论16表示:“我现在花更少时间思考低层次的东西,更多时间思考高层次细节。”
质疑使用LLM的观点:
1. 代码质量与安全性:部分评论者指出LLM生成的代码可能存在安全漏洞或质量问题。评论1提到:“我无法快速修改代码,最终只能让LLM修复,但我无法判断修复是否有效。”
2. 技能退化:过度依赖LLM可能导致开发者技能退化。评论24警告:“LLM可能会让你的技能萎缩,如果你把思考外包出去。”
3. 误用与懒惰:一些评论者认为开发者可能滥用LLM,追求速度而忽视代码质量。评论10批评:“团队成员提交了明显错误的代码,却依赖团队发现问题。”
平衡观点:
1. 工具的正确使用:多位评论者强调LLM应作为辅助工具,而非完全依赖。评论9指出:“如果你开始懒惰,AI只会让你更懒;如果你以纪律和清晰开始,它可以放大你的能力。”
2. 迭代与审查:LLM生成的代码需要开发者进行审查和迭代。评论15建议:“像对待自己写的代码一样,审查和迭代LLM生成的代码。”
总结:LLM在编程中具有显著的优势,但也存在潜在风险。开发者应将其作为辅助工具,保持对代码质量的审查,避免过度依赖,以确保技能提升和代码安全。