“编程”和“写代码”是同义词吗?如果你问一个刚入行的人,他会说是;如果你问一个写了二十年代码的人,他会沉默很久。Aaron Jack这条《Programming vs Coding - What's the difference?》就是围绕这个看似咬文嚼字、实则决定职业天花板的问题展开的。它长期占据编程类内容的检索头部位置,累计播放超过239万次,并且在AI编程工具爆发的这两年被反复重新提起——因为当“写代码”这件事本身正在被机器接管时,“写代码的人”和“编程的人”的界限,第一次变成了每个人的生存问题。本文带你把这条视频的论证骨架拆开,给它接上四十年的学术脉络,再看清它在哪些地方站得住、哪些地方说得过满。
| 项目 | 内容 |
|---|---|
| 标题 | Programming vs Coding - What's the difference?(编程 vs 编码:区别到底是什么?) |
| 频道 | Aaron Jack |
| 播放量 | 约239.1万次(据系统素材抓取,2026-09-13 UTC) |
| 链接 | https://www.youtube.com/watch?v=CIRGjwYgdT4 |
| 发布日期 | 本次抓取未核实(属长青常销内容,连续多日出现在编程类检索头部) |
Aaron Jack是其频道公开介绍中的前Uber软件工程师,后转型为软件工程职业内容创作者,频道长期聚焦软件工程师的技能结构与职业发展。这条视频是他被引用最多的一期概念辨析内容。
需要说明:本文对视频内部细节的展开,以该视频公开主题与核心论点为框架,结合真实文献进行知识溯源;未能从抓取数据中确证的细节(如具体日期、时长)一律省略,不做编造。
先说这条视频为什么值得两百万次观看。
绝大多数人接触编程,是从“学一门语言”开始的:装好环境,敲下print("hello world"),学会变量、循环、函数。这个阶段的所有行为,都叫coding——把人的想法翻译成机器能执行的语法。它有明确的对错,有即时的反馈,像做数学题。
但任何一个做过真实项目的人都知道,工作中最难的部分从来不是把想法翻译成代码,而是形成那个值得翻译的想法:这个系统该怎么切分模块?这个接口该暴露什么、隐藏什么?这个需求背后的真实约束是什么?性能、可读性、交付时间,三者冲突时砍哪一个?
这些问题的共同点是:没有标准答案,只有权衡。Aaron Jack这条视频的全部论证,就建立在“coding(编码)”与“programming(编程)”的这条分界线上——前者是翻译行为,后者是设计与决策行为。
这个区分听起来像文字游戏,但你往下看会发现:它背后有一整条从1985年延伸到2026年的证据链,而且是当前AI编程浪潮中最被反复验证的一个判断。
按视频的叙事顺序,其核心论点可以整理为五个要点。
视频的第一个动作是做词源与语义的切割。Coding对应的动作是:拿着一个已经定义清楚的东西(算法、伪代码、设计文档、需求规格),用某种编程语言的语法把它实现出来。这个动作的前提是“要做什么、怎么做”已经被决定了。
而Programming对应的动作要大得多:从一个模糊的、经常自相矛盾的现实问题出发,把它变成一个可运行的、可维护的、成本可接受的系统。这个动作里,写代码只占最后一环,前面还有需求澄清、方案设计、架构取舍、风险评估,后面还有调试、测试、重构、维护。
一句话概括:coding是把设计翻译成代码,programming是产生那个设计。
顺着第一点,视频给出了一个对学习者冲击很大的推论:学会一门语言的全部语法,距离能做出一个真实系统,还隔着一整片海域。
这解释了一个普遍现象:为什么刷完语法教程的人,面对“做一个XX系统”的任务时依然手足无措?因为真实任务给的不是“用循环打印九九乘法表”,而是一团模糊的需求。把模糊变清晰的能力——建模能力——不在任何一门语言的语法书里。
视频的第三个要点最有味道:即便你把一个项目的每一行代码都读了一遍,也不等于你真正“拥有”了这个程序。因为代码只是最终产物,而驱动这些代码被写成这个样子的——那些被放弃的方案、踩过的坑、对业务的理解、对未来变化的预判——都不在代码里。
这个论点是整条视频的知识密度之所在,它几乎是在复述软件工程史上一篇著名论文的思想(下文第三节详述:Peter Naur的《Programming as Theory Building》)。一个团队的资深工程师离职带走的东西,比git仓库里的全部代码都多——因为带走的是“理论”。
这条视频之所以在2025-2026年被反复重新讨论,是因为AI把它从“职业发展建议”变成了“时代性判断”。
视频的逻辑是:AI编码工具擅长的,恰恰是coding这一端——语法正确、模式常见、上下文有限的代码生成。而programming这一端——理解一个组织的真实约束、为一个尚不存在的产品做技术选型、为一个模糊需求建立可执行的模型、为结果承担责任——目前仍然牢牢在人这边。
于是职业价值的分布开始移动:纯编码能力的市场溢价在缩水,而“能定义问题、能设计系统、能验收AI产出”的能力在涨价。
落到行动层面,视频的结论是:如果你把所有学习时间都花在刷语言题、背语法上,你是在努力提升一个正在被自动化的技能。正确的配比是把相当一部分时间投到coding之外:读真实项目的代码去重建设计意图、自己从头到尾做完整的小项目、练习把一个模糊需求拆成可实现的方案。
视频的论证骨架并非博主个人发挥,它与软件工程领域几份奠基性文献高度吻合。逐一对上号,你会发现这条“编码/编程”二分法有多扎实。
图灵奖得主(2005年获奖)、丹麦计算机科学家Peter Naur在1985年发表了软件工程史上被引用最多的论文之一:《Programming as Theory Building》(编程作为理论构建)。这篇论文的核心主张与视频要点3几乎逐字吻合:
Naur的洞见在四十年后被AI时代反复引用,原因很简单:大语言模型能生成代码(理论的文本表达),但它是否“拥有理论”,恰恰是当前学术界争论的焦点。视频要点3正是在向普通观众翻译这篇论文。
《人月神话》作者Fred Brooks在1986年的经典论文《No Silver Bullet》(没有银弹)中,把软件的复杂度切成两层:本质复杂度(问题本身固有的困难:需求、概念结构、权衡取舍)与偶然复杂度(工具带来的困难:语法、编译、部署)。Brooks的著名判断是:工具的进步(当时指高级语言、IDE)只能压缩偶然复杂度,本质复杂度岿然不动。
把这个框架套到今天:AI编码工具正在以史无前例的效率消灭“偶然复杂度”(写语法、查API、补样板代码),而“本质复杂度”——决定系统该长什么样——依然压在人身上。这正是视频要点4的学术原型:AI接管的是编码,编程留在人手里。
Joel Spolsky(Stack Overflow联合创始人)2002年提出的“抽象泄漏定律”(The Law of Leaky Abstractions)补上了另一块拼图:一切非平凡的抽象都有泄漏,底层细节总会穿透上层冒出来。这意味着编程者不能只懂上层抽象——TCP出问题时你得懂丢包,React渲染异常时你得懂调和算法。
这条定律解释了为什么“只学语法”的coder和“懂原理”的programmer在排障能力上差距悬朗:后者脑中存着抽象之下的层级,前者只有泄漏发生时的错愕。这也是视频要点2“冰山论”的工业界注脚。
如果说前面都是理论,2025年7月METR(Model Evaluation & Threat Research)发布的一项随机对照试验提供了硬数据:16名资深开源开发者在自己非常熟悉的项目上使用2025年初的AI编码工具,结果预估能提效24%,实际却慢了19%。
这项研究最有趣的发现不是数字本身,而是认知落差:开发者用完AI后主观感觉快了20%,实际慢了19%——预期与现实的偏差接近40个百分点。研究者给出的解释与视频的框架吻合:AI在“coding”环节的流畅,掩盖了它在“programming”环节的失配——它不了解项目的真实约束,生成的代码与维护者脑中的“理论”错位, review与返工吃掉了全部节省。
这项研究被广泛讨论,也常被误读为“AI没用”。更准确的读法是:AI的编码能力与当前项目的理论密度不匹配时,总账可能是负的——这正是coding与programming必须分开算的两本账。
再往上追,Donald Knuth把毕生著作命名为《The Art of Computer Programming》而非“Coding”,绝非偶然。在计算机科学的初创语境里,programming从来指的是把一个现实问题转化为可计算结构的完整智力活动;至于coding,Knuth那一代人甚至有专门的职业分工——那个年代真的存在“编码员(coder)”这个岗位,负责把工程师画好的流程图翻译成机器指令,而“程序员(programmer)”负责设计流程图。
换句话说,视频所说的“编程vs编码”之分,在行业史上是一个真实存在过的岗位分界,只是高级语言普及后两岗合一,词汇才被混用了。这段历史让视频的语义切割有了实证锚点:这不是咬文嚼字,这是被工具进步暂时抹平、又被AI重新撕开的旧断层。
“编码≠编程”的区分本身,证据链非常硬:从Naur(1985)到Brooks(1986)到Spolsky(2002)再到METR(2025),四十年间不同方法论立场的作者从理论、工程、实践、实证四个不同方向收敛到同一结论——产出代码只是软件工作的一小部分,且是正在被自动化的那一部分。这个主张可以视为软件工程领域的稳固共识。
第一,“AI只会coding、不会programming”这句话有保质期。 视频成型于AI编码工具的上一代能力,而2025-2026年代理(agent)式编程工具的进化速度极快。今天AI在“理解大型代码库上下文、提出架构级建议”上的表现,已明显强于METR研究时点。METR研究本身测的是“2025年初的AI”,作者也明言结果不代表未来能力。把“coding/programming”的人机分界当成永久分界,是把一个移动的边界画成了国境线。更稳妥的表述是:分界线存在,但位置每年都在向“编程”一侧推进。
第二,“编程/编码”二分在社区里长期伴随精英主义之争。 “你只是coder不是programmer”这类话术,在开发者社区常年被批评为身份歧视的工具而非严谨的技术判断。事实上大量优秀工程师拒绝这种二分:设计与实现深度交织,很多设计洞察恰恰在“动手写”的过程中涌现(这正是敏捷方法反对“先画完所有图再编码”瀑布模型的理由)。视频为叙述清晰而采用干净二分,但真实工作里两者是纠缠共生的。
第三,信息来源的立场提示。 Aaron Jack的内容创业方向是软件工程师职业辅导,此类频道天然倾向强调“能力结构决定职业成败”的叙事——这与课程产品的价值主张一致。这不妨碍其观点的质量(本文已用独立文献做了交叉验证),但读者应意识到这是有商业立场的内容,而非中立研究报告。
“239万播放”不等于239万人完整看过并理解了内容。该视频属于“标题即观点”的职业话题内容,完播率与争议并存——社区里对它的典型批评正是“概念区分讲得清楚,但落地建议偏笼统”。这个批评公允:视频指出了问题(该往哪儿使劲),但“怎么练”确实需要读者自己补课——这也正是下文存在的原因。
给自己立一条铁律:任何超过五十行的编码任务,动手前先用文字回答三个问题——数据怎么流(信息从哪来、经过什么变换、到哪去);边界在哪(哪些情况不处理、出错时表现为什么);将来什么会变(哪个维度最可能需求变化,就为它留灵活性)。答得出来再写码,答不出来说明你还在coding层面接活,先把programming补上。这三问本质上是在强制自己从“翻译员”切换到“设计师”。
每周挑一个你信任的开源模块(几百行的即可),做三轮:第一轮通读,合上代码,凭记忆画出它的结构图;第二轮对照源码修正你的图,重点看“我以为是X原来是Y”的地方——每一处惊讶都是你脑中缺失的理论;第三轮给自己提一个修改假设(“如果要支持XX,该动哪里”),在脑中推演全部波及面。这个练习直接对应Naur的“理论构建”:读代码练的是语法,重建理论练的才是编程。
具体操作:接到任务后,先自己写一份简短的设计说明(数据流、边界、验收标准),再让AI生成实现;review时把AI的每一次“答非所问”记录下来——那些正是它缺失“理论”的位置,也是你不可替代性的地图。反过来,如果你发现自己说不出为什么这样设计、只会把AI的产出原样合入,请警惕:你正在把自己压缩成一个AI已经胜任的角色。用AI的人分两种:一种让AI替自己编码,一种被AI替代编码。差别不在工具,在谁负责programming。
flowchart TD
Q["写码 ≠ 编程?"] --> C["Coding 编码"]
Q --> P["Programming 编程"]
C --> C1["语法与实现<br/>翻译行为"]
P --> P1["建模与设计<br/>决策行为"]
P --> P2["验收与担责"]
C1 --> AI["AI 高度接管中"]
P1 --> N["Naur 1985<br/>理论构建"]
P2 --> B["Brooks 1986<br/>本质复杂度"]
AI --> G["人的位置上移"]
N --> G
B --> G
G --> L["学习重心: 从语法到理论"]
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
