程序员会成为编程中的薄弱环节吗?AI时代下的开发效率悖论

本文探讨了在AI加速软件开发的背景下,程序员自身可能成为效率瓶颈的悖论。文章分析了编程复杂性的累积效应、AI辅助编程的局限性,以及未来程序员角色从代码编写者向AI指导者转变的必然趋势,揭示了人类思维在高速自动化环境中的不可压缩性。

程序员会成为编程中的薄弱环节吗?

虽然人工智能承诺通过加速每个开发阶段来彻底改变软件开发,但一个令人不安的悖论出现了:程序员本身可能已成为市场要求速度的主要障碍。在一个自动化以难以想象的速度生成代码的生态系统中,人工监督引入了延迟、检查和减速,这与效率的主要目标相矛盾。

历史回顾

让我们通过反思项目的正常演变过程,并思考程序员随时间推移的工作方式,来尝试理解编程世界。

当我们在这个领域迈出第一步时,我们开始学习第一门语言,并了解可以帮助我们工作的第一个组件、库和框架。对最佳实践的研究和对所用工具日益深入的了解,往往使我们的工作集中在一条已知的道路上,我们倾向于在每个新项目中部分或全部复制这条道路。

如果我们反思编程,它通常是一个线性过程:今天我们创建一个功能性的数据输入,明天我们实现高效的控制,然后我们考虑数据抽象机制,创建API,优化性能,增加安全措施,等等。每个项目都成为先前经验的总和,经过适当重组:也许最好从一开始就设计API,安全措施最好作为第一步实施,让我们使用一个成熟的控制库、这个认证服务,等等。然而,在持续演进的视角下,经验的累积可能隐藏着一个阴险的陷阱。

日益增长的复杂性负担

真正的问题不在于代码本身,而在于随着时间的推移不可避免地积累的复杂性。每个新项目代表一个起点,但很少是真正全新的:程序员立即插入他们在前几年学到的一切,无意识地积累了一层层的复杂性。

最初,这种复杂性似乎是可管理的,但它逐渐变成了一个越来越难以承受的负担。每个新功能、每个要修复的bug、每个客户请求都会增加另一层,这些层沉淀在现有代码之上,形成了一种分层,需要越来越专业的技能来管理。

这种动态与当前市场的期望正面冲突,在市场环境中,速度已成为主导参数。客户想要一切,而且他们现在就想要:

  • 创建一个像苹果一样的网站,但要在一周内完成,因为你一切都准备好了。
  • 原型必须在今晚准备好。
  • 这个bug必须在今天修复。

并以一句我肯定听过无数次的话结束:

你什么时候需要这个功能? 昨天就要!

时间压力,始终存在,变得越来越持续和不可避免。

时间压缩的错觉

面对这种压力,行业尝试了各种自动化策略。过去,有CASE(计算机辅助软件工程)工具,这是针对特定问题类别的代码工厂。随着需求的发展,这些工具已转变为现代框架:与CASE的垂直性相比,它们更灵活、更通用,但仍然复杂且并不总是直观易用。

人工智能的到来代表了最终的承诺:为我们编写代码、自动解决问题、节省时间和精力的程序。然而,这种显而易见的解决方案与一个不可回避的现实相冲突:程序员仍然是这个过程的控制者:一个人类控制者,具有所有的局限性和反应时间。

即使将代码编写委托给AI,不可减少的时间仍然存在:学习、适应、调试、测试和人工监督。只要这种监督仍然是必要的,总时间就无法大幅减少。正是在这种动态中,程序员作为一个潜在的薄弱环节出现:在自动化过程中引入开销和延迟的人类元素。

但AI是如何帮助我们的?它们如何演进?

2025年是“氛围编码”之年:人工智能辅助编程,其中每个问题都通过迭代提示来解决。如果某个东西不工作,就生成一个新的提示;如果需要修改什么,就再生成另一个提示。

这种演变将AI从简单的支持工具转变为主要的工作工具。

我已经以“氛围”模式工作了几个月,首先是在各种LLM中输入提示,然后通过Copilot,再使用像Gemini和Copilot Agent这样的CLI工具,直到更沉浸式的工具。

在碰壁一段时间后,你开始看到它的局限性和不一致性,尽管你常常认为这些更多是你自己的问题,而不是你正在使用的机器的问题。

像我一样,其他知名人士,如Jack Dorsey,已经开始将AI用于他们的“周末项目”,通过自动生成的代码创建了像BitChat这样的应用程序。

然而,直接使用这些工具的经验揭示了一种复杂的动态。完全依赖“氛围”来生成大段代码会产生大量需要重新检查和修复的元素。AI的解释能力虽然令人印象深刻,但很容易偏离预期的方向。

最有效的方法已被证明是碎片化方法:将AI用于小的特定任务,检查和测试每个组件,然后手动组装它们。这种方法允许进行质量控制,同时仍然利用自动化提供的加速。这类似于驯化的过程:在使用工具之前,有必要了解、理解并引导它。

当程序员停下时:一个近未来场景

开发过程的日益加速提出了一个关键问题:当程序员不可用时会发生什么?在过去,开发人员的缺席仅仅意味着相应比例的减速。发布周期是年度的,对新功能的压力有限。

在当前,加速已将每一次中断转变为潜在的系统性问题。在不久的将来(2-3年内),可以合理推测,项目将在程序员缺席期间以无人监督的方式继续演进,AI自主生成代码、解决问题和管理分支。

当他们返回时,程序员将面临数十个需要检查的分支、需要理解的问题、需要分析的bug,以验证自动生成代码的正确性。这种情况下的心智负担是巨大的:对缺席的负罪感、对错过监督的焦虑、以及重新控制一个已经自主演进的过程的压力。

这种场景很容易恶化成 burnout 的恶性循环、离开公司或失去专业兴趣,总结为一种危险的态度:

“让我们接受这个拉取请求吧,AI已经完成了所有工作,能出什么问题呢?”

程序员的未来:超越当下

展望未来几年,程序员角色的演变似乎是不可避免的。AI在速度上已经超过任何打字员,开始生产比许多开发人员更高质量的代码,并且能够以前所未有的速度犯错。然而,它仍然是缺乏战略思维的纯粹力量。

程序员角色的转变可能会遵循这一轨迹:直接编写代码的时间减少,更多时间用于与AI互动和面向业务的工作。这种变化需要意识和充分的准备,因为它将彻底颠覆当前对编程的概念,推动专业人士超越他们当前的技能。

在这种新范式下,一个人将用几句话描述一个问题,一个专门用于分析的语言模型将为专门编写代码的模型生成提示。程序员将从手动编码者演变为AI生成代码的指导者、测试者,或许还有优化者。

这种转变将导致当前一些实践的消失:传统的调试、细致记录代码的需要、具有明确名称的变量的重要性。与此同时,可能会出现新的专为机器解释而非人类可读性设计的编程语言。

人类思维:不可逾越的极限

在这个持续加速、驱动效率和狂热自动化的场景中,有一个元素是无法压缩的:人类思维。经过数百万年的进化塑造,我们的思维已经发展出通过缓慢而深思熟虑的过程来解决复杂问题的机制。

剥夺这台“生物机器”处理信息所需的时间,并用连续的输入使其超载,只会产生一个结果:功能阻滞。在一个每次减速都会产生灾难性多米诺骨牌效应的世界里,请病假或休息日可能变成无法企及的奢侈。

在结构不合理的组织中,每个人在没有适当工作负载分配的情况下单独负责特定活动,每个程序员必须承受的心智和身体负担将逐渐变得不可持续。

结论:可能断裂链条的薄弱环节

随着AI的出现,编程正在经历一个划时代的转变。我们必须学会与这些技术共存,同时保持我们的人性和批判性思维能力。市场要求的速度并不总是可持续的,有时为了确保工作质量而放慢速度是可取的。

然而,这种选择使我们面临被视为生产链中薄弱环节的风险,即阻止时间压缩和实现即时结果的元素。面对这种前景,我们将不得不质疑我们角色的必要性和实用性,或者我们是否已成为组织的负担。

我以Stanisław Jerzy Lec的一段我认为特别重要的反思作为结束:

“链条中最薄弱的环节也是最强的,因为它可以打破整个链条。”

程序员,虽然被认为是自动化过程中的薄弱环节,但也掌握着打破系统强加的复杂性和速度链条的关键。

我们的力量在于我们适应、学习和进化的能力。尽管未来可能将我们标记为链条中的薄弱环节,但我们的任务是将这种明显的弱点转化为我们工作和我们组织的强点,否则我们很快就会被越来越智能和自主的机器所淘汰和取代。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计