重新定义 Slop:生成速度碾压工程判断
Slop(AI 劣质产物/垃圾输出)并不是单纯指由 AI 生成的代码,也不仅仅是某种能被轻易嗅探出的具体瑕疵。它的本质在于:生成跑在了判断之前(generation outruns judgment),即“思考尚未完成,产出却已看似完备”。当歧义被凭空猜测抹平、权衡取舍全凭运气、工程责任彻底缺位时,哪怕代码输出了,理解却从未发生。
真正的危险并非机器做出了糟糕的选择,而是工程师根本没有意识到这里存在需要抉择的权衡。他们未曾触及歧义,未曾感受约束,也未曾挖掘出足以改变系统设计的边缘场景(edge cases)。所有粗糙之处都在生成时被粉饰抹平,导致系统内部的“未知的未知”(unknown unknowns)始终处于未知状态。然而软件的本质正是技术决策、产品权衡、运维策略与用户体验决策的真实记录。失去对这些抉择的审视与感知,就无法建立真正的主人翁意识(ownership);一旦放弃担责,工程师便不再是在做真正的工程设计,而只是沦为在自动化流水线上麻木敲击 Merge 按钮的“代码猴子”。
英文原文
[Speaker 1]: everyone, my name is gabriel martina as i go by gabble. i'm an engineering manager and residents, slop, boward and AG to i, and i'm here to talk about slop. i'm here to talk about slop because i'm rather passionate about the topic. and by passionate, i mean, angry the term slop has been beaten to a hope. but the thing it points that has long been around only now it happens at work speed. [Speaker 0]: 没有没有没有没有 ah. [Speaker 1]: slop is what happens when judgment when generation now runs judgment. slop is not ai generated code. i don't mean to define it, a some concrete objective thing that can easily be snifed out, although there are tells slop is output that looks finished before the thinking is finished. it is work. product is outks ambiguity was cleared with guesses where tradeoffs we're left a chance where ownership was not taken. output was produced. sure, but understanding was not. and the real danger is not simply that the machine made about choice, the dangers that the engineer never noticed that there was a choice to make. they never hit the ambiguity. they never felt the constraint, they never discovered the educase that would have changed the design. the work arrived already smooth over. and with it, the unknown unknowns stayed unknown, but software is a record of choices, technical choices, product choices, operational choices, user facing choices. if we do not see those choices, we cannot own them. and if we do not own them, we are not really engineering. we are just the accepting output. we are just a code monkey hitting the merge button.
清醒审视现状:代码即负债与系统的泥潭定律
我们无意宣称 AI 工具本身存在过错,其发展进步令人瞩目,但整个工程界必须从对 AI 的狂热与沉醉中清醒过来。智能体(Agents)展现的“魔法”能够快速搭起界面骨架、编写常规功能,但它们绝无法替代人类核心工作:界定关键优先级、消化并理清业务歧义、对系统进行长期担责,以及在系统架构层面保持克制——尤其是明确什么东西不应该构建。在一切皆可迅速生成的时代,决定“不构建什么”比以往任何时候都更加关键,否则产品就会膨胀为毫无逻辑的意面式怪物。
代码即负债(Code as a Liability: 写入代码库的每一行代码都是后续维护成本的累加,最优的代码往往是不写代码)。生成代码的边际成本正在急剧归零,然而理解一套软件程序的成本丝毫没有降低。虽然我们从未苛求任何个人能在脑海中孤立掌握庞大系统的每一个局部细节,但核心业务流、边界契约、数据模型以及核心产品行为必须被人脑透彻理解。正如 Edsger Dijkstra 所言,代码行数不应被视作“产出量”,而应被视作“支出量”。AI 极大降低了花费行数、新增文件和堆砌抽象层级的门槛,但这笔账单终将通过认知困惑、无人敢碰的功能死角以及如迷宫般臃肿的 B2B 软件界面兑现。如果一个系统本身已经是一团泥潭(Big Ball of Mud),AI 智能体绝不会将系统从中拯救出来,而只会以数十倍的速度堆砌出一个更庞大的烂泥球。
英文原文
[Speaker 1]: i'm not the periothat's come here to it to tell you that AI is bad. it's not bad. okay. i'm here to describe some of the patterns that have led to our drunk and ai stupid. it's absolutely understandable given the advancements mates since december twenty five, how we got to where we are, but we need ds to diet of it in. we need to slow down. we need to sober up. agents can seem to make magic and the internet would make you believe it is so they can write code scuffled screens, and with right tuning can build whole features or systems, but they cannot replace the human work of deciding what matters understanding what is being built, interpreting ambiguity, owning system, m the long hohoexercising judgment and restraint at the system mararchitecture level. and arguably the most important important, knowing what not to build slop is not about AI as a tool. rather, it is about the absence of judgment. so let's talk a little bit about what got us here in a world where anything is possible, deciding what to build is more important than ever. people have got overly excited and build bohemets of spagheti product nonsense. it's almost as if they forgotten that any line of code you write is a liability that the best code is no code at all. the cost of creating code is falling, but the cost of understanding a software program is not. and i want to be clear here. i'm not saying every line of code needs to be personally red, blessed and understood in isolation that has never really been. the standard large systems have always contained more detail than any one person can hold in their head, but the logic has to be understood. the main flows, the boundaries, the data model and product behaviors have to be understood. good software has a kind of harmony to it, not in some precious aesthetic sense. in a practical sense, the code should reflect the shape of the domain. AI can generate code, but it cannot magically give a messy system coherence, and the agent can operate with much more effectively inside a code base that has structure patterns, clear boundaries and rationnow. but if the system is already a big ball of mud, the agent does not rescue you from the mud. it just builds the ball bigger, faster. just because you can generate another component, does not mean the product needs another component. the extra had this great line, if we get count lines of code, we would not think of them as lines produced. but as lines spent, it is a cost of building AI makes it easier to spend lines. it makes it easier to spend on files, abstractions and complexity. but at the end of the day, you on the bill that bill shows up as confusion, pttoflows features, nobody wants to judge because they don't fully understand. it shows up as product surfaces that technically do everything, but feel like amazed think about that special kind of beto bloated beat to b software, where every task requires training, where every screen has twelof escape patches. and nobody can explain whether the complexity is there, because users needed it or because teams just kept that tting things teams should be held accountable for work.
原型错觉与交付焦虑:生成廉价与评估昂贵的结构性失衡
在建立明确责任机制前,原型开发的高速极大地扭曲了各方预期。如今任何人都能在一小时内拼凑出一个可点击的交互原型,促使非工程背景的利益相关方(Stakeholders)产生“软件构建轻而易举、最难骨头已被啃下”的错觉。然而他们未曾涉足代码实现,根本看不到真正决定工程成败的“深水区”与“最后一公里”:非正常链路的处理、新老业务的平滑内聚、模糊需求的推敲对齐、人工功能验证以确保交互体验并非垃圾。这些凝结着工程判断的环节,恰恰最为消耗人类心智与时间。如同开源社区对待 Pull Request 的尖锐反思:别人轻飘飘送来一个“免费”的 PR,实则是要求受审者在未来几十年为其负责维护、编写文档、覆盖测试并承担一切衍生后果。
外部期望与团队内部的盲目竞争共同催生了严重的表现焦虑(Performance Anxiety)。部分不推敲细节、不深究规范的工程师依靠 AI 疯狂推高 PR 提交频次,导致严谨细致的开发者在表象上显得进展迟缓;这种焦虑反向逼迫团队仓促合并不求甚解的代码,使短期指标凌驾于系统的长期健康之上。动辄数千行变更的巨型 PR 根本超出了人类大脑的有效审查上限。更为荒谬的是,给出一份简短的需求大纲,AI 往往回吐出长达二十页辞藻华丽却缺乏实质思考的文档;原本应由经办人解决的歧义并未消解,反倒被包装成更大体积的半成品转移给审查者。代码生成极其廉价,但代码评估极其昂贵(Generation is cheap, but evaluation is expensive)。一旦产出量突破了团队有效评审与校验的临界阈值,AI 带来的绝非提效,而是严重的组织与工程吞吐瓶颈。
英文原文
[Speaker 1]: they are producing accountability is the key word here taking ownership over the product of your building and having a way to tie that to positive or negative reinforcement just in the mere fact of knowing that someone else will review your work, will force engineers to pay just a little bit more attention to the finer details and be a bit more meticulous, especially if there are accountability, meriicthat can be made visible for each chunk of work product. we're entering the age of bloated loloated with spagetu UX on order order worworkinds of bitter b erp s. you may have ever been trained to use today. anyone can vigoat an application in an hour and end up with a working clicicicable prototype and that has changed expectations. because once people see software appear that quickly, they start to believe software can be built that quickly. they see a few props turn into screens. they see a terminal obsession produce something that looks like real. and to be fair, sometimes it is real enough to be useful. sometimes that prototype is a great way to explore an idea, but the problem is that stakeholders do not live in the code base off that stakeholders do not live in the code base, often experienced that prototype as evidence that the heart part is over. they're not thinking about the parts where real battle harden engineers earin their keep. it's outside the happy path figuring out how to go inhesively inteagree, a new feature ure set the work involved in clarifying requirements. the work of actually manually testing a feature set to ensure that it works as a human should expect. and that the UX is in complete garbage. they're not at all thinking about the most time consuming bits, the human parts, the last mile, where the judgment lives. this is where someone has to read the code test the behavior, othe tratraoffs nonotice the missing requirements and decide whether this thing deserves to be a part of the system. here's a tweet that emphasizes the point. i'm trying to make you it costs the creative seeal life, who, on the topic of full request, says, you say, oh, it's free. no, it's not free. where you're doing is asking me to maintain it for you to document it for you to test it for you to maintain it for you for the next twenty five years. that is not free. and this really struck a cord with me. i couldn't have set it better. it's easy to eat of pr, but who has the own that thing whois responsible for the repercussions of what that means? so external pressures from stakeholders, coupled with pressures of competing with slappt msters begeget smoooocho slappo. i'm sure most of you have seen this in the wild were the bad engineers, the ones who don't review the details that don't refine the spect that aren't detail oriented and the producing more faster. the folks who pay attention to the detail and go above and beyond are the ones that might seem like they're doing less and moving slower. how this propagates is a yields performance anxiety where an team environments can pressure engineers to merge pr faster than they can judge, leading to code being merged without full understanding short term thinking, getting that pr in winds over long term cold health. i personally felt this anxiety where engineers around me were emerging at an incredible pace. and i felt constant anxiety that i was not moving fast enough. and i can admit that it led me emerge code that i didn't necessarily review with a level of detail that i normally do or should have. i've seen horror stories of people merging code. they don't fully understand or haven't even tested themselves at the end of the day. we're all human. we're driven by incentive. and if incentives are driving people to get ps in, then we're going to be be in for a rute. awakening rewards should be centred around producing value, elegant wealth, factred, pragmatic system design and around clarity of test and evaluation harnesses. there's just something that really grinds my ears about seeing a multi thousand line PR. there's no way in hell that a human can fully understand all the important bits of a changed that big. it is. our job is engineers to optimize for this new world to decompose needs into its simplest chunks, which lends to understanding understanding simpler code surfaces and controlling of our code bases. AI is supposed to have been eradicating jobs, and engineers are supposed to be moving at the rate of token production. so there is a lot of pressure to be in producing more faster. what AI is really doing is producing more faster, more characters that eat more human time. i've seen this happened in the most mundanways ways. you give someone ten bullets of scope a few user journeys, something intentionally light weight. they come back with with twenty pages document. maybe it looks polished with fancy pros, but now i have to spend hours figuring out whether there's any real thinking, incited that is AI generated work. in the worst sense, it does not clarify the problem. it expanded. it took ambiguity that should have been resolved by the person dodoing work, work and handit back as a larger art effect for other stakeholders to do it in code of ague task becomes a large PRA. small feature becomes a pilofiles. the output arrives with the shape of completion, but the real work has just moved to the reviewer, and that is the part that we need to be honest about generation is cheap, but evaluation is expensive. if AI produces more than humans can possibly evaluate. it has not accelelerated the team. it has created a bottleer.
对抗认知过载:坚持工程基石与约定优于配置
应对生成过载的关键并非盲目追逐所谓 Agentic 概念热词,而是牢固锚定软件工程六十年来沉淀的基本准则。将任务拆解为小巧、原子化且人脑可推理的单元依然不可动摇。从机器码、汇编语言到高级语言,再到垃圾回收机制的演进,软件历史始终在抽象底层实现;AI 固然在抽象命令式编码细节,但这绝不意味着人类无需把控系统全局。相反,为了应对成千上万行自动生成的实现细节,系统架构图(Architecture Diagrams)与声明式设计的重要性空前凸显——它们不是事后粉饰的装饰性文档,而是将服务边界、数据流转、状态转移与故障模式清晰呈现的高维透视镜,帮助人类压缩审查表面积,将认知聚焦于主干流程。
认知开销(Cognitive Overhead: 工程师在进行有效修改前,理清代码归属、模式选用与实现意图所必须支付的心智税)是决定开发效能的核心。当 AI 能随手生成五种风格迥异的实现模式时,认知税不仅没有免除,反被成倍转嫁给审查者。消除 Slop 滋生空间的根本解法,在于坚守强约定、标准与单一事实来源。以经典框架 Ruby on Rails 践行的“约定优于配置”(Convention Over Configuration)为例,它激进地收敛了设计决策面,将十种可能的构建方式归一为一种公认范式;即使时隔数年重回代码库,开发者依然能瞬间洞察意图而无需重新逆向架构。在智能体开发时代,具备唯一确定性路径的环境反而是最具优势的,因为智能体不会在五花八门的实现方案中迷失方向,人类也无需耗费精力去反解无序的实现意图。
英文原文
[Speaker 1]: one thing that i find particularly annoying is twitter. you've got all these self proclaimed experts and clickbaters summarizing some talk or promoting some truth that we've always known as if there's some novel genius idea. the rough loop was one of those. it was made to sound like a novel agentic breakthrough when it's just a wild somehow. we've completely forgotten that lines of code is a garbage metric for productivity, but then we decided that it's different than deciding the engineer who burns the most tokens must be producing the most. we used to break a feature into small atomic pieces. we could reason about small enough to hold in your head and actually review. now we typed two sentences and expect a whole not fully thought out feature set back in one shot without really understanding. it is what it is. we're asking for the key point. i want a highlight here is that we do not forget the ground troops. we've always know sixty years of software wisdom hasn't been invalidated by ai composable code, good patterns and solid practices remain essential. a friend recently challenged me and why i spend so much time thinking about guard rail for agents, coding, conventions, architectural styles and and constraints around how the system should be shaped. his question was, basically, what's the point if the agent writes the code, why should we care about what the code looks like? and to an extent, i agree, there will eventually be a world where much implementation details completely abstracted away from humans that has been the soft, the direction of software from the beginning. we went from machine code to assembly, which another ablevel abstraction. i've tus to see then java, then languages like rube where the primary design was programmher happiness, just like in languages, we built abstractions for garbage collection and manual poinners. ai is abstracting away the imperative bits. it does not remove need to understand and how system comes together. coheciand food. this is why diagrams 's matter so much, not as decorative documentation after the fact, but as a way of making systems eligible, when agents can generate thousands of lines of implementation detail. humans need a compress review, surface service boundaries, data flows, stay transitions and failure modes. a good diagram lets us see the shape of the system in a way code often obscures. we can leave the main process or workflow as the reviewable surface with implementation details push to the ves ves. that is i have vowed for declative code and architecture patterns that create layers. humans can actually reason about goal. als is not just code generation. goal is human knowledge, human understanding and human review. we need to optimize for that human layer. carcargave overhead is attacks. every engineer has to pay before they can make a meaningful change. that is the time spent figuring out where code belongs, which pattern to follow. and what proper implementation actually means. ai does not remove this tax unless taines it exererates, an asian can generate five plausible patterns in five different styles. and now the human reviewer has to reverse engineer, not just the code has to retent behind it. an proper conventions in is more easily gropped. the answer to this is conventions, standards, documented flows, small reviewable surfaces and clear ownership boundaries and definitions of done. the more obvious, the path, the less room there is for slop to hide. i want to give special recognition here to rails and its place in my heart. rails matters here because it shows what happens when a framework aggressively reduces decision surface when conventions reduce your overhead, rather than ending up with ten different ways to structure the same contecept to end up with one. it may not be perfect in everyone's subjective opinion, but it's understood. and it works in my career between my first and second, four agyes with rails. i had a gap of four years. it was beautiful to come back after that gap that they see that the same patterns and defacctto libraries were still the same patterns and defacctto libraries. i got hop right back into a code base and immediately understand intent without needing to pass through architecture. it allows engineers to easily move between projects latterally with minimal rampop. the same camp beatten said about other language equissistems have a script environments with a single correct way of doing things are superior for agentic development, because agents aren't confused by dozens of competing approaches. this is well supported by the official rails doctrine. it explicitly ames ames optized for programmer, happiness and convention over configuration as cord pillars, and describes convention as a way to eliminate recurring decisions and lowering the barrier to getting started. it is the reduction of cognitive overoverod.
从狂热到编排:将工程判断固化至自动化工作流
正是基于上述工程反思,团队选择构建工作流工具 Ork。这绝非认为“应对 AI 的答案是堆砌更多 Agent”,更不幻想工程判断力能被彻底自动化,而是为了阻断反复出现的系统性失效模式:AI 能够以极快速度产出局部代码,但周边的工程纪律——包括前期规划拆解、上下文管理、方案权衡比对以及审查验证机制——却持续处于缺位状态。
在对抗 Slop 的实践中,高水平工程师其实一直在重复执行一套必要的人类工序:细化分解任务、严密管理上下文、评估权衡选项,并确保生成产物以团队可理解、可维护的逻辑合流进代码库。现代工具链的使命正是将这些成熟的人类工程纪律熔铸进软件工作流之中。它并非消解人类正确性责任的黑盒,而是一个在让 AI 承担繁重搬砖任务的同时、切实捍卫人类工程决策与责任归属的系统。软件研发的终局绝不是“更盲目、更快速的凭感觉写代码”(Vibe Coding),而是兼具严谨判断力的系统级工程编排(Orchestration with judgment)。
英文原文
[Speaker 1]: everything i've talked about today is what let us to build dork. not only because we think the answer, not only because we think the answer is more agents and definitely not because we think engineering judgment can be automated away. we built art because we kept seeing the same failure pattern ai could generate code, but the surrounding discipline was still missing the planning the review that veryerial checks the context management. over time, we found ourselves repeating the same human processes to fight slop, break down the work, manage context, wait out your options and make sure the output enters the code base in the way the team that can can still reason about ork is taking those lessons and baking them into the workflow. it is not a magic box that makes correctness disappear as a human responsibility. it is a system for preserving that responsibility. while letting agents do more of the lift. the goal is not to shiship more generated code. the goal is the ship software that is still coo here and tested maintainable and owned after the generation happens. because the future is not vibe, coding better faster. the future is orchestration with judgment. thank you, offer your time and remember, [Speaker 0]: don't get sloppy.