2026年初,一批试图衡量AI对开发者生产力影响的研究人员遭遇了一个颇具人情味的问题:部分开发者已经不愿接受那些可能需要他们在没有AI辅助的情况下完成的任务。
研究人员将其称为"选择效应"。而我始终把它看作一种小小的坦白。
不久前,AI还只是侧边栏里的一个实验。我们在自动补全失灵、或者正则表达式写得令人尴尬时才会打开它。如今,对许多开发者来说,它已然成为工作环境的一部分。早上打开编辑器时它在,接手一个多年无人问津的代码库时它在,深夜测试报红时它也在。
我们可以关掉那个面板,可以停用智能体,我们依然知道怎么写代码。
那么,为什么不用它工作已经感觉像是少了一只手?
AI接管了那些停顿
AI进入软件开发领域,并非高调宣称要取代我们。它是一次次细小的解脱,悄然渗入。
它补全了我们正要写的那行代码,起草了我们一直拖延的测试,解释了陌生的函数,把堆栈跟踪翻译成通俗的英语,找到了埋藏在我们不想再读一遍的文档里的配置项。
这一切都不像是依赖,更像是动力。
但回想一下上次助手离线时的感受。令人不安的,大概不是你忘了某门语言的语法,而是第一步之前的那片沉默。你必须自己决定从哪里入手,必须独自承受那份不确定,必须盯着报错足够久,直到一个假设慢慢成形。
这些停顿曾经再平常不过。如今却感觉像是阻力。
也许这才是AI改变最深的地方。它不仅改变了我们产出答案的方式,更改变了我们愿意独自面对一个问题的时长。
那种解脱是真实的
谈论AI依赖,很容易把它说成开发者用懒惰换取自律。但这忽视了这个工具从工作内部感受起来是什么滋味。
软件开发中存在着出人意料的私人羞耻感。有的资深工程师忘记了某个基本命令的语法;有的新人害怕再多问一个问题就会坐实所有人的疑虑;有的开发者用第二语言工作,明明知道哪里出了问题,却无法快速组织出清晰的解释;有的人加入一个有十年历史的代码库,所有重要决策都活在别人的记忆里。
AI对他们所有人都保持耐心。
它不会在问题重复时叹气,不会说"这个你早该知道了"。它在凌晨两点依然可用,能把空白屏幕变成一个可以与之争论的东西。即便答案并不完美,有一个答案本身就改变了开始时的心理负担。
这很重要。有时候,看起来像生产力的东西,其实是解脱:少一些被卡住的恐惧,少一些尴尬,少一些面对一台拒绝自我解释的机器时的孤独感。
对许多开发者来说,AI也把精力还给了他们真正在乎的那部分工作。它可以承担样板代码、重复性测试、迁移脚手架,以及API客户端的第一百个变体。当思维抵达真正有趣的问题时,已经没那么疲惫了。
我们不应该把这视为走捷径。一个让人更有勇气去探索的工具,正在做一件真正有价值的事。
困难在于,舒适与依赖生长自同一个根。
我们使用着自己并不完全信任的东西
开发者调查一再呈现出同一种奇特的关系:我们频繁使用AI,同时对它给出的内容保持怀疑。
这种张力,对任何曾经目睹一个自信答案在某个边界情况下轰然崩塌的人来说都不陌生。代码看起来没问题,命名干净,解释从容。直到第三个测试失败,我们才发现模型凭空捏造了一个方法,误解了某条业务规则,或者解决的是一个比我们实际面对的更简单的问题。
然而下次卡住时,我们还是会再问。
这不是虚伪,信任不是非此即彼的东西。
我们也许不信任AI做最终决策,但信任它给出第一个方向。也许不信任那个补丁,但信任这段对话能松开思维里打的结。也许不相信那个答案,但相信屏幕上会出现些什么,而不是一片空白。
AI已经成了那个我们绝不会允许直接合并到主分支的同事,却又在它离开房间的那一刻莫名地感到若有所失。

我们走得更快,因为下一步很快就会出现。但我们依然要负责检验它是否能承受我们的重量。
当挣扎消失,什么也随之消失
有一种知识,只有在被卡住时才能获得。
在AI出现之前,一个陌生的报错可能会带着我们穿越堆栈跟踪,进入调用方,翻遍文档,最终触及一个我们自己都不知道曾经做过的假设。这条路线效率低下,却也是代码库从一堆文件变成一个真实场所的方式。
我们记得那些曾经抵抗过我们的系统。
花了一个下午才修好的那个bug,教会了我们状态真正存活在哪里。那次生产事故,教会了我们某个无聊的安全措施为何存在。那个被误解了三次的库,后来成了我们能向别人解释的库。
当AI移除了阻力,它也可能移除了让教训留存下来的那个故事。
一项早期研究观察了开发者学习一个陌生库的过程,发现了一个直觉上感觉正确的结论:把任务完全委托给AI的人,学到的比那些用AI提问概念性问题、检验自身理解的人要少。关键区别不在于"用AI还是不用AI",而在于这个工具是取代了思考,还是参与了思考。
这对初级开发者来说尤其棘手。有经验的工程师之所以能识别出一个可疑的抽象,是因为他们曾经构建过错误的抽象。他们之所以能感觉到一个整洁的补丁不属于这个系统,是因为他们记得这个系统的伤疤。但如果每一个粗糙的边缘在下一代人触碰之前就已被磨平,他们的直觉从何而来?
师徒传承从来不只是答案的传递,而是品味的缓慢传递:什么值得担心,什么时候该停下,哪种妥协日后会变得代价高昂,以及为什么一个能用的方案还没有准备好。
AI可以解释所有这些道理,但它还无法重现另一个人选择留在你身边、陪你慢慢学会它们时的那种感觉。

捷径也许是真实的,但理解仍然需要跨越那段距离。
代码曾经留有指纹
还有一种变化更难衡量,因为它存在于人与人之间。
人类写的代码往往带有作者的痕迹。一个奇怪的辅助函数,背后可能藏着一段需要它的事故记忆;一条别扭的注释,可能恰好揭示了某人当时的不确定。在代码审查中,我们不只是检查改动本身,还在重建它背后的思路。我们提问,另一个人从他走过的路径上作答。
AI生成的代码可能没有这条路径。
它也许打磨精良、技术上无懈可击,却感觉奇怪地无主。作者能描述自己要求了什么,却未必能说清为什么结果是这个形状。审查者于是要承担一部分原本属于作者的工作:重建意图,核查假设,发现一个没人记得是谁做出的决策的隐藏边界。
这正是许多社区讨论中对AI生成的拉取请求感到不安的深层原因。抱怨不仅仅是代码写得不好——糟糕的代码大家都见过。更深的不适在于,社会契约已经改变。
一个人现在可以在几分钟内创建一个大型变更,另一个人却仍然需要花费真实的人类注意力去理解它。在键盘上节省的时间,可能悄悄转移到代码审查、维护、安全工作,或者系统故障的那个深夜——那时有人必须解释那个生成的补丁究竟想做什么。
代码一直是一种沟通。当生成变得近乎免费,注意力就成了稀缺的部分——而注意力属于人。
也许,手艺正在迁移
对一些开发者来说,这一切都不像是失去,而像是终于被允许在他们一直想要的层面上工作。
他们写更少的代码,花更多时间塑造问题本身。他们在确定方案之前比较多种设计,思考用户、架构、故障模式,以及智能体不得逾越的边界。手艺从生产每一个零件,转向指挥整体。
这可以是一种真实的进化。当汇编器取代机器码,当框架取代手工搭建的基础设施,我们并没有因此不再是开发者。软件始终在沿着抽象的阶梯向上攀升。
但每一层抽象,都依赖于有人理解它下面是什么。
指挥AI的开发者仍然需要品味,审查者仍然需要心智模型,架构师仍然需要知道,当整洁的图表遭遇缓慢的网络、损坏的消息、精疲力竭的团队或惊慌失措的用户时,会发生什么。
如果AI写了更多实现,人类判断不会变得不那么重要,而是变得更容易被忽视,也更难以培养。
对这个未来最乐观的想象,不是开发者变得无足轻重,而是我们对只有人才能承担的东西变得更加自觉:情境、关怀、怀疑、责任,以及识别出一个技术上正确的答案对这个特定系统和这些特定的人来说仍然是错误的能力。
留下来,而不是消失
我们还能与AI保持距离吗?
就个人而言,可以。明天我们就能关掉那个面板。但从职业层面来看,这个问题已经复杂得多。期望正在改变,代码库里充满了生成的内容,新的开发者在职业生涯的起点就遇见了AI,而不是在中途。即便是从不使用助手的人,也将越来越多地审查和维护来自AI的代码。
没有一条私人小路能通往AI出现之前的行业。
但也许,"离开"并不是衡量自由的正确尺度。更有意义的问题是:当工具留下时,我们能否依然保持在场?
保持在场,意味着即使所有测试都是绿色的,也要亲自读那个补丁。意味着在答案奏效之后,还要追问为什么。意味着拒绝合并自己无法解释的东西。意味着给初级开发者时间去挣扎,而不是把那段时间视为浪费;给审查者应有的认可,承认他们保护系统免受貌似合理的错误侵害,是一项无形却真实的工作。
这也意味着保留那些没有助手立即作答的时刻——不是作为一种纯洁性仪式,而是作为一种重新听见自己思考的方式。
我们大多数人会继续使用AI。那种解脱是真实的,那些可能性是真实的,那种不安、那种依赖、以及对某种我们曾经热爱的工作之物正在悄然流逝的隐隐恐惧,也同样是真实的。
我们不必在否认与臣服之间二选一。
软件的未来不会由AI写了多少比例的代码来决定,而会在更细小的时刻里被决定:我们是否在接受之前先理解,我们是否选择教导而不只是转发一个答案,我们是否保护另一个人的注意力,以及当生成的代码抵达真实世界时,我们是否仍然承担责任。
AI可以留下来。
我们必须确保,我们也在。





