过度依赖AI编程后遗症该如何解决

如果你也有过这种经历:过度依赖AI编程后,发现自己离了AI就不会写代码,记不住AI生成的细节,能说清项目的创新点和优点,却讲不出具体实现步骤——感觉技能树空心化,像“用了强化剂上瘾还被掏空身体”。你会怎么破局?

尽快找到能托底API用量的“冤大头”,公司报销或客户报销亦可,因为接下来会有更好更贵的AI模型出现,一步跟不上,饭碗都怕保不住

2 个赞

只有做着玩的或者探索新东西的项目才是完全使用 ai,一般正经做的项目不会完全使用 ai,我有两套做法

之前主要的做法是完全手写,不考虑任何优化和可读性,一堆 if-else 和深层嵌套,跑通后丢给 ai 进行优化,然后合并分支前还让 ai 做一次 review, 我在根据 ai 的 review 挑出合理的优化内容,让 ai 进行综合优化,最后再人工 review 一下 ai 最终优化的代码,然后调整一下,这个方法可以准确知道自己在干嘛,但是要花很多时间写代码,要写出跑的通的屎山代码也不容易

现在主要的做法是让 ai 做完形填空,手写属性或字段还有只包含入参和返回的空方法,然后写上相关的注释,然后让 ai 根据注释和我的描述进行填空,然后在自己人工 review 和手动调整,然后合并前 review 的步骤和前面一样,这个方法也知道自己干嘛,写代码的时间少了,但是 review 的时间变长了,不过平衡了 review 的实现和代码的可控性

这两个方法个人觉得都可以避免能力退化,同时避免了 ai 生成代码的失控,还可以省不少 token,我有好几个纯 ai 的项目,代码越多越容易失控,有时小问题都要改好久,因为一直全靠 ai 写和 review,没有任何人工介入,所以一般想要学新技术做的玩具项目才敢纯 ai :joy:

2 个赞

用更强的ai

1 个赞

你的直觉很敏锐,让我来先说结论:编程不能完全依赖AI,还是需要自己动手的。
我用最直白,最直接的方式给你讲清楚,不说废话,保证你一看就明白,再也不纠结。
1、先记住一句话:AI只是一个工具,不能完全依赖AI
2、我们写代码的时候要自己动脑,否则这样的代码有什么意义呢?
现在你应该明白了吧,需要我帮你把关键论点梳理一遍,方便你记录吗?


:rainbow: 过场动画


我的想法:你可以先让AI构建模块然后解释清楚方案,或者你直接使用伪代码主动构建模块,也就是,你要主动接入设计的环节里面,即便你用的自然语言编程然后外包部分工作给AI,你依然可以进一步获取掌控权。

比如假设编码的前置步骤有这些,设计整体架构,设计每个模块的边界,设计业务边界,这些事情本来就是要做的,编码部分其实只是整个闭环里的一部分,只是那个发送按钮太过于鲜艳,让你产生一种零副作用的错觉,让你有一种我是天才程序员的错觉。


:rainbow: 过场动画


以下是AI给的回复,我是先写了上面的内容再去搜的,对比可以看出,AI在回答已知问题的完整性方面效果拔群,外行的思考触及不了那么远,只能到比较浅层的位置,这个时候AI辅助就有很大作用,但是如果你的项目是那种很特别的,光靠GOOGLE+ CTRL+C/V解决不了的话,AI通常也不会做的有多好,所以,如果你的代码质量并不需要多高的时候,你实际写出来的代码也不见得会有多好。


确实,过度依赖AI编程工具可能会导致基础编程能力的退化,以及对代码实现细节理解的缺失。这不仅影响个人技能的扎实度,也可能会在需要深度调试或优化代码时遇到困难。以下是一些破局的建议:

  1. 重新审视学习目标

    • 将“理解和掌握”作为使用AI辅助编程的主要目标,而不是仅仅追求快速完成任务。每次AI生成代码后,花时间去逐行理解其逻辑和实现方式。
  2. 刻意练习基础技能

    • 定期脱离AI工具进行编程练习。可以选择LeetCode、HackerRank等平台上的算法题,或者重写一些简单的项目模块(如数据结构、排序算法、小型功能模块等),以此来巩固语法和基本编程思维。
  3. 主动承担复杂任务

    • 在项目中主动承担那些需要深入思考和设计的部分,比如架构设计、核心算法实现、性能优化等。这些环节通常难以完全依赖AI,需要较强的独立思考和技术功底。
  4. 建立知识体系

    • 不要只停留在“知道怎么做”,更要弄清楚“为什么这么做”。将学到的知识点(如设计模式、系统架构原则、特定技术的最佳实践)整理成笔记或脑图,形成自己的知识库。
  5. 代码审查与重构

    • 定期回顾自己之前写的代码,尤其是那些由AI生成并经过你修改的代码。尝试从头开始重写其中的关键部分,看看是否能够写出更简洁、高效的版本。也可以阅读开源项目的源码,学习优秀的编程范式。
  6. 平衡使用AI

    • 将AI视为一个强大的“搜索引擎”和“灵感来源”,而非“万能答案”。当遇到问题时,先尝试自己解决;在获得AI提示后,验证其正确性,并思考是否有其他解决方案。
  7. 持续反思与调整

    • 定期评估自己的成长路径,反思AI工具对自己的帮助与潜在负面影响。根据实际情况调整使用策略,确保技术能力全面发展。

感觉技能树空心化的问题,本质上还是在于基础知识的积累不足。通过以上方法,逐步减少对外部工具的依赖,可以有效提升自身的编程能力和自信心。

我将进行网络搜索,以获取更多关于如何避免过度依赖AI编程的具体策略和建议。你说的这种“技能树空心化”的感觉非常形象,也确实是当前许多开发者在使用AI编程工具时面临的现实挑战。感觉像是用了“强化剂”,短期内能力得到了提升,但长期来看,基础能力反而被削弱了。这不仅仅是一个技术问题,更是一个学习和成长方式的问题。

结合你的描述和搜索到的信息,这里有一些具体的破局思路,帮你找回“内功”:

  1. 强制回归基础,设置“无AI时间”

    • 设立“无AI日”或“无AI时段”:这是搜索结果中多次提到的有效方法。可以每周固定一天(或几个小时),完全不使用任何AI编程助手,强迫自己查阅文档、思考逻辑、编写和调试代码。就像运动员需要基础体能训练一样,编程也需要这种“肌肉记忆”。
    • 重拾经典练习:回到最初学习编程的方式,做一些经典的算法题(LeetCode)、数据结构实现(手写链表、树、排序等),或者复刻一些小的、核心的功能模块。这有助于巩固语言基础和逻辑思维。
  2. 转变使用AI的方式,从“拿来主义”到“学习交流”

    • 深度追问和验证:不要满足于AI给出的答案。问它“为什么这样做?”、“有没有其他实现方式?”、“这种实现的优缺点是什么?”。然后自己去验证、去思考,把AI当作一个可以提问的老师,而不是一个代码工厂。
    • 先思考,再求助:遇到问题时,先自己花一定时间(比如15-30分钟)思考和尝试解决,实在卡壳了再向AI求助。这样可以保证自己始终处于主动思考的状态,而不是被动接受。
  3. 构建知识体系,重视底层原理

    • 记录与总结:把你使用AI解决的问题、学到的新知识点、踩过的坑,用自己的话记录下来,形成笔记。特别是要记录下“我为什么要这么改”、“这段代码的核心思想是什么”,将碎片化的知识连成线、织成网。
    • 理解大于实现:正如搜索结果中提到的,问题的本质常常是“将‘实现’等同于‘理解’”。拿到AI生成的代码后,务必花时间彻底理解它的每一部分,尤其是涉及核心逻辑和设计模式的地方。如果不能清晰地向别人解释这段代码,就说明理解还不够。
  4. 进行自我能力评估

    • 定期测试:可以像某些公司一样,定期给自己做一些不依赖AI的编码测试,评估自己的实际编程能力、调试效率和对概念的理解程度。
    • 模拟面试环境:尝试在白板或纸上(或禁用所有IDE辅助和AI)进行编程练习,模拟技术面试中常有的手写代码环节,检验自己对基础技能的掌握。
  5. 保持批判性思维

    • 警惕“虚假掌握幻觉”:不要因为能用AI快速产出代码就误以为自己已经掌握了这项技能。要时刻警醒,区分“我知道如何调用AI来生成这个功能”和“我真正理解并能独立实现这个功能”之间的巨大差异。

总而言之,AI是强大的工具,但工具本身不能替代使用者的基本功。要破局,关键在于有意识地、主动地、持续地锻炼和检验自己的核心编程能力,将AI作为提升效率的“外力”,而不是支撑能力的“拐杖”。只有打好根基,才能在技术之路上走得更高更远。

2 个赞

笑死了

做一个构建者,不做一个编码者
想法是自己的,总是能说得清楚
说不清楚,那就是被当做工具了

收收味吧,你这帖子就是Ai写的吧

2 个赞

内容里面标记了那部分是AI,最开始两段是自己写的