AI时代的软件开发范式转变与职业应对
讨论AI对软件开发工作方式的深层影响及程序员需要做出的技能转变。长文观点类,缺乏具体实践指导。
讨论AI对软件开发工作方式的深层影响及程序员需要做出的技能转变。长文观点类,缺乏具体实践指导。
抱歉,你可能会觉得这是一篇非常长的文章。看到标题,你大概以为我接下来不是要赞颂 AI 的无限荣光,就是要宣称它将逐渐终结世界,并夺走你的工作。
但我保证,本文并非如此。事实上,既然你正在 Dev.to 上阅读这篇文章,我会告诉你,为什么你很可能会在后 AI 时代发展得很好。
自编程诞生以来,有一件事始终未曾改变:编程一直都是在编写代码。尽管计算技术在几十年间发生了翻天覆地的变化,但有一点始终如一……我们编写代码,机器按照我们的指令执行。
如今,Copilot、Cursor 和 ChatGPT 等工具正在彻底颠覆这一过程。AI 不只是遵循指令,还能帮助创建指令。你描述自己的需求,它便会生成代码,让你完成一半的工作——有时甚至更多。
这感觉令人难以置信。
但它也引发了一些令人不安的问题。如果 AI 越来越擅长编写代码,开发者还能做些什么?这是否意味着一个延续数十年的职业即将终结——还是某种更伟大事物的开端?
我认识的最优秀的程序员,并不会被 ChatGPT 和 Claude 那些充斥着幻觉的输出吓倒。但计算机发展史表明,这些程序员不该如此自信地认为,未来世界不会要求他们作出适应。
软件生产方式的每一次演进,本质上都是一个关于抽象的故事。构建应用程序所需的数据量并没有随着时间推移而减少,反而越来越大。但我们用来描述这些数据的语言,已经变得更具表达力,也更加简洁。
汇编语言:不再需要穿孔卡片系统,也不用费尽心力地手工编写机器码。借助汇编语言,开发者可以使用更易于人类理解的语法编写指令,将硬件中复杂的二进制细节抽象掉。这意味着,他们可以将关注点从管理单个字节转移到设计和构建更复杂的系统上——操作系统、基础用户界面和早期软件应用。这是迈向现代编程的重要第一步:让人类无须像机器一样说话,也能与机器沟通。
汇编语言:不再需要穿孔卡片系统,也不用费尽心力地手工编写机器码。借助汇编语言,开发者可以使用更易于人类理解的语法编写指令,将硬件中复杂的二进制细节抽象掉。这意味着,他们可以将关注点从管理单个字节转移到设计和构建更复杂的系统上——操作系统、基础用户界面和早期软件应用。这是迈向现代编程的重要第一步:让人类无须像机器一样说话,也能与机器沟通。
编译型语言:可移植的高级代码彻底改变了编程。开发者不再需要针对特定机器硬件编写指令,而是可以使用 FORTRAN 或 C 等高级语言编写代码,再由编译器将其转换为经过优化的机器码。这种抽象让开发者能够专注于解决复杂问题,而不必担心特定于硬件的细节。结果是什么?可移植、可扩展的应用程序开始兴起——从企业系统到支撑我们日常生活的软件。它不仅仅是让编程变得更容易,更为规模更大、目标更宏伟的项目打开了大门,而这些项目最终改变了各个行业。
编译型语言:可移植的高级代码彻底改变了编程。开发者不再需要针对特定机器硬件编写指令,而是可以使用 FORTRAN 或 C 等高级语言编写代码,再由编译器将其转换为经过优化的机器码。这种抽象让开发者能够专注于解决复杂问题,而不必担心特定于硬件的细节。结果是什么?可移植、可扩展的应用程序开始兴起——从企业系统到支撑我们日常生活的软件。它不仅仅是让编程变得更容易,更为规模更大、目标更宏伟的项目打开了大门,而这些项目最终改变了各个行业。
解释型语言:Python 和 JavaScript 等语言将抽象进一步推进,更加强调易用性、灵活性和平台无关性。使用解释型语言时,开发者无须先将代码编译为机器指令——他们可以动态编写并运行程序,而且通常能立即获得反馈。这推动了编程的大众化,让没有传统技术背景的人也能参与其中。尽管这些语言因各种怪异特性和低效率而声名在外,但它们推动了 Web 和应用程序革命,催生了完整的创新生态系统。如今,无数社区围绕微型 SaaS 应用、游戏和实验性项目蓬勃发展;如果没有这些易于使用的工具,这些项目原本不可能出现。
解释型语言:Python 和 JavaScript 等语言将抽象进一步推进,更加强调易用性、灵活性和平台无关性。使用解释型语言时,开发者无须先将代码编译为机器指令——他们可以动态编写并运行程序,而且通常能立即获得反馈。这推动了编程的大众化,让没有传统技术背景的人也能参与其中。尽管这些语言因各种怪异特性和低效率而声名在外,但它们推动了 Web 和应用程序革命,催生了完整的创新生态系统。如今,无数社区围绕微型 SaaS 应用、游戏和实验性项目蓬勃发展;如果没有这些易于使用的工具,这些项目原本不可能出现。
如果说历史教会了我们什么,那就是新工具不会消灭工作岗位——它们会创造工作岗位。
1957 年的某个人:“编译器绝不可能超越我手工编写的机器码。”
编程最初意味着管理每一个细节——手动分配内存、编写针对特定硬件定制的底层代码,以及理解机器内部的每一处复杂机制。这是一套极其小众、也极难掌握的技能。如今的学生可以轻松地在任何能够运行浏览器的环境中呈现自己的 React 得意之作,而无须操心那些烦琐的底层细节。每一次抽象层级的跃升,不仅让复杂系统的编程变得更加容易,也开启了无数新的机会,使人们可以用少得多的精力实现过去无法想象的事情。
我认为,AI 辅助编程恰好可以纳入这段持续演进的抽象史。编程演进中的每一次转型都有一个共同的核心主题:代码可以被表示为数据。每一次范式转变,都是在抽象我们描述和操作这些数据的方式。大语言模型将这种抽象又向前推进了一步:它让我们能够以自然语言的形式表示代码,以及生成式 AI 可以生成的其他任何内容。
自然语言:生成式大语言模型解锁了一种软件开发方式,而这种方式过去只存在于小众的工匠式编程语言中:使用普通英语构建应用程序的能力。好吧,几乎如此。虽然这些模型可以通过“自动补全”,让自己显得在技术上十分娴熟,但想要获得可靠且精确的输出,仍然需要深厚的技术专业知识。不过,它们不断进步的能力让我们提前看到了一个不可避免的未来:自然语言编程将成为生产软件的事实标准。
与计算领域此前的许多范式转变不同,AI 不只是在抽象代码……它也在抽象工作本身。优秀的开发者可以详细描述自己的需求,而 AI 几乎可以处理剩下的一切。“智能体化”工具正变得能够以某种程度的自主性进行头脑风暴和规划——至少,它们给人的印象是如此。这些程序编写的代码未必能通过顶尖程序员的基本检验(事实上,这些代码甚至可能无法运行),但距离获得稳定、可靠的输出,我们似乎已经不远了。
AI 也不像编译器那样,是工具箱里具有确定性的工具。它带有一定程度的混乱和不可预测性,再结合它对许多事物的大致了解,使其能够成为一个相当不错的协作者。即使你不会直接使用它编写的代码,也可能发现它是一只极佳的“橡皮鸭”:能够与你来回碰撞想法,也愿意围绕你的任何荒诞念头不断迭代。在研究如何构建一个系统时,它快速解析大量文档的能力非常有用。这意味着,开发者的角色将以一种新的方式演进。
未来,职业保障最强的开发者,未必是那些最熟悉语言特性、API 和库的人。AI——即使仍处于如今这种令人印象深刻却又较为原始的阶段——已经能够以惊人的准确度近似掌握其中的大量信息。
相反,最有可能从中获益的开发者,将是那些擅长处理 AI(但愿)在很长一段时间内仍难以胜任之事的人。至少就目前而言,AI 无法在记忆中保留完整的业务上下文。它不了解业务领域,不理解客户、路线图、预算、政治因素、企业文化、市场定位、战略,也不了解团队过去的失败与成功。它并不真实存在于这个世界中,无法与那些为航船掌舵的人建立关系——即便人们提示它协助掌舵。尽管 AI 具备生成能力,但它对自己所处行业几乎没有任何有意义的认知。
ChatGPT 的弱点在于,它不会夸产品总监 Jeff 的酷炫皮夹克,从而拉近彼此的关系。
想要利用 AI 在建立和理解复杂关系方面这一固有弱点的开发者,将会调整自己的优先事项。投入大量精力编写代码将不再值得,因为大语言模型最终会通过自然语言,将可靠代码的生产充分抽象化。从编程角度看,开发者只需在自己的技术领域达到足够专业的程度,确保机器不会犯下任何关键的技术错误即可。
更重要的是,适应能力强的开发者会利用自己对业务领域的深刻理解——至少目前,这是 AI 完全无力竞争的领域。真正关心并理解最终用户、企业及其内部工作人员的开发者,会借助 AI,以传统编码者十分之一的精力构建出最有效的解决方案。相比之下,那些顽固坚守传统编码方式的人,在企业眼中只会为了追求亲手解开难题所带来的多巴胺快感,而见树不见林。
最终脱颖而出的,将是那些懂得如何与 AI 协作,并充分利用其全部优势与弱点的开发者。
如果 AI 将编程的本质从“编写代码”转变为“清晰阐述解决方案”,那么开发者如今所重视的技能也将随之演变,普遍涵盖那些在 AI 出现之前的企业环境中积累过软件工程经验的人所磨炼出的软技能。
起初,最安全的群体将是那些已经因创造可衡量业务影响而受到认可的高级工程师和管理者。他们会最早收获这一转变带来的红利,站在一道突然扩张的价值鸿沟边缘,与那些尚无机会积累技术经验或领域知识的新晋初级开发者拉开巨大差距。这些后来者极其不幸:他们正试图跨过一座在脚下突然崩塌的桥。
但即便是高级工程师,也不可能永远高枕无忧。无论高级还是初级工程师,关键都在于充分依靠自己相较于 AI 的独特优势,并把其余一切交给 AI。
清晰阐述问题并将其分解为可执行的逻辑步骤,将成为一项关键的差异化技能。AI 可以生成代码,却无法理解含糊不清或表述不当的需求。开发者必须成为高效的“翻译者”,将业务需求转化为 AI 能够有效执行的提示词。他们还必须提供恰到好处的技术上下文,避免 AI 因工程化不足或过度工程化而失控,最终产出糟糕的实现。
AI 虽然能够编写系统中的单个组件,但至少目前,它还不能很好地设计这些组件应当如何协同工作。根据我的亲身体验,它很快就会忽视全局,而且在评估重大决策时优柔寡断、毫无主见。开发者需要专注于架构与集成,确保 AI 生成的各个部分能够融入更广泛的系统,并与组织目标保持一致。
我们必须重构这里的这个矩形,否则所有人都会当场毙命。
开发者需要严格评估并改进 AI 的输出,确保其高效、安全,并符合业务目标。这需要将技术专业知识与通过生产系统实践磨炼出的直觉结合起来。
能够与利益相关者建立信任、理解用户痛点,并倡导符合公司价值观的解决方案的开发者,将拥有明显优势。这些技能是 AI(目前)无法复制的,也将让最优秀的开发者脱颖而出。(而且可以说,它们如今已经在发挥这种作用。)
衡量开发者成功与否的标准,从来都不是、以后也不会是你能提交多少行代码,而是你能产生多大的影响。在这个新环境中,胜出者将是那些能够:
交付真正解决用户问题的方案。
构建能够随业务需求扩展的韧性系统。
将 AI 用作能力倍增器,而不是拐杖。
这意味着从工匠思维转向战略家思维。最优秀的开发者会减少手动重构和测试的时间,把更多时间用于解决真正有意义的问题。传统意义上的代码编写技能,其内在价值会越来越低,除非极致的技术性能对业务或产品战略至关重要。
事实是:开发者这一角色不会消失,但开发者的日常工作将发生巨大变化。那些重复、耗时且容易描述的任务会被自动化。这不是威胁,而是机遇。
拥抱这一变化的开发者将拥有更多时间,专注于真正重要的事情:打造无缝的体验、探索创新解决方案、解决现实世界中的问题。
但那些抵制变化、执意强化手动流程或否定这些工具潜力的人,可能会被时代抛在后面。AI 不会停下来等待任何人追赶。如果你发现自己正在嘲笑 AI 如今生成的不完美代码,请记住:曾经也有一位优秀的程序员相信,自己编写的汇编代码永远会优于编译器。我们都知道那个故事的结局。
这一转变的美妙之处在于,它降低了门槛,为所有愿意学习的人敞开了大门。生成式 AI 是一种工具,而不是替代者。与此前的每一次范式转变一样,拥抱它的人将放大自己解决问题的能力。无论你是刚刚起步的初级开发者,还是经验丰富的架构师,AI 都能让你以更快的速度完成更多工作,并更加专注于真正重要的事情。
但要在这个新时代取得成功,就必须适应变化。你不能仅仅把 AI 当作另一种自动化工具,它是一个协作者。你需要学习如何有效引导它:如何界定问题、验证输出,以及迭代解决方案。把注意力从编码的机械操作转向更广阔的图景:理解用户、设计系统,并与战略保持一致。
AI 正在对劳动本身进行抽象,让开发者得以把精力投入真正重要的地方:创造实际影响。如果你能掌握这一转变,就不只是能够跟上时代,还将有能力改变世界。
表现最出色的开发者不会只是编写代码,他们会利用 AI 重新定义企业的运营方式。通过结合自身技术技能与 AI 协作,他们将自动完成业务与用户需求的定义和转化,分析非结构化数据以发现机会,并准确定位流程中的低效环节。这些开发者不仅会实现工作流自动化,还会在实质上实现整个组织的自动化。
Sam Altman 关于“一人独角兽公司”的预测在未来十年内成为现实,并非天方夜谭。
对于从事非技术岗位的人来说,这应当是一记警钟。使用 AI 的开发者不会只局限于自己的传统领域,而会扩展到营销、运营、设计,甚至产品领导等其他领域。这并非出于恶意,也不是有意要取代谁,而是因为 AI 将赋予他们——或者雇用他们的公司——彻底改造那些过去难以触及的手动流程的工具。
解决方案很简单:学会构建。不一定要像软件工程师那样编写代码,但要学会设计和构建能够解决问题的系统。现在就开始,赶在差距进一步扩大之前。
AI 正在改变工作的本质。任何能够以盈利方式实现自动化的流程,都很可能最终被自动化。这不是猜测,而是技术进步的发展轨迹。那些懂得如何利用这些工具创造、构建并解决问题的人将一路领先:自动执行任务、提高生产力,并开启全新的机会。
如果你从事的是非技术岗位,可能会想:“我不需要学习编程,AI 会替我完成。”这在一定程度上是对的——AI 工具正在降低入门门槛,让上手变得更加容易。但在这个时代真正能够脱颖而出的人,将是那些理解如何从零开始构建解决方案的基本原理,并且对此有充分实践经验的人。
AI 并非魔法。它不了解你的业务、客户或目标。它仍然依赖人类的输入——依赖那些能够界定问题、验证输出并整合解决方案的人。开发者已经知道如何做到这些,并且正在与 AI 协作,不断突破边界。你也可以做到——只需要不断练习,并愿意主动适应变化。
感谢你阅读我在 Dev.to 上发表的第一篇文章。我由衷地相信,对于所有拥抱 AI 的专业人士来说,未来都是光明的——不仅要把 AI 当作工具,更要把它视为解决重要问题的合作伙伴。
这场范式转变并不意味着程序员的终结,但它很可能标志着一个全新编程时代的开始。职业形态将迅速演变,唯一不变的就是变化。在这个世界中蓬勃发展的关键,是适应能力。
去构建点什么吧。无论你是经验丰富的开发者,还是从未写过一行代码的人,都没有关系。花一个小时探索一下有哪些可能性。使用 AI 解决一个问题、自动化一项繁琐任务,或者纯粹为了乐趣创造一些东西。
今天那些不断尝试、学习和构建的人——无论是否拥有技术经验——都将成为明天脱颖而出的人。
部分评论可能仅对已登录的访客可见。请登录以查看全部评论。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。