
The end of Stack Overflow as you know it
You have 1 article left to read this month before you need to register a free LeadDev.com account.
以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。
You have 1 article left to read this month before you need to register a free LeadDev.com account.
Over 30,000 developers from 169 countries weighed in on the state of software engineering for the Stack Overflow 2026 Developer Survey. Ironically, the results paint a gloomy picture for Stack Overflow itself… or at least Stack Overflow as you knew it.
Nearly two-thirds of developers said they’re relying less on Stack Overflow for straightforward questions due to AI, with 64% visiting the site less for simple questions and 29% asking fewer questions overall, according to data on questions around AI’s impact on usage.
Receive weekly engineering insights to level up your leadership approach.
At the same time, 27% said they’re now contributing less to the site. Developers also named answering the kinds of questions they once took to Stack Overflow as one of their top uses for AI.
“We realize that people don’t need to come directly to Stack Overflow anymore in order to get answers to their programming questions – the chatbots have that covered,” wrote Philippe Beaudette, SVP of communities at Stack Overflow, in a September blog post. Stack Overflow did not respond to an interview request.
However, the longtime developer platform isn’t giving up. In response to the disruption, the company is expanding its business model and rapidly releasing new products designed for software development in the age of AI, ranging from hiring tools to a version of Stack Overflow made specifically for agents.
After the launch of ChatGPT, Stack Overflow went into a “code red situation,” according to CEO Prashanth Chandrasekar. “It was an existential moment, especially for our public platform,” he said on the Decoder podcast in December 2025.
Chandrasekar carved out 10% of the company’s resources to specifically focus on how to respond, he said. So far, that’s included broadening the scope of the site, offering new ways for people to engage, and leaning further into the enterprise.
One of its earliest efforts was launching Stack Overflow Jobs via a partnership with Indeed, aiming to expand into being a resource for career development and hiring. In late 2025, the company also launched a chat feature to allow users to connect directly as well as AI Assist, a conversational interface for searching for answers on the platform.
It also transitioned Stack Overflow for Teams – essentially private versions of the platform for companies – into an updated product called Stack Internal, billing it as the next phase of the company’s enterprise knowledge platform “reimagined for the AI era.” The platform centralizes knowledge and makes it accessible in the AI tools where developers are working, also using AI to structure and score imported content.
The demand for code to train AI models has also opened up a lucrative new business opportunity for the company: licensing its rich source of engineering data. Stack Overflow was one of the first sites to announce it would charge tech companies for access to its data for AI training, striking a deal with Google as its first licensee.
In September, just ahead of the release of the survey results, Stack Overflow pre-empted the sour findings about its own platform with a flurry of new features and updates.
The company announced the general availability of Stack Internal, allowing all users free access and framing it around helping both users and their agents.
As part of its efforts to expand into hiring, it also resurrected Developer Story, a feature it shuttered five years ago. Described as “a resume or a CV on steroids,” the idea is to use Stack Overflow’s expertise to help developers make sure they’re showcasing what employers actually want to see while, on the other side, providing recruiters and hiring managers “more objectively verifiable insight into the person behind the resume.”
Close the gap between what leadership expects and what’s actually possible at LeadDev Berlin.
The company positioned this as a direct response to the AI slop problem in hiring, where companies are flooded with AI-generated resumes and fake applicants.
Lastly, the company also announced the learnings of its Stack Overflow for Agents beta – where agents search validated answers and draft new entries – and introduced new features, including a ChatGPT plug-in.
“We saw a problem in the agentic AI space, one very similar to the problem human developers were having before Stack Overflow,” reads the blog post. “20 years ago, developers needed a place to ask questions and share discoveries. Today, agents need the same thing.”
-
Valid email addresses that are supported:
-
"much.more unusual"@example.com
-
"very.unusual.@.unusual.com"@example.com
-
#!$%&'*+-/=?^_`{}|~@example.org
-
" "@example.org
-
üñîçøðé@üñîçøðé.com
-
admin@mailserver1
-
user@tt
-
"hi"@example.com
-
jsmith@[192.168.2.1]
-
jsmith@[IPv6:2001:db8::1]
-
email@123.123.123.123
-
"()<>[]:,;@\"!#$%&'*+-/=?^_`{}| ~.a"@example.org
-
abc."defghi".xyz@example.com
-
very.unusual."@".unusual.com@example.com
-
john.smith(comment)@example.com
-
(comment)john.smith@example.com
-
"()<>[]:,;@\"!#$%&'*+-/=?^_`{}| ~.a"(comment)@example.org
-
Valid (but rare) email addresses that are not supported:
-
"very.(),:;<>[]".VERY."very@\ "very".unusual"@strange.example.com
-
"()<>[]:,;@"!#$%&'*+-/=?^_`{}| ~.a"@example.org
-
abc."d"efghi".xyz@example.com
-
much."more\ unusual"@example.com
re(o[e],1,1,(()=>{o[e]=null}));return{c(){for(let e=0;e{a[c]=null})),ee(),r=a[t],r?r.p(e,o):(r=a[t]=it,r.c()),te(r,1),r.m(n.parentNode,n))},i(e){o||(te(r),o=!0)},o(e){re(r),o=!1},d(e){e&&g(n),a[t].d(e)}}}function ba(e){let t;return{c(){t=P("div"),t.textContent="Mandatory information must be entered",(t,"class","zephr-form-input-error-text svelte-1f2hwm0"),$(t,"zephr-payment-form-input-error-text",e[3])},m(e,r){y(e,t,r)},p(e,r){8&r&&$(t,"zephr-payment-form-input-error-text",e[3])},d(e){e&&g(t)}}}function Pa(e){let t,r,n,o;t=new Lo({props:{forInput:e[10],sublabel:e[1]["public-description"],label:/(hidden|checkbox)/.test(e[1]?.["input-type"]||"")?"":${e[0].label}${e[0].required||e[1]?.required?"*":""},isPaymentForm:e[3],$$slots:{default:[ga]},$$scope:{ctx:e}}});let i=e[8]&&ba(e);return{c(){ae(t.$$.fragment),r=S(),i&&i.c(),n=C()},m(e,a){se(t,e,a),y(e,r,a),i&&i.m(e,a),y(e,n,a),o=!0},p(e,[r]){const o={};2&r&&(o.sublabel=e[1]["public-description"]),3&r&&(o.label=/(hidden|checkbox)/.test(e[1]?.["input-type"]||"")?"":${e[0].label}${e[0].required||e[1]?.required?"*":""}),8&r&&(o.isPaymentForm=e[3]),16777727&r&&(o.$$scope={dirty:r,ctx:e}),t.$set(o),e[8]?i?i.p(e,r):(i=ba(e),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null)},i(e){o||(te(t.$$.fragment,e),o=!0)},o(e){re(t.$$.fragment,e),o=!1},d(e){e&&(g(r),g(n)),ce(t,e),i&&i.d(e)}}}function Ea(e,t,r){let n,{formKey:o}=t,{config:i}=t,{attributeSchema:a}=t,{value:s}=t,{error:c}=t,{isPaymentForm:l=!1}=t,{onChange:u}=t,{onFocus:d}=t,{onBlur:p}=t,m=s;const f=e=>e,h=zephr-form-${i.slug}-${o};return e.$$set=e=>{"formKey"in e&&r(11,o=e.formKey),"config"in e&&r(0,i=e.config),"attributeSchema"in e&&r(1,a=e.attributeSchema),"value"in e&&r(2,s=e.value),"error"in e&&r(12,c=e.error),"isPaymentForm"in e&&r(3,l=e.isPaymentForm),"onChange"in e&&r(4,u=e.onChange),"onFocus"in e&&r(5,d=e.onFocus),"onBlur"in e&&r(6,p=e.onBlur)},e.$$.update=()=>{4096&e.$$.dirty&&r(8,n=!!c),150&e.$$.dirty&&"textarea"===a?.["input-type"]&&m!==s&&u(m)},[i,a,s,l,u,d,p,m,n,f,h,o,c,({detail:e})=>u(e),({detail:e})=>u(e),e=>u(e.target.value),function(){m=this.value,r(7,m)},({detail:e})=>u(e),({detail:e})=>u(e)]}class Aa extends de{constructor(e){super(),ue(this,e,Ea,Pa,a,{formKey:11,config:0,attributeSchema:1,value:2,error:12,isPaymentForm:3,onChange:4,onFocus:5,onBlur:6})}}const Sa=e=>null==e||""===e,Ca={matches:e=>e.type===Oe,create:(e,t,r,n)=>{const o=e.organisationConfiguration.schemaFields.find((e=>e.slug===n.slug)),i=t.hideIfSetAttributes?.includes(n.slug);if(null==o||i)return;const a=o.required||n.required,s=t.userAttributes[n.slug]??(t.readOnlyAttributeValues??{})[n.slug];return{component:Aa,props:{formKey:e.uniqueKey,config:n,value:s,attributeSchema:o,isPaymentForm:e.formType===wt.PAYMENT,onChange:o=>{r.updateFormState({userAttributes:{...t.userAttributes,[n.slug]:o}}),dt(e,"zephr_form_input_change",{inputName:zephr-form-${n.slug}-${e.uniqueKey},sectionId:t.currentSection.type,field:n.slug})},onFocus:()=>dt(e,"zephr_form_input_focus",{inputName:zephr-form-${n.slug}-${e.uniqueKey},sectionId:t.currentSection.type,field:n.slug}),onBlur:()=>dt(e,"zephr_form_input_blur",{inputName:zephr-form-${n.slug}-${e.uniqueKey},sectionId:t.currentSection.type,field:n.slug})},isValid:!(a&&Sa(s)||a&&"checkbox"===o["input-type"]&&!s||"email"===o["input-type"]&&!Sa(s)&&!mi(s))}}};function va(t){let r,n,o,i;return{c(){r=P("button"),n=A(t[0]),(r,"type","button"),_(r,"class","zephr-form-link svelte-1mdtotm"),$(r,"zephr-form-link-disabled",t[1]),$(r,"zephr-form-link-no-underline",t[3])},m(e,a){y(e,r,a),h(r,n),o||(i=v(r,"click",t[5]),o=!0)},p(e,[t]){1&t&&w(n,e[0]),2&t&&$(r,"zephr-form-link-disabled",e[1]),8&t&&$(r,"zephr-form-link-no-underline",e[3])},i:e,o:e,d(e){e&&g(r),o=!1,i()}}}function Ta(e,t,r){let{text:n}=t,{disabled:o=!1}=t,{onClick:i=(()=>{})}=t,{noUnderline:a=!1}=t;const s=D();return e.$$set=e=>{"text"in e&&r(0,n=e.text),"disabled"in e&&r(1,o=e.disabled),"onClick"in e&&r(2,i=e.onClick),"noUnderline"in e&&r(3,a=e.noUnderline)},[n,o,i,a,s,()=>{i(),s("linkClick",null)}]}class a extends de{constructor(e){super(),ue(this,e,Ta,va,a,{text:0,disabled:1,onClick:2,noUnderline:3})}}function Oa(e){let t,r;return t=new a({props:{text:e[0],onClick:e[2]}}),t.$on("linkClick",e[7]),{c(){ae(t.$$.fragment)},m(e,n){se(t,e,n),r=!0},p(e,r){const n={};1&r&&(n.text=e[0]),4&r&&(n.onClick=e[2]),t.$set(n)},i(e){r||(te(t.$$.fragment,e),r=!0)},o(e){re(t.$$.fragment,e),r=!1},d(e){ce(t,e)}}}function Ia(t){let r,n;return{c(){r=P("div"),n=A(t[1]),(r,"class","zephr-form-link-message svelte-11qigta")},m(e,t){y(e,r,t),h(r,n)},p(e,t){2&t&&w(n,e[1])},i:e,o:e,d(e){e&&g(r)}}}function wa(e){let t,r;return t=new zt({props:{error:e[3],isPaymentForm:e[5]}}),{c(){ae(t.$$.fragment)},m(e,n){se(t,e,n),r=!0},p(e,r){const n={};8&r&&(n.error=e[3]),32&r&&(n.isPaymentForm=e[5]),t.$set(n)},i(e){r||(te(t.$$.fragment,e),r=!0)},o(e){re(t.$$.fragment,e),r=!1},d(e){ce(t,e)}}}function Ra(e){let t,r,n,o,i;const a=[Ia,Oa],s=[];function c(e,t){return e[6]&&!e[3]?0:1}r=c(e),n=s[r]=ar;let l=e[3]&&wa(e);return{c(){t=P("div"),n.c(),o=S(),l&&l.c(),(t,"class","zephr-form-flex-container zephr-form-reset-link-container svelte-11qigta"),$(t,"zephr-payment-form-flex-container",e[5])},m(e,n){y(e,t,n),s[r].m(t,null),h(t,o),l&&l.m(t,null),i=!0},p(e,[u]){let d=r;r=c(e),r===d?s[r].p(e,u):(X(),re(s[d],1,1,(()=>{s[d]=null})),ee(),n=s[r],n?n.p(e,u):(n=s[r]=ar,n.c()),te(n,1),n.m(t,o)),e[3]?l?(l.p(e,u),8&u&&te(l,1)):(l=wa(e),l.c(),te(l,1),l.m(t,null)):l&&(X(),re(l,1,1,(()=>{l=null})),ee()),(!i||32&u)&&$(t,"zephr-payment-form-flex-container",e[5])},i(e){i||(te(n),te(l),i=!0)},o(e){re(n),re(l),i=!1},d(e){e&&g(t),s[r].d(),l&&l.d()}}}function Ma(e,t,r){let{text:n}=t,{message:o}=t,{onClick:i}=t,{error:a=null}=t,{delayMs:s}=t,{isPaymentForm:c=!1}=t,l=!1;return e.$$set=e=>{"text"in e&&r(0,n=e.text),"message"in e&&r(1,o=e.message),"onClick"in e&&r(2,i=e.onClick),"error"in e&&r(3,a=e.error),"delayMs"in e&&r(4,s=e.delayMs),"isPaymentForm"in e&&r(5,c=e.isPaymentForm)},[n,o,i,a,s,c,l,()=>{o&&(r(6,l=!0),setTimeout((()=>r(6,l=!1)),s))}]}class Na extends de{constructor(e){super(),ue(this,e,Ma,Ra,a,{text:0,message:1,onClick:2,error:3,delayMs:4,isPaymentForm:5})}}const $a={matches:e=>e.type===Ie,create:(e,t,r,n)=>({component:Na,props:{text:n.te
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。