告别那些从未重要的困难部分
告别那些从未重要的困难部分 2026年9月26日 8分钟阅读 #ai #dev #craft 我读了Dave Kiss为软件工程师写的悼词,脑海中反复回响着一个问题。 我们究竟在告别什么? 糟糕的正则表达式?为糟糕的数据再写一个一次性解析器?毫无明显理由地记住某种古怪的语法?因为构建系统要求某种特定的咒语才能执行你早已理解的操作,而浪费一个下午? 如果死掉的是这些东西,我不确定它们需要一场葬礼。 Dave的论点比标题所暗示的要乐观得多。在文章结尾,他重新打开了棺材。技能仍然属于我们。工程师仍然对交付的东西负责。他写道,也许我们把错误的名字刻在了墓碑上。 我同意其中大部分观点。我只是觉得我们根本不需要那块墓碑。 对我来说,这不像软件工程师的死亡。这更像一次重生。 通行费从来不是目的地 软件工程一直包含大量与被解决问题仅 loosely related(松散相关)的工作。 你需要把一小堆丑陋的数据从一个系统搬到另一个系统,于是你花半天时间学习CSV解析器的边缘情况。你清楚地知道一个服务应该做什么,但首先你得回忆起一个六个月没碰过的框架的语法。你理解了这个bug,但修复方案埋在一个不熟悉的仓库布局、三层间接调用和一个没人写下来的测试命令后面。 我们擅长这些工作,是因为我们不得不如此。其中一些甚至很有趣。最终搞定那个正则表达式,或者找到让整个系统行为异常的那一行代码,确实会带来真正的满足感。 但困难并不等同于价值。 这些大多是我们从理解问题到改变系统之间支付的通行费。它从来不是目的地。如果agent(智能体)能承担更多这种翻译工作,我并没有变得更不像工程师。我有了更多时间去做那些最初就需要工程师来做的事情。 工作转移了 我每天都使用编码agent。它们能比我更快地浏览代码库,几秒钟内生成一个解析器,而且通常记得我本来也要去查的库调用。 它们也会做出错误假设,误解本地约定,自信地使用一个不存在的API,并在测试自己修改的东西之前就宣布胜利。 打字变得更容易了。工程并没有消失。 我仍然需要足够理解系统,才知道该去哪里看。我必须识别出一个看似合理的答案何时是错的。我必须决定一个改动属于应用程序、插件、运维仓库,还是根本不属于任何地方。我必须复现故障、选择权衡、测试结果,并为进入生产环境的东西负责。 Agent可以写解析器。但仍然得有人解释那些糟糕的数据,注意到某一行悄然消失,并决定当现实违反格式时应该发生什么。 这就是软件工程。 这与我之前在《我不键入你读到的每一个字》中写到的转变相同。工作没有消失。它转移了。更少的工作在于亲手产生每一个字符。更多的工作在于方向、判断、验证和责任。 我在学得更多,而不是更少 我理解的一种恐惧是,移除困难的方式也会移除学习。如果机器写代码,人们如何培养判断它是否正确所需的本能? 这种风险是真实的。你可以接受diff(差异)中出现的任何东西,什么都不运行,什么都不学,然后以过去不可能的速度交付垃圾。 你也可以用同样的工具走进以前探索成本过高的计算领域。 我用agent把TypeScript程序重写成Rust,跨仓库追踪生产基础设施,理解不熟悉的数据库行为,构建终端工具,并测试那些过去根本不值得占用一个空闲周末的想法。这些项目结束后,我对Rust、Linux或相关系统的了解并没有减少。Agent处理了足够多的语法和脚手架,让我能继续拉扯那根有趣的线头。 学习循环变得更紧凑了。提问。检查答案。运行代码。破坏它。阅读实现。纠正假设。再试一次。 这不是理解的替代品。这是一种极快的方式,让你找到自己理解的边界。 继续跨越那条边界是我们的责任。如果我们只用agent来逃避了解事物,我们会变成更差的工程师。如果我们用它们更快地到达下一个问题,我们可以变成好得多的工程师。 画布变大了 我觉得最令人兴奋的,不是同样的工单花更少时间。而是完全不同的项目现在能放进一个人的生命里。 软件从想法到第一个可用形式之间,一直有着异常高的成本。哪怕是一个小想法,也可能需要一门新语言、一个框架、一个认证系统、部署、测试和一堆胶水代码,然后你才能发现这个想法到底好不好。 这种成本在想法变成代码之前就扼杀了很多想法。 现在我可以追随更多让编程变得有趣的奇怪小“如果”。如果论坛软件是一个游戏引擎呢?如果终端有声书播放器的工作方式完全像我的音乐播放器呢?如果我用另一种语言重建一个工具,只是为了理解它如何工作呢? 这些不是假设的例子。我构建了它们。它们教会了我实时状态、媒体容器、终端界面、系统编程,以及帮助我的工具的边界。 我不认为这是一个萎缩的职业。我看到一种创意媒介以前所未有的规模变得可用。 仍然有理由担忧 这一切并不意味着每个后果都会是好的。 公司会利用生产力叙事作为裁员的掩护。生成的代码会以我们尚未准备好应对的规模制造故障。从初级工程师到经验丰富工程师的传统路径将会改变,我认为没有人真正知道什么会取代它。可及性也很重要。如果最好的工具每月需要数百美元,一个职业就不能自称刚刚开放。 这些是严重的问题。它们值得的不只是一句“AI是工具”的口号,或者“每个人都会变得十倍生产力”的预测。 但这些问题是关于谁从技术中受益、我们如何教学以及我们如何组织工作的问题。它们不是软件工程已经不复存在的证据。 如果说有什么不同,更快的生成让工程纪律变得更加重要。当生产代码很慢时,坏决策积累得也慢。现在,一个错误假设可以在午餐前变成三千行代码。在那个世界里,清晰的需求、测试、审查、可观测性和品味并不会变得不那么重要。它们是让增加的产出保持有用的唯一东西。 没有葬礼 我理解Dave文章中的悲伤。我们许多人围绕其建立身份认同的工作方式正在迅速改变。我也会怀念其中的一些部分。用困难的方式解决问题可能感觉不可思议,尤其是当困难的方式正是你学会自己有能力解决问题的方式时。 但我不想把障碍与手艺混为一谈。 手艺从来不是记住每个方法签名。从来不是手动输入每一行,或者亲自把每一份格式错误的文档摔打得服服帖帖。那些是当时可用的机制。 手艺是深入理解一个问题,足以改变它。是在信息不完整的情况下做出权衡。是注意到一个技术上能工作的系统中那个错误的音符。是为结果承担责任。 我们仍然需要所有这些。现在我们得以在更多领域、用更多工具,把这些应用到更多问题上。 所以,我还没准备好埋葬软件工程师。 我们正在学习一种新的工作方式。我们正在构建一层新的技术。