程序员是否已成为编程中的薄弱环节?
虽然人工智能承诺通过加速每个开发阶段来彻底改变软件开发,但一个令人不安的矛盾出现了:程序员本身可能已成为市场所需速度的主要障碍。在一个自动化以难以想象的速度生成代码的生态系统中,人工监督引入了延迟、检查和减速,这与效率的主要目标相矛盾。
历史回顾
让我们通过反思项目的正常演变并思考程序员随时间的变化方式来理解编程世界。
当我们在这个领域迈出第一步时,我们开始学习第一门语言,并了解可以帮助我们工作的第一个组件、库和框架。对最佳实践的研究和对所用工具日益深入的了解往往将我们的工作集中在一条已知的道路上,我们倾向于在每个新项目中部分或全部复制这条道路。
如果我们反思编程,它通常是一个线性过程:今天我们创建一个功能性的数据输入,明天我们实现高效的控制,然后我们考虑数据抽象机制,创建API,优化性能,增加安全措施,等等。每个项目都成为先前经验的总和,经过适当重组:也许最好从一开始就设计API,安全措施最好作为第一步实施,让我们使用一个成熟的控制库、这个认证服务等等。然而,在持续演进的视角下,经验的累积可能隐藏着一个阴险的陷阱。
日益增长复杂性的负担
真正的问题不在于代码本身,而在于随时间无情累积的复杂性。每个新项目代表一个很少真正全新的起点:程序员立即插入他们在前几年学到的一切,无意识地积累复杂性层。
最初,这种复杂性似乎可以管理,但它逐渐变成越来越难以承受的负担。每个新功能、每个要修复的错误、每个客户请求都增加了另一层,沉淀在现有代码之上,创建了一个需要越来越专业化技能来管理的分层结构。
这种动态与当前市场的期望正面冲突,其中速度已成为主导参数。客户想要一切,而且他们现在就想要:
- 创建一个像苹果一样的网站,但必须在一周内完成,因为你一切都准备好了。
- 原型必须在今晚准备好。
- 错误必须在今天修复。
并以我肯定听过无数次的引语结束:
- 你什么时候需要这个功能?
- 昨天就要!
时间压力,一直存在,变得越来越持续和不可避免。
时间压缩的错觉
面对这种压力,行业尝试了各种自动化策略。过去,有CASE(计算机辅助软件工程)工具,针对特定问题类别的代码工厂。随着需求的演变,这些工具转变为现代框架:与CASE的垂直性相比更加灵活和通用,但仍然复杂且不总是直观易用。
人工智能的到来代表了最终的承诺:为我们编写代码的程序,自动解决问题,节省时间和精力。然而,这种明显的解决方案与一个不可回避的现实冲突:程序员仍然是这个过程控制器:一个人类控制器,具有所有的局限性和反应时间。
即使将代码编写委托给AI,不可减少的时间仍然存在:学习、适应、调试、测试和人工监督。只要这种监督仍然是必要的,总时间就不能大幅减少。正是在这种动态中,程序员作为一个潜在的薄弱环节出现:在自动化过程中引入开销和延迟的人类元素。
但AI如何帮助我们并进化?
2025年是“氛围编码”的一年:人工智能辅助的编程,其中每个问题通过迭代提示解决。如果某些东西不工作,生成一个新的提示;如果需要修改某些东西,再生成另一个提示。
这种演变将AI从简单的支持工具转变为主要的工作工具。
我已经以“氛围”模式工作了几个月,首先是在各种LLM中输入提示,然后通过Copilot,然后使用像Gemini和Copilot Agent这样的CLI工具,直到更沉浸式的工具。
在撞了一段时间墙后,你开始看到它的局限性和不一致性,尽管你经常认为这些更多是你自己的问题,而不是你使用的机器的问题。
像我一样,其他知名人物,如Jack Dorsey,已经开始将AI用于他们的“周末项目”,通过自动生成的代码完全创建像BitChat这样的应用程序。
然而,与这些工具的直接经验揭示了一个复杂的动态。完全依赖“氛围”来生成大段代码会产生大量需要重新检查和修复的元素。AI的解释能力,虽然令人印象深刻,但很容易偏离预期方向。
最有效的方法已被证明是碎片化方法:使用AI完成小的特定任务,检查和测试每个组件,然后手动组装它们。这种方法允许质量控制,同时仍然利用自动化提供的加速。这类似于驯化过程:在有效使用工具之前,有必要了解、理解和引导工具。
当程序员停止时:一个近未来场景
开发过程的日益加速提出了一个关键问题:当程序员不可用时会发生什么?过去,开发人员的缺席仅仅意味着相应比例的减速。发布周期是年度的,对新功能的压力有限。
在当前,加速已将每次中断转变为潜在的系统性问题。在不久的将来(2-3年),项目在程序员缺席期间继续以无监督的方式演进是合理的,AI自主生成代码、解决问题和管理分支。
当他们返回时,程序员将面临数十个要检查的分支、要理解的问题、要分析的错误,以验证自动生成代码的正确性。这种情况的心理负担是显著的:对缺席的愧疚感、对错过监督的焦虑、重新控制一个继续自主演进的过程的压力。
这种情况很容易恶化为倦怠的恶性循环、离开公司或失去专业兴趣,总结为危险的态度:
“让我们接受这个拉取请求,AI已经完成了所有工作,能出什么问题呢?”
程序员的未来:超越当下
将我们自己投射到几年后的未来,程序员角色的演变似乎是不可避免的。AI在速度上已经超过任何打字员,开始生产比许多开发人员更高质量的代码,并且可以以前所未有的速度犯错。然而,它仍然是缺乏战略思维的纯粹力量。
程序员角色的转变可能遵循这一轨迹:更少时间直接编写代码,更多时间与AI互动和从事业务导向的工作。这种变化将需要意识和适当的准备,因为它将完全推翻当前的编程概念,推动专业人士超越他们当前的技能。
在这种新范式中,一个人将用几句话描述一个问题,一个专门用于分析的语言模型将为专门编写代码的模型生成提示。程序员将从手动编码者演变为AI生成代码的指导者、测试者,或许还有精炼者。
这种转变将导致一些当前实践的消失:传统调试、仔细记录代码的需要、具有明确名称的变量的重要性。同时,可能会出现新的编程语言,设计用于机器解释而不是人类可读性。
人类思维:不可逾越的极限
在这种持续加速、驱动效率和狂热自动化的情景中,有一个元素无法压缩:人类思维。经过数百万年进化塑造,我们的思维已经发展了通过缓慢而深思熟虑的过程解决复杂问题的机制。
剥夺这个“生物机器”处理信息所需的时间,并用连续输入超载它,只会产生一个结果:功能阻塞。在一个每次减速都会产生灾难性多米诺骨牌效应的世界中,请病假或休息日可能成为无法企及的奢侈品。
在结构不合理的组织中,每个人对特定活动单独负责而没有适当的工作负载分配,每个程序员必须承受的心理和身体负担将逐渐变得不可持续。
结论:可能断裂链条的薄弱环节
随着AI的出现,编程正在经历一个划时代的转变。我们必须学会与这些技术共存,同时保护我们的人性和批判性思维能力。市场要求的速度并不总是可持续的,有时最好放慢速度以确保工作质量。
然而,这种选择使我们面临被视为生产链中薄弱环节的风险,即阻止时间压缩和实现即时结果的因素。面对这种前景,我们将不得不质疑我们角色的必要性和有用性,或者我们是否已成为组织的负担。
我以Stanisław Jerzy Lec的一段我认为特别重要的反思作为结束:
“链条中最薄弱的环节也是最强的,因为它可以打破链条。”
程序员,虽然被认为是自动化过程中的薄弱环节,但也持有打破系统强加的复杂性和速度链条的钥匙。
我们的力量在于我们适应、学习和进化的能力。尽管未来可能将我们标记为链条中的薄弱环节,但我们的任务是将这种明显的弱点转化为我们工作和我们组织中的强点,否则我们很快将被越来越智能和自主的机器所淘汰和取代。