{"id":4607,"date":"2026-07-17T17:20:13","date_gmt":"2026-07-17T17:20:13","guid":{"rendered":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/07\/17\/the-cost-of-saying-yes-has-changed\/"},"modified":"2026-07-17T17:20:13","modified_gmt":"2026-07-17T17:20:13","slug":"the-cost-of-saying-yes-has-changed","status":"publish","type":"post","link":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/07\/17\/the-cost-of-saying-yes-has-changed\/","title":{"rendered":"The cost of saying yes has changed"},"content":{"rendered":"<p class=\"wp-block-paragraph\">The most expensive part of a small feature request used to be writing the code. Now it\u2019s usually the meeting about whether or not to write the code.<\/p>\n<p class=\"wp-block-paragraph\">That\u2019s a real shift, and it quietly breaks a lot of engineering instincts. Engineers learn early that most \u201csmall asks\u201d aren\u2019t small: they need tests, a rollout plan, someone to think through the edge cases and own the behavior after it ships. A two-hour change can become a two-week distraction if it touches the wrong part of the system. So we push back. Is this really needed? Does it belong in this release? Does it change a contract we already agreed to? I\u2019m not giving that instinct up.<\/p>\n<p class=\"wp-block-paragraph\">But it rests on an assumption that\u2019s quietly breaking, which is that writing the first version of the code is the expensive step. For a specific class of change, it no longer is. If you can tell those changes apart from the rest, you can replace \u201cis this in scope?\u201d with a question you can answer in thirty minutes instead of a two-day debate.<\/p>\n<h2 class=\"wp-block-heading\">The debate often costs more than the patch<\/h2>\n<p class=\"wp-block-paragraph\">Here\u2019s a pattern I keep seeing. Someone asks for a small change such as surfacing a <code>last_active_at<\/code> timestamp that already exists in the backend on a settings page. The team spends forty minutes in a thread. One person says it sounds risky. Someone remembers a related migration from two years ago. Someone mentions the deadline. Eventually we land on \u201cprobably a day or two, could be more,\u201d with low confidence, primarily because nobody has actually tried it.<\/p>\n<p class=\"wp-block-paragraph\">That process made sense when trying was the expensive part. You had to stop what you were doing, load the context into your head, make the change by hand, write the tests, then discover the second- and third-order consequences. When the first attempt is cheap, defending the boundary can cost more than crossing it.<\/p>\n<p class=\"wp-block-paragraph\">An agent can produce that first patch in the time the thread takes to warm up. It\u2019s not free and definitely not automatically correct. But it is cheap enough that the smart move is often to stop guessing and look at a real diff.<\/p>\n<h2 class=\"wp-block-heading\">The first patch is a price check, not the product<\/h2>\n<p class=\"wp-block-paragraph\">The mistake is to treat the generated patch as the deliverable. It isn\u2019t. It\u2019s a probe. It turns an abstract scope argument into a concrete artifact you can interrogate:<\/p>\n<ul class=\"wp-block-list\">\n<li>Does it touch the files you expected, or does it sprawl across five packages?<\/li>\n<li>Are the tests obvious, or does the change resist being tested?<\/li>\n<li>Does it preserve the existing abstractions?<\/li>\n<li>Does it quietly require a new product decision?<\/li>\n<li>Would you be comfortable owning this behavior six months from now?<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">Those are better questions than \u201cdoes this feel like scope creep?\u201d because now you\u2019re arguing from evidence instead of vibes. If the <code>last_active_at<\/code> field comes back as a four-line diff with a passing test, ship it. The debate was the expensive part. However, if that same request comes back touching the auth middleware, you\u2019ve learned the request was never small. Not only that, you learned this in thirty minutes instead of two days.<\/p>\n<p class=\"wp-block-paragraph\">This is not letting the AI decide. It\u2019s using the AI to make human judgment cheaper and better-informed.<\/p>\n<h2 class=\"wp-block-heading\">Cheap to write is not the same as cheap to own<\/h2>\n<p class=\"wp-block-paragraph\">Here\u2019s the trap, and it\u2019s the most important distinction of the AI era. A <strong>change is not cheap just because the code was cheap to generate. It\u2019s cheap only if a human can confidently review and own the result.<\/strong><\/p>\n<p class=\"wp-block-paragraph\">A thousand-line diff that technically passes but nobody wants to own is not a cheap change. It\u2019s a deferred cost. So the dividing line in that case isn\u2019t \u201ccan an agent write this?\u201d It\u2019s \u201ccan a person validate it?\u201d<\/p>\n<ul class=\"wp-block-list\">\n<li>Adding a display field that already exists in the backend is usually cheap.<\/li>\n<li>Changing authorization behavior is not cheap, no matter how clean the diff.<\/li>\n<li>Refactoring a well-tested helper is usually cheap.<\/li>\n<li>Changing data-retention semantics is not cheap.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">Plenty of changes still deserve a hard no even when the code is trivial. This includes anything that moves the product contract, creates a support burden, or touches privacy, billing, or compliance. AI lowers the cost of <em>producing<\/em> a candidate. It does nothing to lower the cost of <em>owning<\/em> one.<\/p>\n<h2 class=\"wp-block-heading\">Move scope discipline closer to the evidence<\/h2>\n<p class=\"wp-block-paragraph\">Traditionally, scope discipline happened before implementation, because implementation was the expensive thing to protect. Now some of that discipline can move to review. That doesn\u2019t mean skipping planning. It means being precise about which planning actually pays off.<\/p>\n<p class=\"wp-block-paragraph\">Before relitigating a small change, ask for a constrained attempt. The constraints are the whole point.<\/p>\n<p class=\"wp-block-paragraph\">Produce the smallest possible patch. Keep it behind the existing feature flag. Don\u2019t change the public contract. Add or update tests. List every file you touched and call out anything risky.<\/p>\n<p class=\"wp-block-paragraph\">If the agent can\u2019t produce a clean patch under those constraints, the request was bigger than you thought, and you know it carries a real ownership cost before anyone commits to it. If it can, that tells you something too. Either way you\u2019ve replaced \u201cis this in scope?\u201d with \u201chere\u2019s what it costs. Do we want to pay it?\u201d<\/p>\n<h2 class=\"wp-block-heading\">The new skill is pricing uncertainty<\/h2>\n<p class=\"wp-block-paragraph\">The best engineers in an AI-assisted world won\u2019t be the ones who say yes to everything, and they won\u2019t be the ones who reflexively say no. They\u2019ll be the ones who can price uncertainty fast. They\u2019ll know when a request is a product decision wearing an implementation costume, when review will be harder than writing, and when a change is small enough that the fastest responsible answer is to just try it.<\/p>\n<p class=\"wp-block-paragraph\">That last one is genuinely new. \u201cTry it and see\u201d used to mean pulling a developer off other work. Now, for the right kind of task, it means handing an agent a bounded assignment and using the result to make a better call. Less time guessing, more time supervising. Less time treating implementation as a black box, more time evaluating concrete artifacts.<\/p>\n<p class=\"wp-block-paragraph\">Scope creep is still real. But \u201cno, because any new code is too expensive\u201d is a much weaker argument than it was two years ago. The cost of producing code has dropped. The cost of understanding, reviewing, and owning it didn\u2019t. So the question worth asking shifted from \u201cis this more work?\u201d to \u201cwhere\u2019s the real cost?\u201d And sometimes, for a small, bounded change, the real cost is just finding out.<\/p>\n<p class=\"wp-block-paragraph\">The cost of saying yes has changed. The cost of saying no should change with it.<\/p>\n<p>The post <a href=\"https:\/\/github.blog\/engineering\/the-cost-of-saying-yes-has-changed\/\">The cost of saying yes has changed<\/a> appeared first on <a href=\"https:\/\/github.blog\/\">The GitHub Blog<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>The most expensive part of a small feature request used to be writing the code. Now it\u2019s usually the meeting [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":94,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[8],"tags":[],"class_list":["post-4607","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-github-engineering"],"_links":{"self":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/4607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/comments?post=4607"}],"version-history":[{"count":0,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/4607\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media\/94"}],"wp:attachment":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media?parent=4607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/categories?post=4607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/tags?post=4607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}