1 line
65 KiB
HTML
1 line
65 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>You shipped it fast. But did you ship it right? - Stack Overflow</title><link rel="preconnect" href="https://www.googletagmanager.com"><script type="importmap">{"imports":{"#entry":"/_nuxt/BG5UOTHT.js"}}</script><script src="https://www.googletagmanager.com/gtag/js?id=G-DTTX7JCXEJ" async data-hid="head-ga"></script><style>.p-article table{border-collapse:collapse;border-spacing:0;margin:2em auto;overflow:scroll;word-break:normal;word-break:keep-all;-webkit-overflow-scrolling:touch;width:100%}.p-article table th{font-weight:700}.p-article table td,.p-article table th{border:1px solid var(--black-100);padding:6px 13px}.p-article table tr:nth-child(2n){background-color:var(--black-100)}.p-article table tr:hover{background-color:var(--blue-200)}.p-article table ol,.p-article table ul{margin:0;padding:0}.p-article .wp-block-image{margin:2em 0;text-align:center}.p-article figcaption{color:var(--black-500);font-size:.8em;line-height:1.3em;margin:25px auto 0;max-width:620px}</style><style>nav a[data-v-df5a0bb6],nav a[data-v-df5a0bb6]:visited,nav button[data-v-df5a0bb6]{color:var(--black)!important;display:block;padding:3px 0}nav a[data-v-df5a0bb6]:hover,nav button[data-v-df5a0bb6]:hover{color:var(--blue-500);text-decoration:underline}nav li>ul[data-v-df5a0bb6]{border-left:3px solid var(--black-225);margin-top:3px;padding-left:10px}.sub-link[data-v-df5a0bb6]{color:var(--black-400)!important}section h3[data-v-df5a0bb6]{color:var(--black-400);font-size:16px;font-weight:500;margin:12px 0 24px}@media screen and (max-width:470px){.sections[data-v-df5a0bb6]{flex-direction:column}}</style><style>.header[data-v-7442e526]{position:relative}.header a[data-v-7442e526]{opacity:0;padding:0 12px;position:absolute;right:100%}.header a[data-v-7442e526]:before{content:"#"}.header:hover a[data-v-7442e526]{opacity:1}</style><style>.modal-fade-enter-active[data-v-5f82d3f8],.modal-fade-leave-active[data-v-5f82d3f8]{transition:opacity .3s ease}.modal-fade-enter-from[data-v-5f82d3f8],.modal-fade-leave-to[data-v-5f82d3f8]{opacity:0}.modal-fade-enter-to[data-v-5f82d3f8],.modal-fade-leave-from[data-v-5f82d3f8]{opacity:1}.bs-product[data-v-5f82d3f8],.s-modal--dialog[data-v-5f82d3f8]{transition:transform .4s cubic-bezier(.22,1,.36,1),opacity .3s ease}.modal-fade-enter-from .bs-product[data-v-5f82d3f8],.modal-fade-enter-from .s-modal--dialog[data-v-5f82d3f8]{opacity:0;transform:scale(.9)}.modal-fade-enter-to .bs-product[data-v-5f82d3f8],.modal-fade-enter-to .s-modal--dialog[data-v-5f82d3f8],.modal-fade-leave-from .bs-product[data-v-5f82d3f8],.modal-fade-leave-from .s-modal--dialog[data-v-5f82d3f8]{opacity:1;transform:scale(1)}.modal-fade-leave-to .bs-product[data-v-5f82d3f8],.modal-fade-leave-to .s-modal--dialog[data-v-5f82d3f8]{opacity:0;transform:scale(.9)}</style><link rel="stylesheet" href="/_nuxt/entry.DB50Bfqr.css" crossorigin><link rel="stylesheet" href="/_nuxt/Footer.CBW8JzNG.css" crossorigin><link rel="stylesheet" href="/_nuxt/Modal.CnPlmjv2.css" crossorigin><link rel="stylesheet" href="/_nuxt/SanityContent.WzRGkE7M.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/2026/05/12/you-shipped-it-fast-but-did-you-ship-it-right/_payload.json?_b=ab1d439d-5148-4134-bea5-c969aa31c5ff"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BG5UOTHT.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/hePW80VL.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DjS0xbvg.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CNW9Osv5.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/HclGiUj8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D1qpH6Pu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ULRhyFxa.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BGze3w87.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Ccl0v3aC.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BaUt5Xm8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/6lvfEp2t.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CkvdZEJQ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/mHzno_Pf.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C3gn72eF.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/9a-JT7cb.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C6vr6lee.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/GwyP2inT.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C_xuQalc.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DiHhmrg_2.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DUTxQXBQ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DwgX_HA1.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C1msyEQU.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D2GSWYk82.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DjQPAAOC2.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D-ERr1vr.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DvvsxRGC2.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DH3WTdaO2.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B8TO32Ue2.js"><script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-domain-script="d06435e0-17fb-4659-9a14-1930a6e0be80-test" defer data-hid="head-onetrust-sdk"></script><script type="module" src="/_nuxt/BG5UOTHT.js" crossorigin></script><link rel="dns-prefetch" href="https://www.google-analytics.com"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DtQhN6jM.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DFd1IrEG.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/RPxFwT8h.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ODC8zPNr.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DQT0gUW1.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CuX0iEMe.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/Datf-Mgm.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/B9kHqgaw.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/wzadwL2c.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BXR6Gh-7.js"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#FF5E00"><meta name="twitter:site" content="@stackoverflow"><meta name="twitter:card" content="summary_large_image"><meta name="robots" content="Index, Follow"><meta name="description" content="Why AI-accelerated teams keep breaking production — and what the ones that don't are doing differently"><meta property="og:type" content="website"><link rel="icon" href="/favicon.ico" sizes="any"><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="image_src" href="/apple-touch-icon.png"><meta property="og:url" content="https://stackoverflow.blog/2026/05/12/you-shipped-it-fast-but-did-you-ship-it-right/"><link rel="canonical" href="https://stackoverflow.blog/2026/05/12/you-shipped-it-fast-but-did-you-ship-it-right/"></head><body class=""><script data-hid="body-theme-select">let stackex_theme = localStorage.getItem('stackex-theme'); if (stackex_theme) document.body.className += ' ' + stackex_theme</script><div id="__nuxt"><!--[--><!--[--><div class="nuxt-loading-indicator" style="position:fixed;top:0;right:0;left:0;pointer-events:none;width:auto;height:3px;opacity:0;background:#FF5E00;background-size:0% auto;transform:scaleX(0%);transform-origin:left;transition:transform 0.1s, height 0.4s, opacity 0.4s;z-index:999999;"></div><!--[--><!--[--><header class="bb bc-black-300 py12 ps-relative z-nav"><div class="p-wrapper d-flex w100 mx-auto ff-sans"><div class="flex--item4"><a href="/" class="d-inline-flex ai-center h:bg-black-150 bar-md p6"><svg width="32" height="32" viewBox="0 0 32 32" class="svg-icon IconGlyph32 fc-black-600" aria-hidden="true"><path d="M23.8 17.22a18 18 0 0 0-2.2 3.87l-.02.06q-.83 2.04-1.15 4.3v.03A18 18 0 0 0 20.4 30H4v-4.55h14.23l.1-.56L4.6 21.1l1.14-4.4 13.88 3.85.2-.44-12.46-7.43 2.2-3.94 12.65 7.54.3-.37L12.17 5.2 15.28 2l10.53 10.86 1.1 1.15q-1.75 1.4-3.11 3.21"></path></svg><span class="fc-black-500 fw-bold fs-body3 bl ml12 pl12 bc-black-200">Blog</span></a></div><form class="print:d-none flex--item as-center ml-auto mr12 md:mr0"><div><div class="ps-relative sm:ps-absolute t100 l0 r0 mt1 sm:d-none"><div id="search" class="bg-black-100 sm:pl12 sm:pt12 sm:pr12 sm:pb12"><div class="ps-relative"><input placeholder="Find something…" class="s-input s-input__search fs-body2" type="text" autocomplete="off" spellcheck="false"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconSearch s-input-icon s-input-icon__search" aria-hidden="true"><path d="M8.25 1a7.25 7.25 0 0 1 6.67 10.1l-1.17-1.17a5.75 5.75 0 1 0-.94 1.82l1.07 1.07 4.15 4.15-1.06 1.06-4.15-4.15A7.25 7.25 0 1 1 8.25 1"></path></svg><!----></div></div><!----></div><div class="d-none sm:d-block"><button type="button" class="s-btn__clear s-topbar--item p12 s-btn s-btn__icon" role="menuitem" aria-label="Search" aria-haspopup="true" aria-controls="search" title="Click to show search"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconSearch" aria-hidden="true"><path d="M8.25 1a7.25 7.25 0 0 1 6.67 10.1l-1.17-1.17a5.75 5.75 0 1 0-.94 1.82l1.07 1.07 4.15 4.15-1.06 1.06-4.15-4.15A7.25 7.25 0 1 1 8.25 1"></path></svg></button></div></div></form><div class="flex--item d-flex jc-end"><div class="sm:d-none d-flex jc-end fl1 mr24"><a class="s-btn s-btn__clear p8" href="https://stackoverflow.com"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconGlyph" aria-hidden="true"><path d="M14.83 10.7a10 10 0 0 0-1.31 2.21l-.02.03q-.5 1.17-.68 2.46v.02a10 10 0 0 0-.03 2.58H3v-2.6h8.5l.06-.32-8.2-2.17.69-2.5 8.29 2.19.12-.25L5 8.1l1.32-2.26 7.55 4.3.19-.2-6.2-6.11L9.75 2l6.29 6.2.66.66a10 10 0 0 0-1.86 1.84"></path></svg></a><a class="s-btn s-btn__clear p8" href="/feed"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconRSS" aria-hidden="true"><path d="M4 14a2 2 0 1 1 0 4 2 2 0 0 1 0-4M2.53 7.53A10.5 10.5 0 0 1 12.48 18h-1.5A9 9 0 0 0 2 9.02v-1.5zM2.4 2.02A16 16 0 0 1 18 18h-1.5c0-8-6.5-14.48-14.49-14.49v-1.5z"></path></svg></a><a class="s-btn s-btn__clear p8" href="https://stackoverflow.com/users/email/settings/current"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconMail" aria-hidden="true"><path d="M16.5 4c.78 0 1.42.59 1.5 1.35v9.15h-1.5V16H3.35A1.5 1.5 0 0 1 2 14.64L2 14.5V5.35A1.5 1.5 0 0 1 3.36 4L3.5 4zm-5.04 6.73c-.84.72-2.08.72-2.92 0L3.5 6.42v8.08h13V6.42zM9.51 9.6c.28.24.7.24.98 0l4.77-4.09H4.74z"></path></svg></a></div><div class="flex--item fl-shrink0 s-spinner s-spinner__sm as-center fc-black-300"><div class="v-visible-sr">Loading…</div></div></div></div></header><!----><!--]--><div class="p-wrapper bbr-lg mx-auto bg-white pt32 pb64 sm:pt12"><div class="d-flex lg:fd-column"><div class="flex--item2 ps-relative lg:d-none mr48 sm:mr0"><div><nav class="fs-subheading"><ul class="list-reset sm:d-flex sm:fw-wrap"><li class="my4"><a href="/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg width="32" height="32" viewBox="0 0 32 32" class="svg-icon IconBlog32 mr12" aria-hidden="true"><path d="M28 2a2.5 2.5 0 0 1 2.5 2.5v23l-.01.26A2.5 2.5 0 0 1 28 30H7a5 5 0 0 1-5-4.74V16h7.52V4.5a2.5 2.5 0 0 1 2.5-2.5zM4.5 25a2.5 2.5 0 0 0 5 0v-6.5h-5zm7.52 2.5H28v-23H12.02zM26 25.06H14v-2h12zm0-4H14v-2h12zM26 17H14v-2h12zm-6-4h-6V7h6z"></path></svg> Everything </a></li><li class="my4"><a href="/contributed/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg width="32" height="32" viewBox="0 0 32 32" class="svg-icon IconUser32Stack mr12" aria-hidden="true"><path d="M15.78 17c.9.07 1.69.64 2.04 1.48l3 7.2a2.4 2.4 0 0 1-2.06 3.31l-.16.01H5.8a2.4 2.4 0 0 1-2.4-2.5h15.05l-2.91-7H8.87L6.99 24H4.3l2.3-5.52A2.4 2.4 0 0 1 8.8 17h6.98m6.02 0c1.52 0 2.89.95 3.42 2.37l1.75 4.7A3.65 3.65 0 0 1 23.55 29h-.24v-2.5h.24c.8 0 1.35-.8 1.08-1.55l-1.75-4.7c-.17-.45-.6-.75-1.08-.75H20V17zM12.52 3.2a6 6 0 0 1 5.67 5.97v.31a6 6 0 0 1-5.97 5.67l-.31-.01a6 6 0 0 1-5.66-5.66v-.3c0-3.3 2.67-5.98 5.97-5.98zM20 3.19a5.99 5.99 0 0 1 0 11.97v-2.5a3.49 3.49 0 0 0 0-6.97zM12.22 5.7a3.48 3.48 0 0 0 0 6.95 3.48 3.48 0 0 0 0-6.95"></path></svg> The Heap </a></li><li class="my4"><a href="/productivity/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg class="svg-icon mr12" height="32" viewBox="0 0 32 32" width="32" aira-hidden="true"><path d="m15.1689 17.7533-1.7685 1.7676-2.7998-2.7998-7.49318 7.4941-1.76758-1.7675 8.37696-8.378.8848-.8838zm14.8301 1.2471h-2.5v-6.2891l-10.4541 10.4541-1.7685-1.7685 1.7685-1.7676 9.1299-9.1289h-7.1748v-2.5h10.999z" fill="currentColor"></path></svg> Productivity </a></li><li class="my4"><a href="/ai/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg width="32" height="32" viewBox="0 0 32 32" class="svg-icon IconAssistant32 mr12" aria-hidden="true"><path d="M13 4.5H7.75c-.69 0-1.25.56-1.25 1.25v5.6a3.75 3.75 0 0 1-3 3.67v2.04c1.71.35 3 1.86 3 3.68v5.51c0 .69.56 1.25 1.25 1.25H13V30H7.75A3.75 3.75 0 0 1 4 26.25v-5.51c0-.7-.56-1.25-1.25-1.25H1v-6.9h1.75c.69 0 1.25-.56 1.25-1.25V5.75A3.75 3.75 0 0 1 7.75 2H13zM24.25 2A3.75 3.75 0 0 1 28 5.75v5.59c0 .69.56 1.24 1.25 1.25H31v6.9h-1.75c-.69 0-1.25.55-1.25 1.24v5.52A3.75 3.75 0 0 1 24.25 30H19v-2.5h5.25c.7 0 1.25-.56 1.25-1.25v-5.52a3.75 3.75 0 0 1 3-3.67V15a3.75 3.75 0 0 1-3-3.67V5.75c0-.69-.56-1.25-1.25-1.25H19V2zM13 16h-3v-3h3zm9 0h-3v-3h3z"></path></svg> AI/ML </a></li><li class="my4"><a href="/open-source/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg class="svg-icon mr12" height="32" viewBox="0 0 32 32" width="32" aira-hidden="true"><path d="m16.4121 1.48145c3.7482.19029 6.8135 2.96082 7.46 6.57031l-2.4082.79785c-.3088-2.74485-2.6366-4.87881-5.4639-4.87891-3.0373.0001-5.4997 2.46272-5.5 5.5v4h8.7002v.0293h9.7998v16.5h-26v-16.5h5v-4.02832l.01074-.41309c.21473-4.22646 3.70946-7.58877 7.98926-7.58886zm-10.9121 26.01855h21v-11.5h-21z" fill="currentColor"></path></svg> Open Source </a></li><li class="my4"><a href="/business/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg class="svg-icon mr12" height="32" viewBox="0 0 32 32" width="32" aira-hidden="true"><path d="m21.4998 4.49561h2.5v7.50489h4.9942v18.0117h-4.9961v-.0117l-15.99808-.001h-5v-16h5v-11.99901h13.49998zm2.5 23.01659h2.4942v-13.0117h-2.4942zm-13.5-.0117h11v-23.00001h-11zm-4.99998-.001h2.5v-11h-2.5zm13.49998-5.499h-6v-2h6zm0-4h-6v-2h6zm0-4h-6v-2h6zm0-4h-6v-2.00001h6z" fill="currentColor"></path></svg> Business Hub <!----></a></li></ul><ul class="list-reset pt12 mt16 bt bc-black-200 sm:d-flex sm:fw-wrap"><li class="my4"><a href="/company/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg width="32" height="32" viewBox="0 0 32 32" class="svg-icon IconGlyph32 mr12" aria-hidden="true"><path d="M23.8 17.22a18 18 0 0 0-2.2 3.87l-.02.06q-.83 2.04-1.15 4.3v.03A18 18 0 0 0 20.4 30H4v-4.55h14.23l.1-.56L4.6 21.1l1.14-4.4 13.88 3.85.2-.44-12.46-7.43 2.2-3.94 12.65 7.54.3-.37L12.17 5.2 15.28 2l10.53 10.86 1.1 1.15q-1.75 1.4-3.11 3.21"></path></svg> Company </a></li><li class="my4"><a href="/releases/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg width="32" height="32" viewBox="0 0 32 32" class="svg-icon IconStar32 mr12" aria-hidden="true"><path d="M19.6 12.03h11.65l-9.42 6.85.98 3.04-3.44-2.5-.48-1.5 1.47-1.06 3.2-2.33h-5.78l-.56-1.73L16 9.04l-1.22 3.76-.56 1.73H8.44l3.2 2.33 1.47 1.06-.56 1.73-1.22 3.76 3.2-2.32 1.44-1.05 8.16 5.93 1.3 3.99L16 23.1l-9.43 6.85 3.6-11.08-9.42-6.85H12.4L16 .95z"></path></svg> Releases </a></li></ul><ul class="list-reset pt12 mt16 bt bc-black-200 sm:d-flex sm:fw-wrap"><li class="my4"><a href="/podcast/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg width="32" height="32" viewBox="0 0 32 32" class="svg-icon IconSound32 mr12" aria-hidden="true"><path d="M26.31 5.69a14.6 14.6 0 0 1 0 20.62l-1.77-1.77a12.1 12.1 0 0 0 0-17.08zM16 7v18l-2.14.88L8.04 20H4.5v-2.5H2V12h6.04l5.82-5.88zm-6.56 7.13c-.23.24-.55.37-.88.37H4.5v3h4.18q.45.05.76.37l4.06 4.1V10.03zM21.6 10.4a7.9 7.9 0 0 1 0 11.2l-1.76-1.78a5.4 5.4 0 0 0 0-7.66z"></path></svg> Podcast </a></li><li class="my4"><a href="/newsletter/" class="px12 py6 d-block bar-pill d-flex ai-center ws-nowrap fc-black-500 h:bg-black-200"><svg width="32" height="32" viewBox="0 0 32 32" class="svg-icon IconMail32Stack mr12" aria-hidden="true"><path d="M2.53 24.39c0 .63.51 1.15 1.15 1.15h20.34v2.5H3.68a3.65 3.65 0 0 1-3.65-3.65V10h2.5zM28.52 4c1.3 0 2.36.98 2.48 2.24l.02.26v13.94h-2.5V7.94l-8.18 6.8a3.65 3.65 0 0 1-4.67 0L7.5 7.94v12.51h21v2.5H7.4l-.25-.01a2.4 2.4 0 0 1-2.14-2.14L5 20.55V6.5l.01-.26A2.5 2.5 0 0 1 7.5 4zm-11.25 8.82c.43.35 1.05.35 1.48 0l7.58-6.32H9.7z"></path></svg> Newsletter </a></li></ul></nav><div class="mt16 bt bc-black-200 pl12 pr12 pt24 md:d-none"><div class="tt-uppercase fc-light fs-body1 mb12"><a class="fc-light h:fc-black-500" href="https://stackoverflow.co/"> Stack Overflow Business </a></div><a class="d-block pb12 fw-light fc-black-500 h:fc-blue-500" href="https://stackoverflow.co/internal/?utm_source=so-owned&utm_medium=blog&utm_campaign=nav-side-bar"><div class="fc-black-500 wmx2"><strong class="fw-medium">Stack Internal</strong>: the knowledge intelligence layer that powers enterprise AI.</div></a><a class="d-block pb12 fw-light fc-black-500 h:fc-blue-500" href="https://stackoverflow.co/data-licensing/?utm_source=so-owned&utm_medium=blog&utm_campaign=nav-side-bar"><div class="fc-black-500 wmx2"><strong class="fw-medium">Stack Data Licensing</strong>: decades of verified, technical knowledge to boost AI performance and trust.</div></a><a class="d-block pb12 fw-light fc-black-500 h:fc-blue-500" href="https://stackoverflow.co/advertising/employer-branding/?utm_source=so-owned&utm_medium=blog&utm_campaign=nav-side-bar"><div class="fc-black-500 wmx2"><strong class="fw-medium">Stack Ads</strong>: engage developers where it matters — in their daily workflow.</div></a></div></div></div><article class="post flex--item7 wmn0 lg:wmx100 lg:pb48" itemscope itemtype="https://schema.org/Article"><header class="mb32 pt12"><time datetime="2026-05-12T16:41:40.025Z" class="flex--item tt-uppercase fw-bold fs-body1 fc-black-500 d-flex mb16" itemprop="datePublished"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconCalendar va-middle mr6 mtn1" aria-hidden="true"><path d="M7.6 2h4.8V.6H14V2h4v16H2V2h4V.6h1.6zM3.5 16.5h13v-8h-13zm4-2H6V13h1.5zm3.25 0h-1.5V13h1.5zm3.25 0h-1.5V13H14zm-6.5-3H6V10h1.5zm3.25 0h-1.5V10h1.5zm3.25 0h-1.5V10H14zM3.5 7h13V3.5H14v1.89h-1.6V3.5H7.6v1.89H6V3.5H3.5z"></path></svg> May 12, 2026</time><h1 class="fs-display2 lh-xs ff-stack-sans-headline mb24" itemprop="name">You shipped it fast. But did you ship it right?</h1><p class="fs-title fc-black-500 wmx6" itemprop="abstract">Why AI-accelerated teams keep breaking production — and what the ones that don't are doing differently</p><!----></header><div itemprop="articleBody" class="s-prose fs-body2"><!--[--><p>I want to start with something that's probably already happened to you.</p><p>You merged a PR last week. The AI-generated code looked clean — readable diff, tests passing, nothing obviously wrong. You approved it. And then two days later something broke in production in a way nobody saw coming.</p><p>If that hasn't happened to you yet, you've been lucky. Because I see it constantly, and there's a pattern to it.</p><p>AI tools have genuinely changed how fast teams can produce code. That part is real. But they haven't changed how fast a codebase can safely absorb that code. And the gap between those two things? That's where incidents happen.</p><h2 class="header" id="h2-171317956f30" _key="a25f9a535d21" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h2-171317956f30" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>The Bug That Looks Like It Isn't There</strong><!--]--></span></h2><p>The failure mode has a name now: the illusion of correctness.</p><p>AI-generated code is syntactically clean. It follows patterns. It compiles. It passes the tests. In code review, it looks like something a solid engineer wrote. The problem is what's underneath it — the assumptions it baked in that you can't see by reading.</p><p>Here are the four types I see break production most often.</p><p></p><p><strong>Boundary assumptions.</strong> "This field is always present." Except it isn't. One of your downstream services had a bad deploy eight months ago and started dropping it under certain conditions. Tests pass in staging. Load test looks fine. Then at 2am, a real order hits a real edge case.</p><p></p><p><strong>Concurrency assumptions.</strong> "This call is idempotent." It's not. That's how a customer gets charged twice — on code that looked completely correct in review. The AI saw the retry pattern, but it didn't know the domain rule about what happens when you call that endpoint twice.</p><p></p><p><strong>Domain assumptions.</strong> "These two order statuses are equivalent." They're not. Your fulfillment team and your billing team have always treated them differently. Nobody wrote it down as an enforceable rule. The AI couldn't have known, because it wasn't in the code.</p><p></p><p><strong>Security assumptions.</strong> "This request is coming from an internal service, so it's trusted." Your internal network isn't your security boundary. This gets baked in silently and sails through every review that trusts clean-looking output.</p><p></p><p>The code compiles. The PR looks tidy. And then production data and real users expose the missing rules.</p><p>The thing that makes this particularly rough is it doesn't show up in code review. It shows up in incidents.</p><h2 class="header" id="h2-55cc3b70a8e2" _key="aa9df13515ae" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h2-55cc3b70a8e2" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>Why Going Faster Can Actually Slow You Down</strong><!--]--></span></h2><p>Here's the mental model I use with my teams.</p><p>Every system has a change absorption capacity — how much new code it can safely take in before things start breaking. That capacity is set by your contracts, your invariant test coverage, your observability, your coupling. When your velocity of incoming change starts outrunning that capacity, you get instability. Not right away, but reliably.</p><p>The part that surprises people: when you push harder on a system that can't keep up, your actual delivery speed often drops. The time you saved generating code faster gets eaten up two or three times over in debugging, rollback, and rework.</p><p></p><blockquote><em>AI raises how fast you can produce changes. Refactoring raises how fast you can safely absorb them. The gap between those two numbers is your real risk exposure.</em></blockquote><p></p><p>The teams I've seen genuinely win with AI-assisted development aren't using better models. They've built an engineering system that can absorb AI-generated change without invisibly accumulating debt.</p><h2 class="header" id="h2-c4278cada67e" _key="23b957f9eb42" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h2-c4278cada67e" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>Refactoring Isn't Cleanup. It's a Multiplier.</strong><!--]--></span></h2><p>Most teams think about refactoring wrong. They treat it as one of three things: cleanup, tech debt payoff, or a roadmap item that gets pushed every quarter.</p><p>None of those framings help when you're trying to move fast safely.</p><p>The right framing: refactoring is how you reduce change cost so your system can absorb more frequent, higher-volume changes without accumulating invisible fragility. In an AI-accelerated environment, that makes refactoring a multiplier on velocity — not a tax on it.</p><p>What continuous refactoring actually buys you: stable boundaries so changes propagate predictably, less coupling so nothing cascades unexpectedly, clearer ownership so there's no ambiguity about who's responsible for what, testable invariants so code review stops doing the job tests should be doing, and better observability so drift gets caught before customers report it.</p><p>The anti-pattern: accelerating AI-assisted delivery on top of unresolved tech debt. You get faster accumulation of inconsistencies, more production regressions, and net velocity that actually goes backwards because rework swallows everything.</p><h2 class="header" id="h2-209aa9b6330b" _key="8cb02e5dc53d" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h2-209aa9b6330b" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>Four Guardrails That Make Speed Stick: CATS</strong><!--]--></span></h2><p>I've been using a framework called CATS across my teams and in conference talks. It maps four practices that, together, let you move fast without breaking things.</p><h3 class="header" id="h3-d09bdae2d7c5" _key="33c3ff561ae2" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h3-d09bdae2d7c5" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>C — Contracts</strong><!--]--></span></h3><p>Make boundaries explicit. API specs, event schemas, data contracts, ownership definitions.</p><p>Here's a scenario I've seen play out more than once. Three teams are consuming a shared pricing service. No formal contract — just a shared understanding and a doc nobody keeps updated. One engineer uses AI assistance to refactor the response shape. Looks clean, tests pass, it merges. Two days later, two of those three teams are getting paged because fields they depended on changed meaning or disappeared.</p><p>That's not an AI problem. That's a missing contract.</p><p>Once you have a contract — a versioned API spec, an event schema with field meanings and ownership — the internals can evolve freely. The contract is the stable surface. And AI generates code against an explicit contract much more reliably than it guesses implicit conventions.</p><p>Every time your team has said "I thought that field was always there" — that's a contract candidate. Write it down. Not just the shape: the meaning, the valid values, and who you call when it breaks.</p><h3 class="header" id="h3-1234a17c41fb" _key="2e65fb9fa3b6" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h3-1234a17c41fb" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>A — Automated Verification</strong><!--]--></span></h3><p>Tests that enforce domain invariants, not just happy-path coverage. Schema validation in CI. Security checks in the pipeline.</p><p>AI is great at generating test code. It's genuinely not good at knowing which domain rules to test, because those rules live in incident post-mortems and people's heads — not in the codebase.</p><p>Common failure: team generates a test suite with AI assistance, coverage numbers look solid, team trusts it. But the coverage is over the cases AI could infer from code patterns. The cases that break production are the ones nobody wrote down.</p><p>Your job is to name the invariants. AI's job is to cover them. Schema validation in CI catches contract drift at merge time instead of in production. Automated security checks catch the spots where "this is internal, so it's safe" gets baked in without anyone questioning it.</p><h3 class="header" id="h3-2912108bc60a" _key="d6dac1283a89" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h3-2912108bc60a" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>T — Telemetry</strong><!--]--></span></h3><p>Logs, metrics, traces — that tell you what's actually happening, not what you think is happening based on the code.</p><p>Code review tells you what the code says. Telemetry tells you what it does. Those are different things. When you're merging more PRs faster, the gap between what code says and what it does can widen fast.</p><p>Real example: a team ships a refactored order processing flow. Reviews look fine, load tests pass. But a small change in how null values are handled means a specific type of edge-case order starts failing silently — no error, just wrong state. Without an alert on order state transitions, they find out three days later from a customer service ticket.</p><p>With drift detection, you catch that at 0.3% error rate. Not at "wait, why did revenue drop on Thursday?"</p><p>Beyond catching problems: feature flags, canary thresholds, a rollback checklist your team can actually run at 11pm. If rolling back requires a four-person call, you're not safe enough to be operating at AI velocity.</p><h3 class="header" id="h3-d7159ef7108b" _key="b44b154cd406" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h3-d7159ef7108b" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>S — Simplification</strong><!--]--></span></h3><p>Continuous reduction of hidden coupling and unclear ownership — not as a project, but as a habit bundled into feature work.</p><p>If refactoring requires a roadmap conversation, it won't happen. The teams that actually do this bundle it with feature work. You're already in that file, there's no coordination cost. Touch it, improve it, move on.</p><p>AI is useful here too — it's good at spotting duplication and suggesting where contracts should be. But you still need to validate its structural suggestions against domain knowledge. AI can spot the pattern. You know whether the boundary it's suggesting actually makes sense in your system.</p><p>And measure the right thing. Not how clean the code looks. Not lines changed. Is it getting cheaper to make changes over time, or more expensive? That's the signal that tells you whether simplification is actually working.</p><h2 class="header" id="h2-460d469217ec" _key="cb01986bd348" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h2-460d469217ec" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>What This Looks Like in Practice</strong><!--]--></span></h2><p>Let me contrast the two modes concretely.</p><p><strong>Without CATS: </strong>AI generates a service. The PR looks great. No formal API contract. Downstream teams integrate based on what they observe. Three quarters later, someone refactors the response shape. Two teams get paged simultaneously on a Friday night. The post-mortem says "communication breakdown." The real cause is a missing contract.</p><p></p><p><strong>With CATS: </strong>AI generates the same service. Before it merges, someone writes the contract — the API spec, field meanings, ownership, versioning. Schema validation goes into CI. When the refactor happens three quarters later, the contract version gets bumped and consumers find out via a CI failure, not a production incident.</p><p></p><p>The second mode isn't slower. Once the contract exists, every future change is faster because the blast radius is bounded and visible. The investment pays forward across every PR that follows.</p><blockquote><em>Fast without CATS: speed becoming fragility. Fast with CATS: speed compounding.</em></blockquote><h2 class="header" id="h2-eb37c61f3401" _key="beab3aeb69f1" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h2-eb37c61f3401" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>A Two-Week Sprint to Get Started (Without Pausing Features)</strong><!--]--></span></h2><p>This doesn't have to be a big initiative. Here's what two focused weeks looks like — no roadmap conversations, no features paused.</p><h3 class="header" id="h3-97f8ce595b78" _key="a5d5125a4059" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h3-97f8ce595b78" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>Week 1: Contracts and Safety</strong><!--]--></span></h3><p><strong>Find your two or three brittle boundaries.</strong> Where do things break most often? Where has your team said 'I thought that was always the case'? Those are your contract candidates.</p><p></p><p><strong>Write the contracts.</strong> Not just the shape — the meaning. What does each field represent? What are valid values? Who owns it? Who do you call when it breaks?</p><p></p><p><strong>Add contract enforcement to CI.</strong> Schema validation on merge, as a gate.</p><p></p><p><strong>Write one invariant test.</strong> Pick the domain rule that, if broken, causes the most damage. One test suite. Not the whole backlog — just one.</p><p></p><h3 class="header" id="h3-d415a36e58b7" _key="cf9766033a47" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h3-d415a36e58b7" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>Week 2: Observability and Simplification</strong><!--]--></span></h3><p><strong>Add drift detection dashboards and alerts.</strong> Track the failure modes from week 1. Know when something's going wrong at 0.3%, not when a customer reports it.</p><p></p><p><strong>Remove one high-risk coupling point.</strong> The shared dependency that causes the most ripple when it changes. Extract it, clarify ownership.</p><p></p><p><strong>Add safe rollout defaults.</strong> A feature flag template, canary thresholds, a rollback checklist your team can actually use without convening a call.</p><p></p><p><strong>Measure.</strong> PR size, incidents per change, coordination overhead. Baseline now. Check in at week 4.</p><p></p><p>This won't solve everything. But it creates visible, measurable risk reduction in two weeks — and it starts building the habits that make fast delivery sustainable.</p><p></p><p></p><h2 class="header" id="h2-e704d2238b73" _key="aafe8107260e" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h2-e704d2238b73" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>The Shift That Matters</strong><!--]--></span></h2><p>The platform engineering community has spent years building better tools — internal developer platforms, golden paths, service meshes, standardized observability stacks. All of that infrastructure assumes teams can ship at high velocity without the system slowly turning brittle on them.</p><p>AI just changed the velocity side of that equation dramatically. The safety side hasn't kept up.</p><p>The organizations that are handling this well have a few things in common. Contracts are first-class artifacts, not afterthoughts. Domain invariant testing is a distinct practice, not a coverage metric. Observability actually tells them what's happening, not just what the code says. And refactoring is continuous — bundled into feature work, not a project that lives on the backlog.</p><p>None of this is new. What's new is that it's now load-bearing. Without it, AI-assisted velocity doesn't compound. It oscillates — fast for a quarter, then slow as the debt comes due.</p><p></p><p></p><h2 class="header" id="h2-8c27ef41cc32" _key="e31c3c629a73" _type="block" data-v-7442e526><a title="Permalink to this heading" href="#h2-8c27ef41cc32" aria-hidden="true" data-v-7442e526></a><span data-v-7442e526><!--[--><strong>Closing</strong><!--]--></span></h2><p>The AI era rewards speed. But it punishes fragility faster than we're used to, because fragility can accumulate faster now too.</p><p>The teams that come out ahead won't be the ones that generated the most code. They'll be the ones that built systems capable of absorbing AI-generated change safely — through contracts, automated verification, telemetry, and continuous simplification.</p><p>If you're shipping fast right now, the question isn't whether to add guardrails. It's whether you've already built up enough invisible debt that your velocity is starting to reverse on you.</p><p></p><p>Your Monday action: find one brittle boundary. Write its contract. Add one invariant test.</p><p>That's where it starts.</p><p><br></p><!--]--></div><div class="bg-blue-100 p24 pb0 pb12 bar-md fs-body2 mt32"><svg width="30" height="30" viewBox="0 0 30 30" class="svg-icon mb16"><path d="M14.972 0c4.196 0 7.769 1.465 10.715 4.393A14.426 14.426 0 0128.9 9.228C29.633 11.04 30 12.964 30 15c0 2.054-.363 3.978-1.085 5.772a13.77 13.77 0 01-3.2 4.754 15.417 15.417 0 01-4.983 3.322A14.932 14.932 0 0114.973 30c-1.982 0-3.88-.38-5.692-1.14a15.087 15.087 0 01-4.875-3.293c-1.437-1.437-2.531-3.058-3.281-4.862A14.71 14.71 0 010 15c0-1.982.38-3.888 1.138-5.719a15.062 15.062 0 013.308-4.915C7.303 1.456 10.812 0 14.972 0zm.055 2.706c-3.429 0-6.313 1.196-8.652 3.589a12.896 12.896 0 00-2.72 4.031 11.814 11.814 0 00-.95 4.675c0 1.607.316 3.156.95 4.646a12.428 12.428 0 002.72 3.992 12.362 12.362 0 003.99 2.679c1.483.616 3.037.924 4.662.924 1.607 0 3.164-.312 4.675-.937a12.954 12.954 0 004.084-2.705c2.339-2.286 3.508-5.152 3.508-8.6 0-1.66-.304-3.231-.91-4.713a11.994 11.994 0 00-2.651-3.965c-2.412-2.41-5.314-3.616-8.706-3.616zm-.188 9.803l-2.01 1.045c-.215-.445-.477-.758-.79-.937-.312-.178-.602-.268-.87-.268-1.34 0-2.01.884-2.01 2.652 0 .803.17 1.446.509 1.928.34.482.84.724 1.5.724.876 0 1.492-.43 1.85-1.286l1.847.937a4.407 4.407 0 01-1.634 1.728c-.696.42-1.464.63-2.303.63-1.34 0-2.42-.41-3.242-1.233-.821-.82-1.232-1.964-1.232-3.428 0-1.428.416-2.562 1.246-3.401.83-.84 1.879-1.26 3.147-1.26 1.858 0 3.188.723 3.992 2.17zm8.652 0l-1.983 1.045c-.214-.445-.478-.758-.79-.937-.313-.178-.613-.268-.897-.268-1.34 0-2.01.884-2.01 2.652 0 .803.17 1.446.51 1.928.338.482.838.724 1.5.724.874 0 1.49-.43 1.847-1.286l1.875.937a4.606 4.606 0 01-1.66 1.728c-.696.42-1.455.63-2.277.63-1.357 0-2.441-.41-3.253-1.233-.814-.82-1.22-1.964-1.22-3.428 0-1.428.415-2.562 1.246-3.401.83-.84 1.879-1.26 3.147-1.26 1.857 0 3.18.723 3.965 2.17z" fill="currentColor"></path></svg><!--[--><p>These articles are licensed under a Creative Commons Attribution-ShareAlike 4.0 International license. </p><p><a><!--[-->creativecommons.org/licenses/by-sa/4.0/deed.en<!--]--></a></p><!--]--></div></article><aside class="flex--item3 pt12 ml48 lg:ml0"><!----><aside class="d-flex gs4 gy fd-column mb32 ba baw2 bc-black-400" style="box-shadow:4px 4px 0 0 var(--black-400);"><div class="p24"><svg width="140" height="140" viewBox="0 0 140 140" class="svg-spot SpotArticle native" aria-hidden="true" style="min-width:64px;"><path fill="#eee" d="M17 20h73v68H34.4C24.8 88 17 81.17 17 72.75z"></path><path fill="var(--blue-400, #5176f2)" d="M90 10H17v10h73z"></path><path fill="#ff5e00" d="M90 10H80v10h10z"></path><path fill="#9d9cff" d="M70 25H23v10h47zM55 40H23v10h32zM47 55H23v20h24z"></path><path fill="#0f2466" d="M100 88H34c2.9-.51 4.66-2.24 4.6-5.87V71.76c0-10.92.43-19.76 11.31-19.76h38.61c7.62 0 11.47 6.19 11.47 13.82z"></path><path fill="#c8d4fa" d="M126 129.95H65v-64.6C65.14 58.07 61.49 52 54.5 52h51.23c11.5 0 20.27 9.34 20.27 20.85z"></path><path fill="#9d9cff" d="M115 64.85H70v10.02h45zM115 94.92H70v10.02h45zM95 79.88H70v10.03h25z"></path><path fill="var(--blue-400, #5176f2)" d="m65 130 .77-.01h12.31L83 123l-4.5-12.5z"></path><path fill="#0f2466" d="m83 123 2.49 6.77c.04.1-.04.23-.15.23H78z"></path><path fill="#fc0" d="m65 130 13.5-19.5L31.37 80 18 99.84z"></path><path fill="var(--blue-400, #5176f2)" d="M25 102a12 12 0 1 0 0-24 12 12 0 0 0 0 24"></path><path fill="#0f2466" d="M25 94a4 4 0 1 0 0-8 4 4 0 0 0 0 8"></path></svg><div class="mt12"><h3 class="mb8 ff-stack-sans-headline lh-sm fs-title">Interested in contributing?</h3><p class="wmx3 fs-body3 mb0">Submit an idea for an article and we may reach out to you in the future.</p></div></div><div class="p16 bg-black-100"><!--[--> Login with your <strong>stackoverflow.com</strong> account to suggest an article. <!--]--></div></aside><div class="mb24 pb24 bb bc-black-200"><div class="fc-black-400 tt-uppercase fw-bold fs-body2 mb16"> Author<!--[-->s<!--]--></div><!--[--><a href="/author/priya-gopalsamy/" class="d-block bar-md p24 my12 ba fc-black h:fc-blue-500 bg-blue-100 bc-transparent" title="View full bio and posts"><div class="d-flex ai-center"><div><div class="fw-bold fs-body3" itemprop="author">Priya Gopalsamy <svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconArrowRight va-middle mtn4 ml2" aria-hidden="true"><path d="m17.52 9.28.56.54-.56.54-7.25 6.93-1.04-1.08 5.97-5.71H2V9h15.24zM15.7 7.5h-2.15L9.23 3.29l1.04-1.08z"></path></svg></div><!----><!----><!----></div><div class="ml-auto ps-relative as-center"><img class="bar-circle bs-sm" width="48" height="48" src="https://cdn.stackoverflow.co/images/jo7n4k8s/production/25d20cff2b29f56e969bf7f950f684edfb43c434-3252x2726.jpg?rect=263,0,2726,2726&w=96&h=96&auto=format" alt="Priya Gopalsamy "></div></div><div class="fs-body2 mt12 fc-black">Priya Gopalsamy is a Senior Engineering Manager at Target with 20+ years in enterprise engineering. She works on platform infrastructure, distributed systems, and AI-driven operations. A Sigma Xi Full Member, IEEE Senior Member, and ACM<!--[-->…<!--]--><span class="fw-bold mt4"></span></div></a><!--]--></div><div class="d-flex ai-start gs4 ff-row-wrap" itemprop="keywords"><!----><!--[--><a href="/contributed/" class="bc-blue-400 fc-blue-500 h:bg-blue-200 h:bc-blue-500 flex--item ba bar-md fw-bold px8 py2" style="">The Heap</a><a href="/sdlc/" class="bc-blue-400 fc-blue-500 h:bg-blue-200 h:bc-blue-500 flex--item ba bar-md fw-bold px8 py2" style="">sdlc</a><a href="/cc-by-sa/" class="bc-blue-400 fc-blue-500 h:bg-blue-200 h:bc-blue-500 flex--item ba bar-md fw-bold px8 py2" style="">CC BY-SA 4.0</a><!--]--><!----></div><!----><!----><!--[--><div class="fc-black-400 mt32 tt-uppercase fw-bold fs-body2 mb16"> Recent articles </div><div class="ba bc-black-150 bar-md bar-md pb24 pl24 pr24 bg-black-100"><!--[--><article class="overflow-hidden pt16 mt16" itemscope itemtype="https://schema.org/Article"><div class="d-flex gs32 gsx h100 lg:fd-column"><div class="flex--item12 d-flex fd-column"><time datetime="2026-09-10T18:01:54.891Z" class="flex--item tt-uppercase fw-bold fs-body1 fc-black-500 d-flex mb12" itemprop="datePublished"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconCalendar va-middle mr6 mtn1" aria-hidden="true"><path d="M7.6 2h4.8V.6H14V2h4v16H2V2h4V.6h1.6zM3.5 16.5h13v-8h-13zm4-2H6V13h1.5zm3.25 0h-1.5V13h1.5zm3.25 0h-1.5V13H14zm-6.5-3H6V10h1.5zm3.25 0h-1.5V10h1.5zm3.25 0h-1.5V10H14zM3.5 7h13V3.5H14v1.89h-1.6V3.5H7.6v1.89H6V3.5H3.5z"></path></svg> September 10, 2026</time><a href="/2026/09/10/re-introducing-developer-story/" class="fc-black h:fc-blue-400"><h1 class="fs-subheading ff-stack-sans-headline lh-sm wmx7 mb0" itemprop="name">(Re)introducing Developer Story</h1></a><!----><!----><!----></div><!----></div></article><article class="overflow-hidden pt16 mt16 bt bc-black-200" itemscope itemtype="https://schema.org/Article"><div class="d-flex gs32 gsx h100 lg:fd-column"><div class="flex--item12 d-flex fd-column"><time datetime="2026-09-03T16:00:00.000Z" class="flex--item tt-uppercase fw-bold fs-body1 fc-black-500 d-flex mb12" itemprop="datePublished"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconCalendar va-middle mr6 mtn1" aria-hidden="true"><path d="M7.6 2h4.8V.6H14V2h4v16H2V2h4V.6h1.6zM3.5 16.5h13v-8h-13zm4-2H6V13h1.5zm3.25 0h-1.5V13h1.5zm3.25 0h-1.5V13H14zm-6.5-3H6V10h1.5zm3.25 0h-1.5V10h1.5zm3.25 0h-1.5V10H14zM3.5 7h13V3.5H14v1.89h-1.6V3.5H7.6v1.89H6V3.5H3.5z"></path></svg> September 3, 2026</time><a href="/2026/09/03/security-control-and-accessibility-si-2026-6/" class="fc-black h:fc-blue-400"><h1 class="fs-subheading ff-stack-sans-headline lh-sm wmx7 mb0" itemprop="name">Elevating security, control, and accessibility: Stack Internal 2026.6</h1></a><!----><!----><!----></div><!----></div></article><article class="overflow-hidden pt16 mt16 bt bc-black-200" itemscope itemtype="https://schema.org/Article"><div class="d-flex gs32 gsx h100 lg:fd-column"><div class="flex--item12 d-flex fd-column"><time datetime="2026-08-24T14:00:00.000Z" class="flex--item tt-uppercase fw-bold fs-body1 fc-black-500 d-flex mb12" itemprop="datePublished"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconCalendar va-middle mr6 mtn1" aria-hidden="true"><path d="M7.6 2h4.8V.6H14V2h4v16H2V2h4V.6h1.6zM3.5 16.5h13v-8h-13zm4-2H6V13h1.5zm3.25 0h-1.5V13h1.5zm3.25 0h-1.5V13H14zm-6.5-3H6V10h1.5zm3.25 0h-1.5V10h1.5zm3.25 0h-1.5V10H14zM3.5 7h13V3.5H14v1.89h-1.6V3.5H7.6v1.89H6V3.5H3.5z"></path></svg> August 24, 2026</time><a href="/2026/08/24/responsible-ai-adoption-needs-developer-workflow-design/" class="fc-black h:fc-blue-400"><h1 class="fs-subheading ff-stack-sans-headline lh-sm wmx7 mb0" itemprop="name">Responsible AI adoption needs developer workflow design</h1></a><!----><!----><!----></div><!----></div></article><article class="overflow-hidden pt16 mt16 bt bc-black-200" itemscope itemtype="https://schema.org/Article"><div class="d-flex gs32 gsx h100 lg:fd-column"><div class="flex--item12 d-flex fd-column"><time datetime="2026-08-21T14:00:00.000Z" class="flex--item tt-uppercase fw-bold fs-body1 fc-black-500 d-flex mb12" itemprop="datePublished"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconCalendar va-middle mr6 mtn1" aria-hidden="true"><path d="M7.6 2h4.8V.6H14V2h4v16H2V2h4V.6h1.6zM3.5 16.5h13v-8h-13zm4-2H6V13h1.5zm3.25 0h-1.5V13h1.5zm3.25 0h-1.5V13H14zm-6.5-3H6V10h1.5zm3.25 0h-1.5V10h1.5zm3.25 0h-1.5V10H14zM3.5 7h13V3.5H14v1.89h-1.6V3.5H7.6v1.89H6V3.5H3.5z"></path></svg> August 21, 2026</time><a href="/2026/08/21/dispatches-from-o-reilly-the-right-amount-of-spec-for-agentic-development/" class="fc-black h:fc-blue-400"><h1 class="fs-subheading ff-stack-sans-headline lh-sm wmx7 mb0" itemprop="name">Dispatches from O'Reilly: The right amount of spec for agentic development</h1></a><!----><!----><!----></div><!----></div></article><!--]--></div><div class="fc-black-400 mt32 tt-uppercase fw-bold fs-body2 mb16"> Latest Podcast </div><!--[--><article class="overflow-hidden p24 bg-black-600 fc-white ba bc-transparent bar-md mb16" itemscope itemtype="https://schema.org/Article"><div class="d-flex gs32 gsx h100 lg:fd-column"><div class="flex--item12 d-flex fd-column"><time datetime="2026-09-11T07:40:00.000Z" class="flex--item tt-uppercase fw-bold fs-body1 fc-black-300 d-flex mb12" itemprop="datePublished"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconCalendar va-middle mr6 mtn1" aria-hidden="true"><path d="M7.6 2h4.8V.6H14V2h4v16H2V2h4V.6h1.6zM3.5 16.5h13v-8h-13zm4-2H6V13h1.5zm3.25 0h-1.5V13h1.5zm3.25 0h-1.5V13H14zm-6.5-3H6V10h1.5zm3.25 0h-1.5V10h1.5zm3.25 0h-1.5V10H14zM3.5 7h13V3.5H14v1.89h-1.6V3.5H7.6v1.89H6V3.5H3.5z"></path></svg> September 11, 2026</time><a href="/2026/09/11/ai-cybersecurity-is-a-cat-and-mouse-game/" class="fc-white h:fc-blue-400"><h1 class="fs-subheading d:fc-white ff-stack-sans-headline lh-sm wmx7 mb0" itemprop="name">AI cybersecurity is a cat and mouse game</h1></a><!----><!----><!----></div><!----></div></article><!--]--><!--]--></aside></div></div><section class="bg-black-50 wmx7 mx-auto sm:pl24 sm:pr24 py64 sm:pt32 sm:pb32 ff-sans" id="comments"><!--[--><h2>Add to the discussion</h2><div class="p24 bs-md bar-md d-flex"><div class="m-auto d-inline-flex sm:fd-column ai-center ta-center"><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconGlyph mr12 sm:mb12" aria-hidden="true"><path d="M14.83 10.7a10 10 0 0 0-1.31 2.21l-.02.03q-.5 1.17-.68 2.46v.02a10 10 0 0 0-.03 2.58H3v-2.6h8.5l.06-.32-8.2-2.17.69-2.5 8.29 2.19.12-.25L5 8.1l1.32-2.26 7.55 4.3.19-.2-6.2-6.11L9.75 2l6.29 6.2.66.66a10 10 0 0 0-1.86 1.84"></path></svg><div>Login with your <strong>stackoverflow.com</strong> account to take part in the discussion.</div></div></div><!--]--><!----><!----><!--[--><!--]--></section><!----><!--]--><!--]--><!--[--><footer id="footer-global" data-v-df5a0bb6><div class="footer__inner p24 pb0 m12 bg-black-150 fs-body2" data-v-df5a0bb6><div class="d-flex sm:fd-column" data-v-df5a0bb6><section class="flex--item4" data-v-df5a0bb6><svg width="32" height="32" viewBox="0 0 32 32" class="svg-icon IconGlyph32 mb24" aria-hidden="true" title="Stack Overflow" data-v-df5a0bb6><path d="M23.8 17.22a18 18 0 0 0-2.2 3.87l-.02.06q-.83 2.04-1.15 4.3v.03A18 18 0 0 0 20.4 30H4v-4.55h14.23l.1-.56L4.6 21.1l1.14-4.4 13.88 3.85.2-.44-12.46-7.43 2.2-3.94 12.65 7.54.3-.37L12.17 5.2 15.28 2l10.53 10.86 1.1 1.15q-1.75 1.4-3.11 3.21"></path></svg><!----></section><div class="sections flex--item8 d-flex md:mb32 md:mt24" data-v-df5a0bb6><div class="flex--item6 d-flex md:fd-column" data-v-df5a0bb6><section class="flex--item6" data-v-df5a0bb6><h3 id="footer-products-heading" data-v-df5a0bb6> Our Stack </h3><nav aria-labelledby="footer-products-heading" data-v-df5a0bb6><ul class="list-reset" data-v-df5a0bb6><li data-v-df5a0bb6><a href="https://stackoverflow.co/internal/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Stack Internal</a><ul class="list-reset" data-v-df5a0bb6><li data-v-df5a0bb6><a href="https://stackoverflow.co/internal/features/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" class="sub-link" data-v-df5a0bb6>Features</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/internal/customers/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" class="sub-link" data-v-df5a0bb6>Customers</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/internal/uses/ai?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" class="sub-link" data-v-df5a0bb6>Use cases</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/internal/security/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" class="sub-link" data-v-df5a0bb6>Security</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/internal/integrations/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" class="sub-link" data-v-df5a0bb6>Integrations</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/internal/pricing/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" class="sub-link" data-v-df5a0bb6>Pricing</a></li></ul></li><li class="mt12" data-v-df5a0bb6><a href="https://stackoverflow.co/data-licensing/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Stack Data Licensing</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/advertising/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Stack Ads</a></li><li class="mt12" data-v-df5a0bb6><a href="https://stackoverflow.co/partnerships/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Partnerships</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/internal/services/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Services</a></li><li class="mt12" data-v-df5a0bb6><a href="https://stackoverflow.com/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Stack Overflow</a></li></ul></nav></section><section class="flex--item6" data-v-df5a0bb6><h3 id="footer-company-heading" class="md:mt32" data-v-df5a0bb6> Company </h3><nav aria-labelledby="footer-company-heading" data-v-df5a0bb6><ul class="list-reset" data-v-df5a0bb6><li data-v-df5a0bb6><a href="https://stackoverflow.co/company/leadership/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Leadership</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/company/press/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Press</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/company/careers/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Careers</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/company/social-impact/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Social Impact</a></li></ul></nav></section></div><div class="flex--item6 d-flex md:fd-column" data-v-df5a0bb6><section class="flex--item6" data-v-df5a0bb6><h3 id="footer-support-heading" class="md:mt32" data-v-df5a0bb6> Support </h3><nav aria-labelledby="footer-support-heading" data-v-df5a0bb6><ul class="list-reset" data-v-df5a0bb6><li data-v-df5a0bb6><a href="https://stackoverflow.com/contact/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Contact</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.com/help/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Stack Overflow help</a></li><li data-v-df5a0bb6><a href="https://support.stackenterprise.co/support/solutions/22000023964" rel="noopener noreferrer" data-v-df5a0bb6>Stack Internal help</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.co/internal/implement/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Implement Stack Internal</a></li><li class="mt12" data-v-df5a0bb6><a href="https://policies.stackoverflow.co/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Terms</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.com/legal/privacy-policy/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Privacy policy</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.com/legal/cookie-policy/?utm_source=blog&utm_medium=referral&utm_campaign=footer" rel="noopener noreferrer" data-v-df5a0bb6>Cookie policy</a></li><li class="mt12" data-v-df5a0bb6><button class="flex--item mr24 c-pointer s-btn s-btn__unset p0 as-start fc-black h:fc-blue-500" type="button" title="Open cookie consent settings" data-v-df5a0bb6> Your Privacy Choices <svg width="34" height="16" viewBox="0 0 34 16" class="svg-icon IconServiceCCPA va-middle mtn2 ml4 native" aria-hidden="true" data-v-df5a0bb6><path fill="#06f" d="M25.2 0a8 8 0 0 1 7.94 8c0 4.46-3.52 8-7.94 8H7.95A7.9 7.9 0 0 1 0 8c0-4.46 3.52-8 7.95-8zM7.95 1.37A6.6 6.6 0 0 0 1.36 8a6.6 6.6 0 0 0 6.59 6.63h7.71l3.52-13.26zm19.52 3.2a.7.7 0 0 0-.91 0l-2.5 2.52-2.5-2.52a.7.7 0 0 0-.9 0 .7.7 0 0 0 0 .92L23.16 8l-2.39 2.51a.7.7 0 0 0 0 .92c.23.23.68.23.9 0l2.5-2.52 2.5 2.52c.23.23.68.23.91 0a.7.7 0 0 0 0-.92L25.08 8l2.39-2.51a.7.7 0 0 0 0-.92m-13.98.12c.22-.23.68-.23 1.02 0 .23.22.35.68.12.91l-4.8 5.6c-.12.11-.23.23-.34.23a.7.7 0 0 1-.8-.12L6.17 8.8a.7.7 0 0 1 0-.91.7.7 0 0 1 .92 0l2.05 1.94z"></path></svg></button></li></ul></nav></section><section class="flex--item6" data-v-df5a0bb6><h3 id="footer-content-heading" class="md:mt32" data-v-df5a0bb6> Elsewhere </h3><nav aria-labelledby="footer-content-heading" data-v-df5a0bb6><ul class="list-reset" data-v-df5a0bb6><li data-v-df5a0bb6><a href="https://stackoverflow.blog/" rel="noopener noreferrer" data-v-df5a0bb6>Blog</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.blog/newsletter/" rel="noopener noreferrer" data-v-df5a0bb6>Dev Newsletter</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.blog/podcast/" rel="noopener noreferrer" data-v-df5a0bb6>Podcast</a></li><li data-v-df5a0bb6><a href="https://stackoverflow.blog/releases/" rel="noopener noreferrer" data-v-df5a0bb6>Releases</a></li><li data-v-df5a0bb6><a href="https://survey.stackoverflow.co/" rel="noopener noreferrer" title="Annual Developer Survey" data-v-df5a0bb6>Dev Survey</a></li></ul></nav></section></div></div></div><svg width="175" height="22" viewBox="0 0 175 19" class="svg-icon IconLogo flex--item12 w100 h-auto fc-black-050 ps-relative" aria-hidden="true" title="Stack Overflow" data-v-df5a0bb6><g fill="currentColor"><path d="M18.52 9.69a13.7 13.7 0 0 0-4.3 5.47l-.01.05a13 13 0 0 0-.93 3.32v.02q-.13.92-.13 1.88c0 .55.07 1.04.13 1.57H0v-3.47h11.5l.07-.43L.5 15.16l.93-3.4 11.21 2.98.16-.34L2.72 8.66 4.5 5.6l10.22 5.83.25-.29L6.6 2.89 9.12.4zM28.9 5.78c3.3 0 5.98 2.15 5.98 5.24h-2.96c-.13-1.67-1.09-2.66-3.11-2.66-2.03 0-3.04.81-3.04 1.95 0 3.42 9.34.33 9.34 6.58 0 2.89-2.28 4.51-6.13 4.51-3.57 0-6.22-2.25-6.33-5.27h3c.14 1.7 1.59 2.71 3.48 2.71 1.78 0 3.07-.68 3.07-1.95 0-3.14-9.37-.28-9.37-6.58 0-2.45 2.33-4.53 6.08-4.53M49.06 8.36c1.75 0 2.96.7 3.75 1.95V8.7h2.76V21H52.8v-1.53c-.74 1.2-1.93 1.93-3.75 1.93-3.44 0-5.55-2.69-5.55-6.5 0-3.83 2.1-6.54 5.55-6.54m.43 2.48c-2.02 0-3.14 1.7-3.14 4.05 0 2.33 1.12 4 3.14 4 2.23 0 3.32-1.72 3.32-4s-1.1-4.05-3.32-4.05M63.26 8.36c3.37 0 5.73 2.48 5.75 5.2h-2.89c-.07-1.35-.88-2.7-2.86-2.7-2.4 0-3.44 1.75-3.44 4.03s1.04 3.98 3.44 3.98c2.06 0 2.87-1.45 2.94-3h2.86c-.05 3.2-2.3 5.53-5.8 5.53-3.8 0-6.27-2.69-6.27-6.5 0-3.83 2.48-6.54 6.27-6.54M91.52 5.78c4.91 0 7.6 3.57 7.6 7.8 0 4.22-2.71 7.82-7.6 7.82s-7.62-3.55-7.62-7.82c0-4.23 2.7-7.8 7.62-7.8m0 2.58c-3.22 0-4.68 2.68-4.68 5.22s1.44 5.24 4.68 5.24 4.6-2.71 4.6-5.24-1.38-5.22-4.6-5.22M117.45 8.36c3.34 0 6.2 2.7 5.6 7.44h-9c.23 1.8 1.3 3.1 3.4 3.1 1.44 0 2.35-.89 2.73-1.9h2.89a5.5 5.5 0 0 1-5.62 4.4c-3.83 0-6.3-2.69-6.3-6.5 0-3.83 2.47-6.54 6.3-6.54m0 2.48c-1.93 0-2.97 1.11-3.35 2.68h6.23c-.15-1.46-1.06-2.68-2.88-2.68M150.87 8.36c3.8 0 6.28 2.7 6.28 6.53 0 3.82-2.49 6.5-6.28 6.5s-6.3-2.68-6.3-6.5 2.47-6.53 6.3-6.53m0 2.48c-2.3 0-3.47 1.77-3.47 4.05 0 2.33 1.16 4 3.47 4 2.3 0 3.47-1.67 3.47-4s-1.17-4.05-3.47-4.05M40.5 8.71h2.1v2.36h-2.1v7.62h2.46V21h-5.22v-9.93H36V8.7h1.74V6h2.76zM73.19 13.65l3.97-4.94h3.27l-4 4.97 4.4 7.32h-3.08l-2.99-5.3-1.57 1.98V21H70.4V6h2.79zM105.34 18.56l2.79-9.85h2.96L107.24 21h-3.77L99.62 8.71h2.96zM131.22 8.71V11h-3.97v10h-2.76V8.71zM139.2 4.54v2.35h-1.78q-1.18.01-1.19 1.09v.73h2.71V11h-2.7v10h-2.77V11h-1.26V8.71h1.26v-.73c0-2.2 1.27-3.44 3.93-3.44zM143.17 4.54V21h-2.78V4.54zM162.14 17.96l2.05-9.25h3l2.06 9.27 1.82-9.27h2.94L171.05 21h-3.67l-1.67-7.5-1.67 7.5h-3.67L157.4 8.71h2.96z"></path></g></svg></div><div class="px24 pb24 d-flex ai-center ff-row-wrap sm:fd-column sm:ta-center" data-v-df5a0bb6><div class="fs-caption fc-black-400 mr-auto sm:mr0 sm:mb12" data-v-df5a0bb6> Site design / logo © 2026 Stack Exchange Inc. </div><div class="d-flex gs8 ai-center flex--item mr12 sm:mr0" data-v-df5a0bb6><div class="flex--item s-toggle-switch s-toggle-switch__multiple"><!--[--><!--[--><input value="theme-light" type="radio" name="theme" id="theme-light"><label for="theme-light">Light</label><!--]--><!--[--><input value="theme-dark" type="radio" name="theme" id="theme-dark"><label for="theme-dark">Dark</label><!--]--><!--[--><input value="theme-system" type="radio" name="theme" id="theme-system"><label for="theme-system">Auto</label><!--]--><!--]--></div></div><div class="d-flex ai-start sm:mt12" data-v-df5a0bb6><a class="flex--item fc-black p6 h:bg-orange h:fc-white" href="https://linkedin.com/company/stack-overflow/" title="LinkedIn" rel="external" data-v-df5a0bb6><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconServiceLinkedIn" aria-hidden="true" data-v-df5a0bb6><path fill="#0966c2" d="M16.22 2C17.2 2 18 2.8 18 3.78v12.44c0 .98-.8 1.78-1.78 1.78H3.78C2.8 18 2 17.2 2 16.22V3.78C2 2.8 2.8 2 3.78 2zM4.45 15.78h2.39v-7.7H4.45zm8.52-7.94a2.7 2.7 0 0 0-2.32 1.27V8.07H8.36v7.7h2.3v-4.04c0-1.08.49-1.72 1.44-1.72.88 0 1.3.61 1.3 1.72v4.05h2.38V10.9c0-2.06-1.17-3.06-2.8-3.06M5.63 4.22c-.78 0-1.4.64-1.4 1.42 0 .79.62 1.43 1.4 1.43s1.41-.64 1.41-1.43-.63-1.42-1.4-1.42"></path></svg></a><a class="flex--item fc-black p6 h:bg-orange h:fc-white" href="https://x.com/stackoverflow/" title="Twitter/X" rel="external" data-v-df5a0bb6><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconServiceX" aria-hidden="true" data-v-df5a0bb6><path d="M14.6 2.77h2.45L11.7 8.89 18 17.23h-4.94L9.2 12.18l-4.42 5.05H2.31l5.74-6.55L2 2.77h5.06l3.5 4.62zm-.86 13h1.36L6.32 4.15H4.86z"></path></svg></a><a class="flex--item fc-black p6 h:bg-orange h:fc-white" href="https://www.threads.net/@thestackoverflow" title="Threads" rel="external" data-v-df5a0bb6><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconServiceThreads" aria-hidden="true" data-v-df5a0bb6><path d="m14.4 9.38-.21-.1c-.13-2.4-1.44-3.77-3.64-3.78h-.03c-1.32 0-2.41.56-3.08 1.58l1.2.83a2.1 2.1 0 0 1 1.9-.92q1.09 0 1.62.62.39.46.52 1.24a9 9 0 0 0-2.08-.1c-2.1.12-3.44 1.34-3.35 3.03.05.86.48 1.6 1.21 2.08.62.41 1.42.61 2.24.57a3.3 3.3 0 0 0 2.55-1.24 4.6 4.6 0 0 0 .87-2.28q.8.47 1.12 1.23c.37.84.39 2.23-.75 3.37-1 .99-2.19 1.42-3.99 1.43q-3.01-.03-4.5-1.9Q4.62 13.25 4.58 10 4.61 6.74 6 4.97q1.48-1.88 4.5-1.91 3.04.02 4.58 1.92.75.93 1.13 2.3l1.42-.38a8 8 0 0 0-1.43-2.87c-1.3-1.61-3.23-2.44-5.7-2.46q-3.72.04-5.64 2.47-1.7 2.17-1.74 5.95V10q.03 3.79 1.74 5.96 1.92 2.44 5.63 2.47h.01c2.2-.02 3.74-.6 5.01-1.86a4.6 4.6 0 0 0 1.07-5.03 4.3 4.3 0 0 0-2.17-2.16m-3.77 3.56c-.92.05-1.87-.36-1.92-1.24-.04-.65.46-1.38 1.97-1.47a9 9 0 0 1 2.03.14c-.17 2.17-1.19 2.52-2.08 2.57"></path></svg></a><a class="flex--item fc-black p6 h:bg-orange h:fc-white" href="https://www.instagram.com/thestackoverflow/" title="Instagram" rel="external" data-v-df5a0bb6><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconServiceInstagram" aria-hidden="true" data-v-df5a0bb6><path d="M10 3.44c2.14 0 2.39 0 3.23.05.78.03 1.2.16 1.49.27.37.15.64.32.92.6s.45.55.6.92c.1.28.24.7.27 1.49.04.84.05 1.1.05 3.23 0 2.14 0 2.39-.05 3.23-.03.78-.16 1.2-.27 1.49-.15.37-.32.64-.6.92s-.55.45-.92.6c-.28.1-.7.24-1.49.27-.84.04-1.1.05-3.23.05-2.14 0-2.39-.01-3.23-.05a4 4 0 0 1-1.49-.27 2.5 2.5 0 0 1-.92-.6 2.5 2.5 0 0 1-.6-.92c-.1-.28-.24-.7-.27-1.49-.04-.84-.05-1.1-.05-3.23 0-2.14.01-2.39.05-3.23.03-.78.16-1.2.27-1.49.15-.37.32-.64.6-.92s.55-.45.92-.6c.28-.1.7-.24 1.49-.27.84-.04 1.1-.05 3.23-.05M10 2c-2.17 0-2.45 0-3.3.05-.85.04-1.43.17-1.94.37-.53.2-.97.48-1.42.92s-.72.9-.92 1.42c-.2.5-.33 1.09-.37 1.94S2 7.83 2 10s0 2.45.05 3.3c.04.85.17 1.43.37 1.94.2.53.48.97.92 1.42s.9.72 1.42.92c.5.2 1.09.33 1.94.37S7.83 18 10 18s2.45 0 3.3-.05a6 6 0 0 0 1.94-.37c.53-.2.97-.48 1.42-.92s.72-.9.92-1.42c.2-.5.33-1.09.37-1.94S18 12.17 18 10s0-2.45-.05-3.3a6 6 0 0 0-.37-1.94c-.2-.53-.48-.97-.92-1.42s-.9-.72-1.42-.92c-.5-.2-1.09-.33-1.94-.37S12.17 2 10 2m0 3.9a4.1 4.1 0 1 0 0 8.2 4.1 4.1 0 0 0 0-8.2m0 6.77a2.67 2.67 0 1 1 0-5.34 2.67 2.67 0 0 1 0 5.34m4.27-7.9a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92"></path></svg></a><a class="flex--item fc-black p6 h:bg-orange h:fc-white" href="https://www.youtube.com/c/StackOverflowOfficial" title="YouTube" rel="external" data-v-df5a0bb6><svg width="20" height="20" viewBox="0 0 20 20" class="svg-icon IconServiceYouTube" aria-hidden="true" data-v-df5a0bb6><path fill="#ff0034" d="M10 3.07c-8.85 0-9 .79-9 6.93s.16 6.93 9 6.93 9-.79 9-6.93-.16-6.93-9-6.93m2.88 7.23L8.84 12.2c-.35.16-.64-.02-.64-.41V8.22c0-.39.29-.57.64-.4l4.04 1.88c.36.17.36.44 0 .6"></path></svg></a></div></div></footer><!----><!--]--><!--]--></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{branch:"main",baseUrl:"https://stackoverflow.blog",context:"production",googleAnalytics:"G-DTTX7JCXEJ",onetrust:"d06435e0-17fb-4659-9a14-1930a6e0be80-test",onetrustRulesetId:"",onetrustCategories:{necessary:"C0001",performance:"C0002",functional:"C0003",targeting:"C0004"},googleMaps:"AIzaSyCFwzoPZ5dOx677jFutgxPd8J2ts1MyPho",googleRecaptchaSiteKey:"6LfCpfEjAAAAAFGHv9bD40vUeqx7Yn8GaacEVP2D",stackappClientId:25117,stackappOauthUrl:"",stackappKey:"GVgf4GPoPeC3eco9n8AEPg((",provenanceCookie:"stackex_provenance",provenanceSessionCookie:"stackex_provenance_session",sanity:{additionalClients:{},apiVersion:"2026-05-27",dataset:"production",disableSmartCdn:false,perspective:"raw",projectId:"jo7n4k8s",queryEndpoint:"",stega:{enabled:true,studioUrl:"https://cms.stackoverflow.co"},token:"",useCdn:true,withCredentials:false,visualEditing:{keepStegaOnCopy:false,mode:"live-visual-editing",previewMode:{enable:"/api/preview/enable",disable:"/api/preview/disable"},previewModeId:"",proxyEndpoint:"/_sanity/visual-editing/fetch",studioUrl:"https://cms.stackoverflow.co",token:"",zIndex:""}},algolia:{apiKey:"170e91ef17b91a8afe6411a133af1309",applicationId:"GGZPPCDRMJ",lite:true,cache:false,instantSearch:false,docSearch:{},recommend:"",globalIndex:"",useFetch:false}},app:{baseURL:"/",buildId:"ab1d439d-5148-4134-bea5-c969aa31c5ff",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__" data-src="/2026/05/12/you-shipped-it-fast-but-did-you-ship-it-right/_payload.json?_b=ab1d439d-5148-4134-bea5-c969aa31c5ff">[{"state":1,"once":5,"_errors":6,"serverRendered":8,"path":9,"prerenderedAt":-1},["Reactive",2],{"$ssanity-preview":3,"$sarticleModal":3,"$ssanity-preview-environment":4},false,"checking",["Set"],["ShallowReactive",7],{"sanity-4xl759D-142Hayy8Ru7BrhBh3maBkkOntqy3DIbRaT0":-1,"sanity-gPv0zjmuB99Jw9wKfJ4b9p62Ne5HJ3Fe9bSOphfpyfM":-1},true,"\u002F2026\u002F05\u002F12\u002Fyou-shipped-it-fast-but-did-you-ship-it-right\u002F"]</script></body></html> |