Skip to content

AI 编程:神助攻还是挖坑王?我的 AdminLTE 后台改造实战反思

开篇聊几句

最近,“AI 要颠覆软件开发”、“90% 程序员要失业”这类论调传得沸沸扬扬,各种 AI 编程神器、IDE 插件也确实秀出了让人眼前一亮的肌肉。说实话,作为开发者,我既好奇又有点小激动,也想着能不能靠 AI 让开发效率“坐上火箭”。

正好,我最近接手一个活儿:把一套老掉牙的 CRM 后台系统(PHP 5 + CodeIgniter 3.1.10)升级到 PHP 7,并套上新版的 AdminLTE 3.x,还得加点新功能。整个过程,我几乎是“焊”在了 AI(主要是 Gemini 这一类的)身上,让它帮我写代码。

坦白说,AdminLTE 虽然用的人不少,但我之前没接触过。官方文档?嗯……有点懒得翻,心想这不正好是 AI 大显身手的时候嘛!直接让它生成代码得了。

这段“人机协作”的经历,让我对 AI 在编程这摊子事儿里的真实水平和局限,有了些掏心窝子的体会。

AI 的“高光时刻”:效率确实杠杠的

得承认,在不少场景下,AI 简直就是个完美的“副驾驶”:

  1. 写写“套路活”: 创建控制器、模型的基础架子,写标准的增删改查(CRUD),生成配置文件,或者搞点通用的前端小零件(比如下拉菜单、表单验证规则),AI 几乎是“唰唰”几下就能搞定,准确率还挺高,确实省了大量复制粘贴的功夫。
  2. 快速搞定通用功能: 想根据数据库字段自动生成一套 AdminLTE 风格的表单?或者快速搭个带分页的数据表格?这些需求,AI 往往能迅速甩给你一段能跑起来的代码。
  3. 变身“行走的文档库”: 遇到不熟的 PHP 函数、类库用法,或者某个框架的特定“规矩”,问 AI 通常比自己吭哧吭哧翻文档来得快,还直接给示例。
  4. 代码片段“生成器”与“翻译官”: 需要个特定功能的小代码块(比如日期格式化、字符串处理),或者想看懂一段别人的“天书”代码,AI 的解释和生成能力,大多数时候都挺靠谱。
  5. 前端样式“神笔马良”: 想给界面整个“科技蓝”或者“现代简约风”?只要要求提得明确,AI 给出的 CSS 方案和布局建议,效果还真不赖,有时候甚至可以直接用,小修小改就行。

尤其是在项目刚开始,处理这些“标准化、通用性强、有点机械”的任务时,AI 简直效率爆表,真有种“未来已来”的感觉。

AI 的“翻车现场”:复杂、细节和“新东西”面前就拉胯

但是,好景不长。当项目往深水区走,逻辑越来越绕,或者需求细节抠得越来越细时,AI 的短板就开始暴露无遗,有时候真能把人气笑:

  1. 复杂流程和状态管理?它懵了: 处理那种需要跨好几个页面交互、还得记着用户之前操作状态的复杂逻辑(比如这次我们遇到的 AdminLTE IFrame 模式下的 Hash 导航难题、跨 IFrame 窗口发消息、动态增删标签页还得保持状态),AI 就开始有点力不从心了。它可能明白每一步单独怎么做,但要把这些步骤、不同组件间的依赖关系、状态怎么流转给完美地串起来,就太难为它了。
  2. 上下文:给少了不懂,给多了…它忘了! 这绝对是 AI 最大的痛点,没有之一。
    • “喂料”不足: 你要是只给它一小段代码或者模糊的需求,它生成的代码多半没法直接用到你的系统里,甚至干脆理解错你的意思。
    • “喂料”太多: 等你费劲巴拉地把整个文件、相关模块代码、前因后果都塞给它,指望它能“总览全局”时,它反而容易“精神错乱”。可能前脚刚跟你确认好的关键点,后脚就忘得一干二净;或者改动 A 处时,悄无声息地把你之前调好的 B 处给弄坏了。结果就是“拆东墙补西墙”,你得跟在它屁股后面不停地检查、修复,累得够呛。
  3. 抠细节、要精准控制?它只会“差不多”: 对于一些精细的 UI 微调、特定的交互动画,或者需要严格遵守的业务规则,AI 给出的方案往往是“大差不差”,但离“严丝合缝地满足要求”总差那么一口气。比如,让它修一个特定元素在某个手机分辨率下的布局错位,或者实现一个不太常规的图表交互,它可能给你个通用解法,但对那些犄角旮旯的边界情况就束手无策了。
  4. 搞不定“新”或“偏”的技术: AI 的知识库再大,也顶不住新技术迭代快、或者某些用法比较小众。对于比较新、文档还不完善、社区讨论不多的技术、框架版本或特定库(比如这次 AdminLTE IFrame 3.2 模式下的各种骚操作),AI 的“幻觉”就更严重了。它可能会一本正经地编造出不存在的 API、推荐你用早就过时的方法,或者对库的内部机制给出完全错误的理解。在我这次开发中,让 AI 处理 AdminLTE IFrame 的 postMessage 跨窗口通信、pushState/popstate 实现的无刷新导航(尤其还要保证每个页面有固定 URL,方便分享给别人直接打开,而不是只能从后台首页点进去),以及如何通过代码精确触发标签页的创建和切换,简直是重灾区,AI 给的方案几乎没一个能直接用的。
  5. 调试?噩梦难度! AI 生成的代码,尤其是那些涉及复杂逻辑或库交互的,一旦出了问题,调试起来可能比你自己从头写还费劲。因为你不仅要弄懂业务逻辑,还得去猜 AI 是怎么“思考”的,它那有时不符合人类直觉的代码逻辑到底错在哪一步。真的印证了那句玩笑话:“AI 编码 5 分钟,人类 Debug 几小时”。

不管是 IDE 里集成的 AI 助手,还是直接把代码扔进聊天窗口,这些坎儿,一个都少不了。

人类程序员的价值:不只是“码农”

这次跟 AI “亲密合作”下来,我反而更清楚了我们程序员的价值在哪,绝不仅仅是敲代码:

  • 搭骨架、画蓝图(系统设计与架构): 理解整个业务是怎么回事,设计出扩展性好、维护方便的系统架构,这活儿 AI 目前还干不了。
  • 庖丁解牛(复杂问题分解): 把一个又大又模糊的需求,拆解成一个个能管理、能实现的小模块、小任务。
  • 刨根问底(深度调试与根源分析): 面对诡异的 Bug,能用逻辑、用工具一层层扒开问题表象,找到藏在最深处的根源。
  • 端水大师(权衡与决策): 在相互矛盾的需求、技术实现的限制和性能要求之间,找到那个最合适的平衡点。
  • 最强大脑(学习与适应): 快速学习没接触过的新技术,啃下难懂的文档,解决那些网上都搜不到答案的问题。
  • 沟通桥梁(沟通与协作): 听懂产品经理、客户到底想要啥(而不是他们嘴上说的啥),跟其他开发小伙伴高效配合。

就拿这次 AdminLTE 的 IFrame 导航来说,AI 反复给错方案,最后怎么办?老老实实扒拉官方文档(虽然相关的不多)和源码,硬啃下来,理解了它的脾气,自己动手写关键的 DOM 操作和状态管理逻辑,才算把问题彻底摆平。这活儿,AI 真帮不上忙。

与 AI 共舞:未来编程的新姿势

所以,咱们到底该怎么看待 AI 这位新同事呢?

  • 把它当成超级“实习生”或“模式识别大师”: 让它处理重复劳动、标准化任务,生成代码的“毛坯房”。
  • 把它当成“行走的文档库”或“点子库”: 用它快速查语法、API 用法,或者获取解决通用问题的思路。
  • 把它当成初级的“代码评审员”: 让它帮忙检查下代码风格、发现些明显的低级错误(但绝不能完全信赖它的判断)。

但最终的架构设计、复杂逻辑攻关、细节的精雕细琢、疑难杂症的诊断修复以及整个系统的整合落地,还得是咱们人类开发者来拍板、来把控。我们需要:

  1. 学会精准“喂料”: 清晰、准确、带足上下文地向 AI 提问。
  2. 学会“化整为零”: 把复杂的大任务拆成 AI 能更好理解和处理的小块。
  3. 保持“怀疑”精神: 永远别直接复制粘贴 AI 的代码,一定要自己看懂、测试过。
  4. 打铁还需自身硬: 扎实的编程基础、数据结构、算法知识,以及对你所用框架/库的深入理解,这才是驾驭 AI、搞定它挖的“坑”的底气。
  5. 把它当“工具”,别当“拐杖”: AI 是提高效率的利器,但不能替代你的思考和创造。
  6. 该放手时就放手: 如果 AI 对某个问题反复出错,或者根本理解不了你的复杂需求,别犹豫,赶紧切换回“人肉模式”,查文档、看源码、自己动手才是王道。

写在最后

AI 确实在改变编程的游戏规则,它在某些环节极大地提高了我们的效率,也降低了部分技术的入门门槛。但要说取代程序员,还远着呢。目前的 AI,更像个能力超强、知识渊博,但有时却会“一本正经胡说八道”、缺乏全局观和深度思考能力的实习生或助手。

未来的开发者,需要不断提升自己的系统设计能力、问题拆解能力、批判性思维和持续学习的能力,学会聪明地与 AI 协作,利用好它的长处,避开它的短处。

AI 编程不是终结,而是开发者进化路上的新篇章。我们要做的,是学会在人机协作的新时代里,跳得更稳,走得更远。