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