本文灵感源自于与 @N1ghtGlow98 聊天时所产生的话题之一
从 OpenAI 发布 ChatGPT 开始,AI 这个词就每天如影随形地跟在我的耳边。有人说它会取代程序员,有人说它会改变软件开发的方式。作为一个亲身经历了这场变革的开发者,我对 AI 的理解可能比大多数人更简单一些──毕竟我就是个非科班出身的 "野路子",没系统学习过任何一门编程语言,所有的知识都是通过拼凑、修改开源项目得来的零散知识点。
从我自己说起
说起我自己,我的 Minecraft 游戏史就是我的计算机学习史。这几个网站几乎见证了我的 Web 开发成长历程,从一个对代码一窍不通的新手,到现在能够打造现代化的网站界面,而这一切的改变,正是拜 AI 这个 "魔法助手" 所赐。它不仅帮我跨越了技术门槛,更重要的是让我能把更多精力放在创意和用户体验上,而不是被繁琐的代码实现所困扰。
搭建第一版 Minecraft 服务器网站时,只会用 WordPress 和现成主题。那时连最基础的布局都搞不懂,记得想删掉左边的一张图片,却不知道怎么调整布局,只能尴尬地留着一半空白。可以说是完全被模板限制住了,想改也不敢改,也不知道从哪里下手。
后来接触了 MDUI 框架,开始真正接触代码。那时候对 HTML 和 CSS 有了初步了解,但还是一知半解,基本就是照着文档复制组件、改改内容。虽然能做出些简单的效果,但说实话,连 div 都用得很生疏,而且经常要处理大量的布局错误,照猫画虎罢了。
而现在,借助 AI 的帮助,不仅能轻松实现暗色模式切换这样的现代特性,还能使用 Tailwind CSS 这样的现代框架来构建界面。从性能优化到响应式设计,以前需要查很多资料、花很多时间调试的功能,现在都能相对轻松地实现了。
回看这个过程:从被框架限制的 WordPress 时代,到需要手写大量代码的 MDUI 阶段,再到现在 AI 辅助下的现代化开发。网站的每一次迭代都能明显看到进步:不只是视觉上变得更美观,在性能、用户体验等方面也有了质的飞跃。
这大概就是技术发展对于我的意义:不是让我止步不前,而是让更多可能性变成现实。现在的我再看这个网站,不仅仅是一个简单的展示页面,而是融合了现代 Web 开发的各种特性:响应式设计、暗色主题、优化的加载性能... 现在的这个博客和整个界面,越来越朝着我心目中的样子去了。这在最开始 WordPress 的时候,可是想都不敢想的事情。
计算机知识白学了吗
"既然 AI 这么厉害,我学习数年的计算机基础、编程知识还有什么用?"
那天晚上,我和好友聊到了深夜。即使是通过文字的沟通,我也能够「看到」作为科班出身的他,说起这个话题时眼神中满是困惑:"你看,我从大一开始就在啃数据结构,熬夜刷算法题,做攻防练习,结果现在随便一个人跟 AI 聊两句就能写出代码。这些年的苦读,算什么?" 这种无力感我能理解,但作为一个野路子出身的「假开发者」,我的体会却截然不同。正因为没有系统学习过计算机基础,我比谁都清楚在只有 AI 帮助时的局限。
于是很多人就开始怀疑人生,但我想说的是:如果你真的尝试过用 AI 写点什么,你就会发现:没有相关计算机知识的支撑,AI 再强大也只是个听不懂指挥的 "莽夫"。也就是说:所谓的零基础,零代码完成大型项目的开发──纯属是扯淡。
为什么?这主要是来源于 AI 的工作方式──想象一个读了几乎所有书籍和网页的人。当你跟他说话时,他会在脑海中快速找到相关的内容,理解你说的每个词在不同场景下的含义,然后根据上下文把这些碎片拼起来,理解你真正想表达的意思。AI 大模型理解人类语言的方式,就像是一个博学多识的人在用他庞大的 "经验" 来理解对话:它通过学习海量的文本数据,掌握了词语间的关系、句子的常见模式和不同场景下的语言使用习惯。当我们说话时,它会把我们的话拆分成最小的有意义单位,根据它学到的知识理解每个部分在当前上下文中最可能的含义,再把这些含义组合起来,从而明白我们想表达什么。这个单位也就是 Token
理解了 AI 的工作方式后,我们就能明白它的局限性:它实际上是在通过统计概率来 "拼凑" 回答,而不是真正理解编程的本质。当我们要求它完成一个开发任务时,它会尝试将我们的需求分解成一个个 Token,然后根据训练数据中相似场景的代码片段来组合答案。尽管这个「预想中的场景」可能无限接近你的需求──毕竟它的阅读量实在是太大了,但是它仍会带来了几个根本性的问题:
首先是问题描述的准确性。即使 AI 能理解自然语言,但要准确描述一个编程问题,仍然需要扎实的计算机专业知识作为支撑。举个简单的例子,当你想要开发一个 "用户管理系统" 时,缺乏相关知识的人可能只会笼统地说 "我要能管理用户"。但在实际开发中,你需要明确诸多细节:系统是否需要角色权限管理?用户数据要如何持久化?需要存储哪些用户属性?该使用什么样的认证方式?这些问题的准确表述都需要对系统架构、数据库、安全等方面有基本的认识,或者是说我的脑海里要有这些内容:我的系统中需要这些东西。如果连这些基础概念都不了解,即便 AI 能生成代码,最终的成果大概率也会偏离实际需求。其次是语义理解的片面性。虽然 AI 能处理自然语言,但它对专业术语的理解往往停留在表面。我举个例子,比如当我们说 "需要一个登录系统" 时,AI 可能会生成包含基础密码验证的代码,但可能忽略了密码加盐、防止暴力破解、Session 管理等关键安全细节。这些专业知识的权衡和取舍,需要开发者的经验和判断。
就算这些你都不在意,但是,软件开发的本质是一个不断迭代的过程。现代开发是不断站在巨人肩膀上远眺的过程,懂得使用成熟的框架和包是每个开发者必经的学习之路。而且由于计算机技术日新月异,AI 训练时的样本内容可能已经被更先进的成套解决方案所取代,这使得仅依赖 AI 的开发者很难跟上技术发展的步伐。
在这样的背景下,如果没有编程知识的积累,单纯依赖 AI 生成代码,项目必然会在维护阶段陷入困境。在开发圈子里有着一个叫「造轮子」的现象,它形容开发者重复开发已经存在的成熟解决方案,就像重新发明轮子一样多此一举。在实践中,「造轮子」往往意味着浪费时间精力,还可能引入新的 bug,最终产出的代码质量也难以企及经过广泛验证的成熟方案。
而现在,完全依赖 AI 进行开发则是一件比「造轮子」还要恐怖的事情。至少「造轮子」的开发者还懂得自己在做什么,知道如何调试和维护自己的代码。但完全依赖 AI 的开发者,因为不理解代码的本质,反而沦为了 AI 的 "工具人":每次需求变更都要重新找 AI 生成代码,无法有效地在已有代码基础上进行迭代。这就像是在黑暗中不断推倒重来,既浪费资源,又难以保证产品质量,最终可能让项目陷入无法维护的困境。
这种情况在小型项目中可能还不太明显,但一旦项目规模增大,问题就会变得异常棘手。
拿它去处理一个几百兆代码量的项目?就那几千一万的 Tokens,这不是在开玩笑吗?虽然 AI 确实能写代码,但要让它写出真正有用的东西,如果开发者自己不懂项目架构,连问题描述都会变得困难。这就像你想指挥一个厨师做菜,但自己对烹饪一窍不通,结果可想而知。Github Copilot 的数据就显示,虽然它能提供代码建议,但是开发者平均要修改其 30% 的输出才能达到生产标准。
这还仅仅是常规项目,当遇到需要深入理解系统架构或处理特定细节问题时,AI 往往表现得更加 "力不从心"。举个简单的例子,假设你的网站运行很慢,需要优化速度。如果你不懂相关技术知识,可能只会告诉 AI "让网站变快"。但实际上,速度慢可能来自数据库查询效率低下、服务器配置不合理、或是代码本身的性能问题。在这种模糊的需求下,AI 就无法去思考如何真正提升性能。
更糟糕的是,假如你真的一窍不通,AI 往往只能提供看起来能用的建议,而不是真正能在实际环境中稳定运行的解决方案。就像你去餐厅吃饭,AI 就像是一个只会按照菜谱烹饪的厨师。如果你说 "我想吃得健康一点",它可能会简单地减少用油,却不懂得如何在保持口感的同时做出健康的改良。同样,当你的网站需要处理大量用户访问时,如果你不懂技术,就无法判断 AI 给出的方案是否真的能承受住实际压力。
这种情况下,专业知识就显得尤为重要。理解算法复杂度、了解内存管理、熟悉性能调优,这些 "硬核" 的计算机知识不仅没有被 AI 取代的风险,反而变得更加重要。或者退一步说,哪怕你不懂其中的工作原理,但是你知道这里需要什么,或是说怎么才能做的更好,我们才能真正驾驭 AI 这个工具:知道在在遇到歧路的时候该 "拉它一把",在它死循环转圈圈的过程中 "推它一把",让它走回正确的方向。这就好比车手和领航员的关系,在拉力赛中,很多人以为领航员只需要会看地图就够了。但实际上,一个优秀的领航员同样是一位出色的驾驶者,只是相比赛车手来说,他们在驾驶技术的专精程度上会有所差异。这种专业素养是必不可少的,因为只有真正理解赛车性能和驾驶技巧,他们才能在复杂多变的赛道上给出准确的判断:什么时候该加速,什么时候该减速,前方的弯道该用什么角度切入。所谓 "外行看热闹,内行看门道",领航员必须也得是 "内行" 才能胜任这份工作。
同样,AI 作为一个强大的编程助手,也需要有专业知识作为指引,才能真正发挥其价值。这不是简单的让它写代码,而是要懂得如何引导它,让它产出符合实际需求的高质量代码。这就是为什么我们说,与其说 AI 取代了编程学习的必要性,不如说它让专业知识变得更加重要。因为只有真正掌握了这些知识,我们才能让 AI 从一个 "莽撞的生手" 变成一个得力的助手。
我的看法
其实在 AI 时代,程序员的角色更像是一个 "导演" 和 "制片人" 的结合体。代码的具体实现可能不再需要我们亲自动手,但就像一部电影的制作过程,我们需要把控整体方向:项目的架构就像是电影的分镜头脚本,功能的规划就像是选景和演员调度,而具体的代码实现则像是现场拍摄。
在实际操作中,我们更像是在担任 "创意总监" 的角色:决定产品的功能和实现方式,由 AI 提供具体的执行方案。当 AI 交付初版 "样片" 后,我们会根据专业判断指出需要修改的地方,建议更可靠的实现方式,甚至只是提醒 AI 该在哪里引用特定的框架或包。这个过程就像是导演在看样片后给出修改意见,然后进行重拍和后期制作。这就形成了一个完整的创作循环:构思、实现、审查、优化,在这个过程中,AI 成为了我们得力的 "摄制组",而我们则专注于确保整个项目的质量和完整性。
如果说工业革命是把人力变成了机械动力,让普通人不再依赖纯粹的体力劳动;信息革命是把代码变成了机器语言(0 和 1),让计算机能够执行复杂的运算任务;那么 AI 革命就是把编程语言变成了自然语言,让普通人也能够直接与计算机对话,实现自己的想法。
私以为这种变革的意义甚至超过了前两次革命。工业革命解放了人类的体力,信息革命扩展了人类的计算能力,而 AI 革命则是在真正打破人类与机器之间的交流壁垒:我们不再需要学习晦涩的编程语言,就能够让计算机理解我们的意图。对于没有专业背景的普通人来说,这意味着技术创新的门槛被大幅降低。过去需要专业程序员花费大量时间才能实现的功能,现在可能只需要几句自然语言的描述就能完成。
这不恰恰是生产力的又一次巨大飞跃?就像工业革命让一台机器能够完成数十人的工作,信息革命让一行代码能够处理海量的数据,AI 革命则让每个人都能轻松地驾驭这些技术力量。这种效率的提升不是在压缩专业人士的生存空间,而是在扩大整个行业的发展边界。
如果你不认可我的只言片语
看看现在的发展趋势:微软以 100 亿美元的巨额投资押注 OpenAI,谷歌也迅速跟进推出了自家的 AI 模型 Gemini,Anthropic 则凭借 Claude 在专业领域和商业应用中获得了不错的口碑。而 Meta 更是选择开源 Llama 系列模型,希望通过开放合作来推动 AI 技术的发展。而我们呢,也不甘示弱:字节跳动推出了主打年轻用户的豆包大模型,凭借着对年轻人习惯的深入理解,在对话体验上别具一格;阿里巴巴的通义千问,则在电商和企业服务领域展现出独特优势;而清华大学背景的智谱 AI,推出的智谱清言更是展现了中国高校在 AI 研究领域的实力。
抛开可能的商业活动与内部考核指标不提,这些科技巨头和顶尖学府的战略布局向我们传递了一个明确的信号:AI 技术不是对开发者的威胁,而是一个充满机遇的新时代。就像过去的工业革命没有消灭工人,而是创造了更多的就业机会;信息革命也没有让人类失业,反而催生了整个 IT 行业。现在,AI 革命同样不会淘汰程序员,而是会重新定义开发工作的方式,为那些能够熟练运用 AI 工具的开发者创造新的机会──哪怕这个「开发者」并不是我们常规意义上的开发者,他可能是无法用文档描述清楚的产品,也可能是单枪匹马作战的独立开发者、当然,也有可能是时不时的有一些奇怪想法,但是苦于技术不过关而无法实现的你和我。
总结
每次用 AI 实现一个想法时,都会有种莫名的成就感。这种感觉很难用语言准确描述:可能是深夜里突发奇想的一个功能,随手和 AI 聊两句就能看到雏形;可能是早上刚想到的一个改进,午饭前就已经实现并上线。这种近乎即时的需求满足感,让人上瘾。现在的我,经常躺在床上就开始天马行空:这个按钮的交互是不是可以改得更流畅一些?那个页面的加载速度是不是还能更快?一旦觉得可行,第二天就迫不及待地要实现它。
以前实现一个新功能,需要考虑时间成本、学习成本,甚至可能因为技术门槛太高就直接放弃了。但现在有了 AI 这个得力助手,实现想法变得前所未有的简单。不用担心代码写不好,不用害怕碰到难题,更不用顾虑失败的成本──反正试试又不会怎样。这种轻松的心态反而激发了更多创意:既然实现这么容易,何不想得更大胆一些?
这不就是科技进步的意义吗?让更多人能够实现自己的创意,让技术变得更亲民。AI 能解决八成问题,但剩下两成的专业问题和定制需求,恰恰是人类价值的体现。在这个过程中,我们不是在被 AI 替代,而是在借助 AI 的力量,把更多天马行空的想法变成现实。这种创造的快乐,是纯粹的,是让人上瘾的,更是推动我们不断前进的动力。