首页 › programming › 写码≠编程:239万人的分界课

写码≠编程:239万人反复观看的分界课,到底讲透了什么

概述

“编程”和“写代码”是同义词吗?如果你问一个刚入行的人,他会说是;如果你问一个写了二十年代码的人,他会沉默很久。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编程浪潮中最被反复验证的一个判断。

二、核心主张拆解:视频讲了什么

按视频的叙事顺序,其核心论点可以整理为五个要点。

要点1:编码是“翻译”,编程是“设计”

视频的第一个动作是做词源与语义的切割。Coding对应的动作是:拿着一个已经定义清楚的东西(算法、伪代码、设计文档、需求规格),用某种编程语言的语法把它实现出来。这个动作的前提是“要做什么、怎么做”已经被决定了。

而Programming对应的动作要大得多:从一个模糊的、经常自相矛盾的现实问题出发,把它变成一个可运行的、可维护的、成本可接受的系统。这个动作里,写代码只占最后一环,前面还有需求澄清、方案设计、架构取舍、风险评估,后面还有调试、测试、重构、维护。

一句话概括:coding是把设计翻译成代码,programming是产生那个设计。

要点2:一门语言的语法,是整座冰山最小的那一角

顺着第一点,视频给出了一个对学习者冲击很大的推论:学会一门语言的全部语法,距离能做出一个真实系统,还隔着一整片海域。

这解释了一个普遍现象:为什么刷完语法教程的人,面对“做一个XX系统”的任务时依然手足无措?因为真实任务给的不是“用循环打印九九乘法表”,而是一团模糊的需求。把模糊变清晰的能力——建模能力——不在任何一门语言的语法书里。

要点3:会读代码不等于拥有程序背后的“理解”

视频的第三个要点最有味道:即便你把一个项目的每一行代码都读了一遍,也不等于你真正“拥有”了这个程序。因为代码只是最终产物,而驱动这些代码被写成这个样子的——那些被放弃的方案、踩过的坑、对业务的理解、对未来变化的预判——都不在代码里。

这个论点是整条视频的知识密度之所在,它几乎是在复述软件工程史上一篇著名论文的思想(下文第三节详述:Peter Naur的《Programming as Theory Building》)。一个团队的资深工程师离职带走的东西,比git仓库里的全部代码都多——因为带走的是“理论”。

要点4:AI正在把这条分界线变成断层

这条视频之所以在2025-2026年被反复重新讨论,是因为AI把它从“职业发展建议”变成了“时代性判断”。

视频的逻辑是:AI编码工具擅长的,恰恰是coding这一端——语法正确、模式常见、上下文有限的代码生成。而programming这一端——理解一个组织的真实约束、为一个尚不存在的产品做技术选型、为一个模糊需求建立可执行的模型、为结果承担责任——目前仍然牢牢在人这边。

于是职业价值的分布开始移动:纯编码能力的市场溢价在缩水,而“能定义问题、能设计系统、能验收AI产出”的能力在涨价。

要点5:对学习者的意义——别把练习全花在“翻译”上

落到行动层面,视频的结论是:如果你把所有学习时间都花在刷语言题、背语法上,你是在努力提升一个正在被自动化的技能。正确的配比是把相当一部分时间投到coding之外:读真实项目的代码去重建设计意图、自己从头到尾做完整的小项目、练习把一个模糊需求拆成可实现的方案。

三、知识与理论溯源:这条论证链上的真实文献

视频的论证骨架并非博主个人发挥,它与软件工程领域几份奠基性文献高度吻合。逐一对上号,你会发现这条“编码/编程”二分法有多扎实。

3.1 Peter Naur:编程是理论构建(1985)

图灵奖得主(2005年获奖)、丹麦计算机科学家Peter Naur在1985年发表了软件工程史上被引用最多的论文之一:《Programming as Theory Building》(编程作为理论构建)。这篇论文的核心主张与视频要点3几乎逐字吻合:

Naur的洞见在四十年后被AI时代反复引用,原因很简单:大语言模型能生成代码(理论的文本表达),但它是否“拥有理论”,恰恰是当前学术界争论的焦点。视频要点3正是在向普通观众翻译这篇论文。

3.2 Fred Brooks:本质复杂度无法被工具消除(1986)

《人月神话》作者Fred Brooks在1986年的经典论文《No Silver Bullet》(没有银弹)中,把软件的复杂度切成两层:本质复杂度(问题本身固有的困难:需求、概念结构、权衡取舍)与偶然复杂度(工具带来的困难:语法、编译、部署)。Brooks的著名判断是:工具的进步(当时指高级语言、IDE)只能压缩偶然复杂度,本质复杂度岿然不动。

把这个框架套到今天:AI编码工具正在以史无前例的效率消灭“偶然复杂度”(写语法、查API、补样板代码),而“本质复杂度”——决定系统该长什么样——依然压在人身上。这正是视频要点4的学术原型:AI接管的是编码,编程留在人手里。

3.3 Joel Spolsky:抽象泄漏定律(2002)

Joel Spolsky(Stack Overflow联合创始人)2002年提出的“抽象泄漏定律”(The Law of Leaky Abstractions)补上了另一块拼图:一切非平凡的抽象都有泄漏,底层细节总会穿透上层冒出来。这意味着编程者不能只懂上层抽象——TCP出问题时你得懂丢包,React渲染异常时你得懂调和算法。

这条定律解释了为什么“只学语法”的coder和“懂原理”的programmer在排障能力上差距悬朗:后者脑中存着抽象之下的层级,前者只有泄漏发生时的错愕。这也是视频要点2“冰山论”的工业界注脚。

3.4 METR实证研究:AI让资深开发者更慢了19%(2025)

如果说前面都是理论,2025年7月METR(Model Evaluation & Threat Research)发布的一项随机对照试验提供了硬数据:16名资深开源开发者在自己非常熟悉的项目上使用2025年初的AI编码工具,结果预估能提效24%,实际却慢了19%。

这项研究最有趣的发现不是数字本身,而是认知落差:开发者用完AI后主观感觉快了20%,实际慢了19%——预期与现实的偏差接近40个百分点。研究者给出的解释与视频的框架吻合:AI在“coding”环节的流畅,掩盖了它在“programming”环节的失配——它不了解项目的真实约束,生成的代码与维护者脑中的“理论”错位, review与返工吃掉了全部节省。

这项研究被广泛讨论,也常被误读为“AI没用”。更准确的读法是:AI的编码能力与当前项目的理论密度不匹配时,总账可能是负的——这正是coding与programming必须分开算的两本账。

3.5 更早的根脉:Knuth与“程序即作品”

再往上追,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万人完整看过并理解了内容。该视频属于“标题即观点”的职业话题内容,完播率与争议并存——社区里对它的典型批评正是“概念区分讲得清楚,但落地建议偏笼统”。这个批评公允:视频指出了问题(该往哪儿使劲),但“怎么练”确实需要读者自己补课——这也正是下文存在的原因。

五、认知提升与实用启示:三条可操作的建议

建议1:每个任务动手前,先写“设计三问”

给自己立一条铁律:任何超过五十行的编码任务,动手前先用文字回答三个问题——数据怎么流(信息从哪来、经过什么变换、到哪去);边界在哪(哪些情况不处理、出错时表现为什么);将来什么会变(哪个维度最可能需求变化,就为它留灵活性)。答得出来再写码,答不出来说明你还在coding层面接活,先把programming补上。这三问本质上是在强制自己从“翻译员”切换到“设计师”。

建议2:用“理论重建法”读代码,而不是“语法阅读法”

每周挑一个你信任的开源模块(几百行的即可),做三轮:第一轮通读,合上代码,凭记忆画出它的结构图;第二轮对照源码修正你的图,重点看“我以为是X原来是Y”的地方——每一处惊讶都是你脑中缺失的理论;第三轮给自己提一个修改假设(“如果要支持XX,该动哪里”),在脑中推演全部波及面。这个练习直接对应Naur的“理论构建”:读代码练的是语法,重建理论练的才是编程。

建议3:把AI当成“编码员”而不是“结对程序员”

具体操作:接到任务后,先自己写一份简短的设计说明(数据流、边界、验收标准),再让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["学习重心: 从语法到理论"]

延伸阅读

  1. Peter Naur《Programming as Theory Building》(1985)——本文溯源部分的核心文献,可在Google Scholar检索标题获取原文;如果你想深读一篇论文来理解“程序是理论的物化”,四十年内无出其右。
  2. METR:Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity(2025年7月)——AI时代“编码提速、编程失配”的标志性实证研究,可在metr.org检索标题阅读全文。

参考来源

  1. Programming vs Coding - What's the difference? | Aaron Jack — 本期解读视频,播放量数据来自2026-09-13系统素材抓取
  2. Peter Naur - Wikipedia — 《Programming as Theory Building》作者、2005年图灵奖得主的生平与学术贡献
  3. Joel Spolsky - The Law of Leaky Abstractions — 抽象泄漏定律原文(2002)
  4. METR — 2025年“AI使资深开源开发者实际变慢19%”随机对照研究的发布方

本文由「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 等场景全覆盖。

51学通信知识星球海报-扫码加入