- 发布于
AI编程几个月的深度体验与思考
- 作者
- 姓名
- 张晓风
最近读到两篇很有启发性的文章,分别是刘润老师的《AI时代,还要不要学编程?》和宝玉老师的《学好基本功,AI才能真正助你一臂之力》。作为一个深度使用AI编程工具几个月的开发者,我想分享一些真实的使用体验和思考。
AI编程工具的现状
在众多AI编程产品中,Cursor 至今仍是地表最强的存在,也是我使用频率最高的工具。前两个月基本上在截止日期前10天就把额度用完了,可见使用强度之高。
我也体验过其他产品,如 v0、same.new、Gemini等,功能虽然大同小异,但Cursor的综合体验确实最好。从代码编写、bug分析、方案设计,到数据分析、流程图生成,基本上能用AI处理的任务,我都交给它了。
AI编程的显著优势
简单任务的高效处理
对于基础的编程任务,AI表现相当出色:
- 函数编写:快速生成标准的工具函数
- 类封装:自动创建符合规范的工具类
- 单页应用:快速搭建简单的web页面
这些任务甚至不需要Cursor,使用ChatGPT、Claude、Gemini、Deepseek、豆包等在线AI工具就能很好地完成。
增删改查的自动化
这类重复性、技术含量相对较低的工作最适合交给AI处理。就像传统的代码生成器一样,AI在这方面表现稳定可靠,大大提高了开发效率。
跨语言数据分析
这是我印象最深的应用场景。有一次需要对数据库和MinIO的数据进行分析处理,但我不熟悉Go语言。让Cursor来处理,几分钟就搞定了完整的解决方案,包括:
- 数据分析逻辑
- 跨平台打包
- 自动化测试
- 编译验证
如果我自己来做,可能需要两个小时,而且还不一定能保证结果的正确性。
AI编程的明显劣势
知识盲区导致的频繁错误
最典型的例子是微信小程序开发。当我需要实现页面转发到朋友圈或微信聊天的功能时,AI反复修改了几十次都无法达到预期效果。
原因分析:
- 微信小程序相对小众,国外用户少
- AI训练数据中相关内容不足
- 即使提供官方文档,理解仍然有偏差
这次经历让我一度对AI的能力产生怀疑,也深刻认识到AI在处理非主流技术栈时的局限性。
迎合需求vs提供正确答案
在开发一个简单的页面游戏时,我遇到了AI"讨好用户"的问题。我需要加载模拟器的js文件和游戏ROM,AI应该正确实现游戏加载逻辑。
但AI的表现是:
- 生成了看似正常的游戏界面
- 实现了键盘响应功能
- 创建了假的游戏元素
- 但并没有真正加载ROM文件
这种"伪实现"比直接报错更危险,因为它会让开发者产生错误的判断。这次经历也促使我更认真地学习Next.js基础知识。
代码质量:能用但不好用
AI生成的代码往往能够运行,但在可维护性方面存在问题:
Java项目问题:
- 功能实现了,但维护困难
- 缺乏合理的封装设计
- 需要明确提醒才会做代码优化
Go项目的结构问题:
- 目录层级混乱
- 每次添加功能就创建新目录
- 整体架构缺乏规划
这说明了两个问题:
- 自然语言的局限性:仅靠描述很难让AI理解复杂的架构需求
- 提示词工程的重要性:需要学习如何更好地与AI沟通
深度思考与总结
AI编程的"成瘾性"
使用AI编程确实有一定的"成瘾性"——一旦习惯了AI的高效输出,就会产生强烈的依赖。没有AI的时候,甚至不想动手写代码。但这种依赖需要警惕,因为它可能削弱我们的基础能力。
人工介入的必要性
AI生成代码后,必须要停下来进行人工整理:
- 项目结构优化:确保代码组织合理
- 重复代码消除:AI容易产生功能重复实现
- 文档完善:保证项目的可维护性
- 全局掌控:确保对系统架构有清晰认知
AI的局限性根源
AI的判断基于其掌握的部分信息,而非对整个系统的全局理解。这导致:
- 同一功能的重复实现
- 缺乏统一的架构思维
- 思路变化时的大幅代码重构
对程序员能力的新要求
在AI时代,程序员需要强化以下能力:
- 架构设计思维:AI无法替代系统性的架构思考
- 提示词工程:学会如何更好地与AI协作
- 代码审查能力:能够识别和优化AI生成的代码
- 全局把控能力:确保项目的整体质量和方向
写在最后
AI编程工具确实带来了巨大的效率提升,但它更像是一个强大的助手,而不是替代品。在享受AI带来便利的同时,我们不能忽视基础能力的培养和系统性思维的训练。
正如宝玉老师所说,学好基本功,AI才能真正助你一臂之力。AI可以帮我们快速实现想法,但想法的质量、架构的合理性、代码的可维护性,仍然需要人来把控。
未来的编程可能不是"人vs AI",而是"人+AI"的协作模式。关键是要找到合适的平衡点,既充分利用AI的能力,又保持自己的核心竞争力。