type
Post
status
Published
date
Jul 20, 2026
slug
summary
tags
认知
成长
AI
category
学习思考
icon
起因是大量公众号和自媒体都在宣传“AI 将取代程序员”,由此引发了思考。在阅读了许多相关资料后,总结出了这篇文章。
程序员的工作有哪些
大多数人认为程序员的工作只是写代码,其实这是一个很大的误解。
如果单独从写代码的角度来看,程序员更像是在做翻译:把人类的自然语言翻译成机器能够执行的语言。从代码和项目管理的角度来看,程序员又像作家和工程师,需要让代码、系统和架构保持清晰、有序且可维护。
大多数软件开发工作的简要流程如下:
需求 → 分解需求 → 选择技术方案 → 编写代码 → (校验、维护、部署和发布)
从提出需求开始,开发人员就需要参与决策,例如评估工时、澄清需求、确认业务逻辑、安排人员以及识别风险等,这一过程的本质,是不断降低信息熵,让原本模糊的需求暴露出更多明确的信息。
复杂性
复杂性,是多个简单状态或行为组合后产生的结果。
软件开发中的复杂性,则来源于多个简单需求、状态和代码之间形成的复杂关系。
一个复杂的方法或程序,通常由多段简单代码或多个简单函数组成。当这些代码相互关联并组合起来时,就会产生相互影响。
例如,在一个业务流程中新增一个简单状态或流程分支,就可能衍生出多种不同的执行路径。流程越多,需要理解和处理的信息就越多,信息熵也会随之增加,最终导致系统更加难以控制,开发和维护成本不断上升。
AI 改善了哪些问题
《人月神话》将软件开发中的困难区分为根本困难和次要困难。
根本困难,是构建由抽象软件实体组成的复杂概念结构;次要困难,则是使用编程语言表达这些抽象实体,并在时间和空间限制内将其转换为机器可以执行的形式。
按照这一划分,AI 对次要困难的处理能力已经获得了显著提升。传统的编码工作正在逐渐从人工编写代码,转变为通过自然语言描述需求,再由 AI 生成代码。
随着模型能力不断提升,AI 对根本困难也能提供一定程度的辅助,例如帮助梳理需求、分析业务逻辑、识别潜在风险以及比较不同技术方案。
AI 还没有解决哪些问题
从汇编语言到高级语言,再到现在使用 AI 编写代码,本质上主要是在降低表达软件概念的成本,也就是改善软件开发中的次要困难。
但是,如何理解业务、抽象业务模型、作出技术决策和业务决策,仍然是软件开发中成本最高、最难解决的根本问题。AI 可以参与和辅助这些过程,但目前还无法直接取代人完成最终决策。
AI 还受到一些客观条件的限制。例如,目前部分模型的最大上下文窗口虽然已经能够达到百万 Token 级别,但上下文容量依然有限。当项目规模不断扩大时,AI 很难一次性获得全部代码、业务背景和历史决策信息,容易因为上下文缺失而产生理解偏差。除此之外,大量使用 Token 的成本目前仍然较高。
AI Coding 实践
目前,我主要使用 Codex 辅助开发。在大多数情况下,AI 的任务完成度很高,代码质量也比较可靠。无论是排查问题还是编写代码,工作效率都得到了明显提升。
在没有 AI 辅助编程的时候,我有很多想法不敢真正实现。因为跨语言、跨领域的技术学习成本很高,往往需要先学习到一定程度,才能获得有效反馈。
而现在借助 AI Coding,对于一些简单页面或陌生技术栈的代码,我几乎不需要先进行系统性学习,也不需要逐行手写代码,就能够快速完成原型并获得反馈,这极大地降低了想法落地的成本。
多次线上排查问题辅助分析与以前传统工具来比提高效率不少,从分析日志到具体修改代码都能做到很好。
工作流程的结构性改变
从概率角度来看,当问题达到一定复杂程度就有概率出现不达预期的问题,即使再怎么校验总会出现尾部事件。(考虑成本问题)AI 很擅长编码,而持续正确编码时候人需要耗费大量注意力,在解决复杂的编码时候如果注意力不集中时做技术决策以及条件边界考虑等很容易出问题。我现在尝试转换工作流程,从以前人工写代码、校验的流程转变成 AI 来写代码用代码辅助校验代码。我很明确知道我的状态不可能每天都达到最优,所以我不能依赖好的状态去完成我的工作,而是用 AI 辅助,比如如果是复杂的代码强制需要补充测试用例,AI 辅助理解业务提问自己是否对业务有理解偏差,以及随机有可能出现的盲区。
总结
在 AI 时代,使用 AI 辅助编码几乎已经成为一种不可逆的趋势。尽管目前的模型仍然存在明显缺陷,未来真正稀缺的,可能不再只是某一项具体的经验或知识,而是人的注意力、判断力和决策能力。