<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Pragmatic Engineer]]></title><description><![CDATA[Big Tech and startups, from the inside. Highly relevant for software engineers, AI engineers and engineering leaders, useful for those working in tech.]]></description><link>https://newsletter.pragmaticengineer.com</link><image><url>https://substackcdn.com/image/fetch/$s_!eod5!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27076b05-e3f4-4d05-9621-3da4f7f189cd_300x300.png</url><title>The Pragmatic Engineer</title><link>https://newsletter.pragmaticengineer.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 14 Aug 2026 15:22:26 GMT</lastBuildDate><atom:link href="https://newsletter.pragmaticengineer.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Gergely Orosz]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[pragmaticengineer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[pragmaticengineer@substack.com]]></itunes:email><itunes:name><![CDATA[Gergely Orosz]]></itunes:name></itunes:owner><itunes:author><![CDATA[Gergely Orosz]]></itunes:author><googleplay:owner><![CDATA[pragmaticengineer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[pragmaticengineer@substack.com]]></googleplay:email><googleplay:author><![CDATA[Gergely Orosz]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Stop being skeptical about AI for development with Charity Majors]]></title><description><![CDATA[In 2025, it was rational to be skeptical about AI. In 2026, it's not, anymore. With Charity Majors, CTO and co-founder of Honeycomb.]]></description><link>https://newsletter.pragmaticengineer.com/p/stop-being-skeptical-about-ai-for</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/stop-being-skeptical-about-ai-for</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 12 Aug 2026 16:45:07 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/210687046/c0fb00207dd48d417228414f62510f3f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/HC8T1OlgYi0">YouTube</a>, <a href="https://podcasts.apple.com/us/podcast/the-pragmatic-engineer/id1769051199">Apple</a>, and <a href="https://open.spotify.com/show/2Bho9xCbOQMWMJ7UKmqCzD">Spotify</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TArv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TArv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png 424w, https://substackcdn.com/image/fetch/$s_!TArv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png 848w, https://substackcdn.com/image/fetch/$s_!TArv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png 1272w, https://substackcdn.com/image/fetch/$s_!TArv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TArv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png" width="1456" height="127" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:127,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34414,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/210687046?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TArv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png 424w, https://substackcdn.com/image/fetch/$s_!TArv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png 848w, https://substackcdn.com/image/fetch/$s_!TArv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png 1272w, https://substackcdn.com/image/fetch/$s_!TArv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bda57d7-998f-464d-bb13-7b961d6b3598_1600x140.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><strong><span>&#8226; </span><a href="https://antithesis.com/pragmatic"><span>Antithesis</span></a></strong><span> &#8211; turbocharge testing of your systems by running your whole system under aggressive fault injection. There&#8217;s good reason teams like Jane Street, Fly.io, and the etcd community rely on Antithesis. </span><a href="https://antithesis.com/pragmatic"><span>Learn more.</span></a></p><p>&#8226; <strong><a href="http://buildkite.com/pragmatic">Buildkite</a> &#8211; </strong><span>the CI platform trusted by OpenAI, Anthropic, Cursor, Meta, Uber, </span>NVIDIA<span>, Airbnb and many more. When CI volume becomes an architecture problem, you deserve better CI. Engineered to reliably manage whatever your coding agents throw at the build queue: today, next year, and beyond. </span><a href="https://buildkite.com/pragmatic"><span>Learn more.</span></a></p><p><strong><span>&#8226; </span><a href="https://workos.com/"><span>WorkOS</span></a></strong><span> &#8211; make your app and agents Enterprise Ready, with SSO, SCIM, RBAC, and more. </span><a href="https://workos.com/"><span>Get started</span></a><span>.</span></p><h3><strong>In this episode</strong></h3><p><span>In 2025, it was rational to be skeptical about AI, but in 2026 it&#8217;s clear that AI is changing all of the industry, and there&#8217;s less and less place for skepticism. This take is from one of my favorite voices in software reliability and observability: Charity Majors, CTO and cofounder of Honeycomb, co-author of </span><a href="https://www.oreilly.com/library/view/observability-engineering-2nd/9781098179915/"><span>Observability Engineering</span></a><span>. (Note: the </span><a href="https://www.oreilly.com/library/view/observability-engineering-2nd/9781098179915/"><span>second edition of Observability Engineering</span></a><span> is out, and it&#8217;s pretty much a full rewrite of the book, I recommend grabbing it if you&#8217;re building reliable systems)</span></p><p><span>In this episode, I sat down with Charity to discuss how her thinking on AI has evolved, why she believes it is becoming a foundational part of software engineering, and what that means for how teams build, review, and ship software.</span></p><p><span>We explore how AI is changing the economics of code generation, why reliability and verification are increasingly the bottlenecks, and why the rise of non-deterministic systems requires more engineering discipline. Charity shares her views on code reviews, observability, DevOps, leadership, and why both AI skeptics and enthusiasts are getting important things right.</span></p><h3>Takeaways from the conversation with Charity</h3><div id="youtube2-HC8T1OlgYi0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;HC8T1OlgYi0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/HC8T1OlgYi0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><span>Here are 13 parts I found especially interesting, talking with Charity:</span></p><p><strong><span>1. In March 2025, Charity told the audience at SREcon to try vibe coding, and back then, the response was grumbling.</span></strong><span> Charity&#8217;s point was that people who are skeptical of AI should still learn to use it, because you can complain better if you&#8217;ve learned it. At this time, Charity still saw AI having a bigger impact than a new programming language, but was skeptical that it would have a generational impact.&#8203;</span></p><p><strong><span>2. Charity&#8217;s turning point in seeing AI as a generational change was in November 2025. </span></strong><span>This was due to Opus 4.5, but Charity argues that the coding harness (Claude Code) made the bigger difference. Because thanks to Claude Code, harnesses went from being more of a shell script to serious infrastructure.&#8203;</span></p><p><strong><span>3. The impact of AI on the industry in 2025 was similar to the impact of the cloud in 2010. </span></strong><span>Looking back, Charity is comfortable saying this: in 2010, it became clear that cloud computing was certainly going mainstream and would change the infra-layer. After 2025, it&#8217;s also clear that AI will have a similar impact on the infrastructure of building software.</span></p><p><strong><span>4. Engineers who were skeptical of AI up to 2025: they had good reason to be so.</span></strong><span> This was because we&#8217;ve seen plenty of technologies and innovations in the past that all promised to transform the software industry, but later fell short. Examples include COBOL (a technology promising that programmers would no longer be needed to create software), neural nets, no-code and low-code tools.&#8203;</span></p><p><strong><span>5. The question engineers need to answer: what would it take for you to be fully comfortable shipping code you have not read? </span></strong><span>Charity believes it is a &#8220;when&#8221; and not an &#8220;if&#8221; that professional software engineers will ship code they never looked at &#8211; and thus do not understand &#8211; to production. Engineering is building the systems that validate this code, and allow shipping with full confidence.</span></p><p><strong><span>6. AI could have the software industry go through the &#8220;pets&#8221; to &#8220;cattle&#8221; change that compute infra went through in the 2010s. </span></strong><span>Up to now, writing software from scratch was far more expensive than editing existing software. But now, generating hundreds of variants of a function can be done faster than how long it would take you to hand-write it once.</span></p><p><span>Charity believes that we might be at the beginning of the transition from &#8220;pets&#8221; to &#8220;cattle&#8221; that happened at the hardware infrastructure layer. Before the 2010s, configuring and repairing individual servers was commonly done. But with tools like Terraform and Kubernetes, individual servers having issues are no longer fixed up: they are re-created instead. Charity thinks the same might happen with code, sooner rather than later. When there&#8217;s an issue with the code, generate new code that solves it, and is verifyably correct.&#8203;</span></p><p><strong><span>7. Her contrarian take: code review is overrated, and the least valuable part of what humans add to software engineering. </span></strong><span>Charity says that humans are good at conversations and deciding what to build, not reading code to check for correctness, syntax and bugs.&#8203;</span></p><p><strong><span>8. Charity&#8217;s verdict of 20 years of DevOps: it failed. </span></strong><span>The DevOps feedback was about trying to create a feedback loop that connected people writing the code to the code running in production. She thinks that the &#8220;ops people: learn to code!&#8221; wave worked, but the &#8220;software engineers: understand your code in production&#8221; failed,  to this day.</span></p><p><strong><span>9. Non-deterministic systems require more engineering discipline versus before. </span></strong><span>With code written by AI, we&#8217;re reducing the trust in the code (because we no longer wrote it), so we need to increase trust at the other part of the development process. Specifically, at validation: with things like tests, evals, and conformance testing.&#8203;</span></p><p><strong><span>10. Charity&#8217;s career advice for engineering directors: run towards the waves, and get AI on your resume, immediately. </span></strong><span>It&#8217;s an anxious time to work in tech, thanks to all the change, driven by AI. Charity reminds us that anxiety and excitement are physiologically almost the same, but the difference is agency. When you have no agency, you&#8217;re more likely to get anxious, and when you do, you&#8217;re more likely to get excited.</span></p><p><span>So her advice to anxious engineering directors: consider going back to IC work, where you&#8217;ll have far more agency. IC work is well-respected, getting back to it has never been easier, but the window to do so is closing. As she put it:&#8203;</span></p><blockquote><p><span>&#8220;The next time you&#8217;ll have a job interview, you&#8217;ll be filtered out if you don&#8217;t have AI experience.&#8221;&#8203;</span></p></blockquote><p><strong><span>11. On AI fatigue: take back control with small acts! </span></strong><span>We talked about various types of AI fatigue: reviewing AI slop, getting tired of the AI hype, and getting worn down by &#8220;doom trolling&#8221; by AI CEOs. Charity finds small acts of taking control back in your work from AI tools help. For example, none of the Honeycomb team uses AI on Wednesdays.&#8203;</span></p><p><strong><span>12. Charity would like to see both the &#8220;AI-pilled&#8221; and the &#8220;anti-AI&#8221; camps tell the stories better. </span></strong><span>As she put it:</span></p><p><span>&#8220;There are some really incredible things happening in software right now, for example, with rewrites and with automating away toil. Not a single person that I&#8217;ve talked to would give up using AI.</span></p><p><span>But half of the people are seeing the </span><em><span>wins,</span></em><span> and they&#8217;re not connecting it to the </span><em><span>cost</span></em><span>, which makes them think that their coworkers are just afraid of getting automated out of existence.</span></p><p><span>So that&#8217;s my beg to everyone who listens to this: tell the whole story! Talk about the costs as well. We&#8217;re all in it together.&#8221;</span></p><p><strong><span>13. Charity&#8217;s rule on AI writing: do not send any message/email to a human that you yourself have not read in full. </span></strong><span>She also says that it would take them longer to read whatever you send than it took you to produce it: it&#8217;s probably slop!</span></p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/shipping-to-production"><span>Shipping to production</span></a></p><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/measuring-ai-dev-tools"><span>Deepdive: How 10 tech companies choose the next generation of dev tools</span></a></p><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering"><span>Why is Meta destroying its engineering organization?</span></a></p><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/when-ai-writes-almost-all-code-what"><span>When AI writes almost all code, what happens to software engineering?</span></a></p><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/are-ai-agents-actually-slowing-us"><span>Are AI agents actually slowing us down?</span></a></p><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/observability-the-present-and-future"><span>Observability: the present and future</span></a><span>, with Charity Majors</span></p><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/the-third-golden-age-of-software"><span>The third golden age of software engineering &#8211; thanks to AI</span></a><span>, with Grady Booch</span></p><h3><strong>Timestamps</strong></h3><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0">00:00</a> Intro</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=176s">02:56</a> How Parse led to Honeycomb</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=360s">06:00</a> The limits of individual productivity metrics</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=548s">09:08</a> How Charity&#8217;s perspective on AI has evolved</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=830s">13:50</a> Rewriting code vs. editing code</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=1160s">19:20</a> Production as a stage of development</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=1334s">22:14</a> Code reviews</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=1616s">26:56</a> Non-deterministic systems</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=1871s">31:11</a> Sensible uses of AI</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=2261s">37:41</a> The two AI camps</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=2680s">44:40</a> Why AI works so well for building software</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=2982s">49:42</a> DevOps</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=3313s">55:13</a> Modern observability</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=3640s">1:00:40</a> Handling context overload</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=3716s">1:01:56</a> What&#8217;s new in Observability Engineering&#8217;s 2nd edition</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=4065s">1:07:45</a> What effective leadership looks like</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=4225s">1:10:25</a> Engineering management: what is changing?</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=4591s">1:16:31</a> Junior engineers</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=4681s">1:18:01</a> AI fatigue</p><p><a href="https://www.youtube.com/watch?v=HC8T1OlgYi0&amp;t=4899s">1:21:39</a> Book recommendations</p><h3><strong>References</strong></h3><p><strong><span>Where to find Charity Majors:</span></strong></p><p><span>&#8226; X: </span><a href="https://x.com/mipsytipsy"><span>https://x.com/mipsytipsy</span></a></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/charity-majors"><span>https://www.linkedin.com/in/charity-majors</span></a></p><p><span>&#8226; Website: </span></p><div class="embedded-publication-wrap" data-attrs="{&quot;id&quot;:2935724,&quot;embedding_publication_id&quot;:458709,&quot;name&quot;:&quot;charity.wtf&quot;,&quot;logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Tg4H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png&quot;,&quot;base_url&quot;:&quot;https://charity.wtf&quot;,&quot;hero_text&quot;:&quot;observability, tech advice, honeycomb.io, etc&quot;,&quot;author_name&quot;:&quot;Charity Majors&quot;,&quot;show_subscribe&quot;:true,&quot;logo_bg_color&quot;:&quot;#ffffff&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPublicationToDOMWithSubscribe"><div class="embedded-publication show-subscribe"><a class="embedded-publication-link-part" native="true" href="https://charity.wtf?utm_source=substack&amp;utm_campaign=publication_embed&amp;utm_medium=web&amp;embedding_publication_id=458709"><img class="embedded-publication-logo" src="https://substackcdn.com/image/fetch/$s_!Tg4H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png" width="56" height="56" style="background-color: rgb(255, 255, 255);"><span class="embedded-publication-name">charity.wtf</span><div class="embedded-publication-hero-text">observability, tech advice, honeycomb.io, etc</div><div class="embedded-publication-author-name">By Charity Majors</div></a><form class="embedded-publication-subscribe" method="GET" action="https://charity.wtf/subscribe?embedding_publication_id=458709"><input type="hidden" name="source" value="publication-embed"><input type="hidden" name="autoSubmit" value="true"><input type="email" class="email-input" name="email" placeholder="Type your email..."><input type="submit" class="button primary" value="Subscribe"></form></div></div><p><strong>Mentions during the episode:</strong></p><p><span>&#8226; Observability Engineering, 2nd Edition: </span><a href="https://www.oreilly.com/library/view/observability-engineering-2nd/9781098179915"><span>https://www.oreilly.com/library/view/observability-engineering-2nd/9781098179915</span></a></p><p><span>&#8226; Honeycomb: </span><a href="https://www.honeycomb.io">https://www.honeycomb.io</a></p><p><span>&#8226; Linden Lab: </span><a href="https://lindenlab.com">https://lindenlab.com</a></p><p><span>&#8226; Second Life: </span><a href="https://secondlife.com">https://secondlife.com</a></p><p><span>&#8226; Parse: </span><a href="https://en.wikipedia.org/wiki/Parse,_Inc"><span>https://en.wikipedia.org/wiki/Parse,_Inc</span></a><span>.</span></p><p><span>&#8226; Scuba: </span><a href="https://research.facebook.com/publications/scuba-diving-into-data-at-facebook"><span>https://research.facebook.com/publications/scuba-diving-into-data-at-facebook</span></a></p><p><span>&#8226; Can You Really Measure Individual Developer Productivity? - Ask the EM: </span><a href="https://blog.pragmaticengineer.com/can-you-measure-developer-productivity"><span>https://blog.pragmaticengineer.com/can-you-measure-developer-productivity</span></a></p><p><span>&#8226; Let&#8217;s Talk Agentic Development: Spotify x Anthropic Live: </span><a href="https://engineering.atspotify.com/2026/4/anthropic-agentic-development"><span>https://engineering.atspotify.com/2026/4/anthropic-agentic-development</span></a></p><p><span>&#8226; Questionable Advice: Can Engineering Productivity Be Measured?: </span></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:181561532,&quot;url&quot;:&quot;https://charity.wtf/p/questionable-advice-can-engineering-productivity-be-measured&quot;,&quot;publication_id&quot;:2935724,&quot;embedding_publication_id&quot;:458709,&quot;publication_name&quot;:&quot;charity.wtf&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Tg4H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png&quot;,&quot;title&quot;:&quot;Questionable Advice: Can Engineering Productivity Be Measured?&quot;,&quot;truncated_body_text&quot;:&quot;I follow you on Twitter and read your blog. I particularly enjoy this post: https://charity.wtf/2019/05/01/friday-deploy-freezes-are-exactly-like-murdering-puppies/ I&#8217;m reaching out looking for some guidance.&quot;,&quot;date&quot;:&quot;2020-07-07T03:37:04.000Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:32306597,&quot;name&quot;:&quot;Charity Majors&quot;,&quot;handle&quot;:&quot;charitydotwtf&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!EAp-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7a54851-0549-41da-b041-3cfc959ec0ba_3088x2316.jpeg&quot;,&quot;bio&quot;:&quot;cofounder and CTO of honeycomb.io; pioneered modern observability. co-author of O'Reilly books \&quot;Database Reliability Engineering\&quot; and \&quot;Observability Engineering\&quot;, now wrapping up the 2nd ed. loves free software, free speech, and peaty single malts.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-24T22:50:45.155Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-08-30T02:09:51.674Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:2985119,&quot;user_id&quot;:32306597,&quot;publication_id&quot;:2935724,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:2935724,&quot;name&quot;:&quot;charity.wtf&quot;,&quot;subdomain&quot;:&quot;charitydotwtf&quot;,&quot;custom_domain&quot;:&quot;charity.wtf&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;observability, tech advice, honeycomb.io, etc&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png&quot;,&quot;author_id&quot;:32306597,&quot;primary_user_id&quot;:32306597,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2024-08-26T05:48:54.313Z&quot;,&quot;email_from_name&quot;:&quot;Charity Majors&quot;,&quot;copyright&quot;:&quot;Charity Majors&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;profile&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:5,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:5,&quot;accent_colors&quot;:null},&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://charity.wtf/p/questionable-advice-can-engineering-productivity-be-measured?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web&amp;embedding_publication_id=458709"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!Tg4H!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png" loading="lazy"><span class="embedded-post-publication-name">charity.wtf</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Questionable Advice: Can Engineering Productivity Be Measured?</div></div><div class="embedded-post-body">I follow you on Twitter and read your blog. I particularly enjoy this post: https://charity.wtf/2019/05/01/friday-deploy-freezes-are-exactly-like-murdering-puppies/ I&#8217;m reaching out looking for some guidance&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">6 years ago &#183; Charity Majors</div></a></div><p><span>&#8226; 2025 was for AI what 2010 was for cloud: </span></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:182350864,&quot;url&quot;:&quot;https://charity.wtf/p/2025-was-for-ai-what-2010-was-for&quot;,&quot;publication_id&quot;:2935724,&quot;embedding_publication_id&quot;:458709,&quot;publication_name&quot;:&quot;charity.wtf&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Tg4H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png&quot;,&quot;title&quot;:&quot;2025 was for AI what 2010 was for cloud&quot;,&quot;truncated_body_text&quot;:&quot;I was at my very first job, Linden Lab, when EC2 and S3 came out in 2006. We were running Second Life out of three datacenters, where we racked and stacked all the servers ourselves. At the time, we were tangling with a slightly embarrassing data problem in that there was no real way for users to delete objects (the Trash folder was just another folder)&#8230;&quot;,&quot;date&quot;:&quot;2025-12-22T20:11:20.801Z&quot;,&quot;like_count&quot;:43,&quot;comment_count&quot;:2,&quot;bylines&quot;:[{&quot;id&quot;:32306597,&quot;name&quot;:&quot;Charity Majors&quot;,&quot;handle&quot;:&quot;charitydotwtf&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!EAp-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7a54851-0549-41da-b041-3cfc959ec0ba_3088x2316.jpeg&quot;,&quot;bio&quot;:&quot;cofounder and CTO of honeycomb.io; pioneered modern observability. co-author of O'Reilly books \&quot;Database Reliability Engineering\&quot; and \&quot;Observability Engineering\&quot;, now wrapping up the 2nd ed. loves free software, free speech, and peaty single malts.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-24T22:50:45.155Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-08-30T02:09:51.674Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:2985119,&quot;user_id&quot;:32306597,&quot;publication_id&quot;:2935724,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:2935724,&quot;name&quot;:&quot;charity.wtf&quot;,&quot;subdomain&quot;:&quot;charitydotwtf&quot;,&quot;custom_domain&quot;:&quot;charity.wtf&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;observability, tech advice, honeycomb.io, etc&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png&quot;,&quot;author_id&quot;:32306597,&quot;primary_user_id&quot;:32306597,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2024-08-26T05:48:54.313Z&quot;,&quot;email_from_name&quot;:&quot;Charity Majors&quot;,&quot;copyright&quot;:&quot;Charity Majors&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;profile&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:5,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:5,&quot;accent_colors&quot;:null},&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://charity.wtf/p/2025-was-for-ai-what-2010-was-for?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web&amp;embedding_publication_id=458709"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!Tg4H!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png" loading="lazy"><span class="embedded-post-publication-name">charity.wtf</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">2025 was for AI what 2010 was for cloud</div></div><div class="embedded-post-body">I was at my very first job, Linden Lab, when EC2 and S3 came out in 2006. We were running Second Life out of three datacenters, where we racked and stacked all the servers ourselves. At the time, we were tangling with a slightly embarrassing data problem in that there was no real way for users to delete objects (the Trash folder was just another folder&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">8 months ago &#183; 43 likes &#183; 2 comments &#183; Charity Majors</div></a></div><p><span>&#8226; AI demands more engineering discipline. Not less: </span></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:201425003,&quot;url&quot;:&quot;https://charity.wtf/p/ai-demands-more-engineering-discipline&quot;,&quot;publication_id&quot;:2935724,&quot;embedding_publication_id&quot;:458709,&quot;publication_name&quot;:&quot;charity.wtf&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Tg4H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png&quot;,&quot;title&quot;:&quot;AI demands more engineering discipline. Not less&quot;,&quot;truncated_body_text&quot;:&quot;A few days back I wrote a piece called &#8220;AI enthusiasts are in a race against time, AI skeptics are in a race against entropy.&#8221;&quot;,&quot;date&quot;:&quot;2026-06-15T05:35:09.643Z&quot;,&quot;like_count&quot;:202,&quot;comment_count&quot;:52,&quot;bylines&quot;:[{&quot;id&quot;:32306597,&quot;name&quot;:&quot;Charity Majors&quot;,&quot;handle&quot;:&quot;charitydotwtf&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!EAp-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7a54851-0549-41da-b041-3cfc959ec0ba_3088x2316.jpeg&quot;,&quot;bio&quot;:&quot;cofounder and CTO of honeycomb.io; pioneered modern observability. co-author of O'Reilly books \&quot;Database Reliability Engineering\&quot; and \&quot;Observability Engineering\&quot;, now wrapping up the 2nd ed. loves free software, free speech, and peaty single malts.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-24T22:50:45.155Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-08-30T02:09:51.674Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:2985119,&quot;user_id&quot;:32306597,&quot;publication_id&quot;:2935724,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:2935724,&quot;name&quot;:&quot;charity.wtf&quot;,&quot;subdomain&quot;:&quot;charitydotwtf&quot;,&quot;custom_domain&quot;:&quot;charity.wtf&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;observability, tech advice, honeycomb.io, etc&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png&quot;,&quot;author_id&quot;:32306597,&quot;primary_user_id&quot;:32306597,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2024-08-26T05:48:54.313Z&quot;,&quot;email_from_name&quot;:&quot;Charity Majors&quot;,&quot;copyright&quot;:&quot;Charity Majors&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;profile&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:5,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:5,&quot;accent_colors&quot;:null},&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://charity.wtf/p/ai-demands-more-engineering-discipline?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web&amp;embedding_publication_id=458709"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!Tg4H!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png" loading="lazy"><span class="embedded-post-publication-name">charity.wtf</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">AI demands more engineering discipline. Not less</div></div><div class="embedded-post-body">A few days back I wrote a piece called &#8220;AI enthusiasts are in a race against time, AI skeptics are in a race against entropy&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 months ago &#183; 202 likes &#183; 52 comments &#183; Charity Majors</div></a></div><p><span>&#8226; The Phoenix Architecture: </span><a href="https://aicoding.leaflet.pub">https://aicoding.leaflet.pub</a></p><p><span>&#8226; The third golden age of software engineering &#8211; thanks to AI, with Grady Booch: </span><a href="https://newsletter.pragmaticengineer.com/p/the-third-golden-age-of-software"><span>https://newsletter.pragmaticengineer.com/p/the-third-golden-age-of-software</span></a></p><p><span>&#8226; Software architecture with Grady Booch: </span><a href="https://newsletter.pragmaticengineer.com/p/software-architecture-with-grady-booch"><span>https://newsletter.pragmaticengineer.com/p/software-architecture-with-grady-booch</span></a></p><p><span>&#8226; TypeScript, C# and Turbo Pascal with Anders Hejlsberg: </span><a href="https://newsletter.pragmaticengineer.com/p/typescript-c-and-turbo-pascal-with"><span>https://newsletter.pragmaticengineer.com/p/typescript-c-and-turbo-pascal-with</span></a></p><p><span>&#8226; David Poll on LinkedIn: </span><a href="https://www.linkedin.com/in/depoll"><span>https://www.linkedin.com/in/depoll</span></a></p><p><span>&#8226; Intercom: </span><a href="https://www.intercom.com">https://www.intercom.com</a></p><p><span>&#8226; AI is approving our pull requests: Here&#8217;s how we made it safe: </span><a href="https://www.intercom.com/blog/ai-is-approving-our-pull-requests-heres-how-we-made-it-safe/"><span>https://www.intercom.com/blog/ai-is-approving-our-pull-requests-heres-how-we-made-it-safe</span></a></p><p><span>&#8226; How AI will change software engineering &#8211; with Martin Fowler: </span><a href="https://newsletter.pragmaticengineer.com/p/martin-fowler"><span>https://newsletter.pragmaticengineer.com/p/martin-fowler</span></a></p><p><span>&#8226; HackerRank open sourced its ATS. My resume scored 90/100. Oh wait 74. No &#8211; 88: </span><a href="https://news.ycombinator.com/item?id=48713832"><span>https://news.ycombinator.com/item?id=48713832</span></a></p><p><span>&#8226; AI enthusiasts are in a race against time, AI skeptics are in a race against entropy: </span></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:200204086,&quot;url&quot;:&quot;https://charity.wtf/p/ai-enthusiasts-are-in-a-race-against&quot;,&quot;publication_id&quot;:2935724,&quot;embedding_publication_id&quot;:458709,&quot;publication_name&quot;:&quot;charity.wtf&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Tg4H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png&quot;,&quot;title&quot;:&quot;AI enthusiasts are in a race against time, AI skeptics are in a race against entropy&quot;,&quot;truncated_body_text&quot;:&quot;I recently attended a talk where one of the presenters made some pretty&#8230;astonishing claims about what they had achieved by the pure, uncut power of vibe coding. Difficult engineering problems solved, backlogs cleared. Rewrites that would have taken a year or more in the beforetimes, now whipped out in a few short weeks of prompting. Afterwards, wanderin&#8230;&quot;,&quot;date&quot;:&quot;2026-06-02T21:25:36.035Z&quot;,&quot;like_count&quot;:204,&quot;comment_count&quot;:41,&quot;bylines&quot;:[{&quot;id&quot;:32306597,&quot;name&quot;:&quot;Charity Majors&quot;,&quot;handle&quot;:&quot;charitydotwtf&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!EAp-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7a54851-0549-41da-b041-3cfc959ec0ba_3088x2316.jpeg&quot;,&quot;bio&quot;:&quot;cofounder and CTO of honeycomb.io; pioneered modern observability. co-author of O'Reilly books \&quot;Database Reliability Engineering\&quot; and \&quot;Observability Engineering\&quot;, now wrapping up the 2nd ed. loves free software, free speech, and peaty single malts.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-11-24T22:50:45.155Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-08-30T02:09:51.674Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:2985119,&quot;user_id&quot;:32306597,&quot;publication_id&quot;:2935724,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:2935724,&quot;name&quot;:&quot;charity.wtf&quot;,&quot;subdomain&quot;:&quot;charitydotwtf&quot;,&quot;custom_domain&quot;:&quot;charity.wtf&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;observability, tech advice, honeycomb.io, etc&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png&quot;,&quot;author_id&quot;:32306597,&quot;primary_user_id&quot;:32306597,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2024-08-26T05:48:54.313Z&quot;,&quot;email_from_name&quot;:&quot;Charity Majors&quot;,&quot;copyright&quot;:&quot;Charity Majors&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;profile&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:5,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:5,&quot;accent_colors&quot;:null},&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://charity.wtf/p/ai-enthusiasts-are-in-a-race-against?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web&amp;embedding_publication_id=458709"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!Tg4H!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194fc089-9e91-4a15-85cc-5da3fca53eed_1280x1280.png" loading="lazy"><span class="embedded-post-publication-name">charity.wtf</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">AI enthusiasts are in a race against time, AI skeptics are in a race against entropy</div></div><div class="embedded-post-body">I recently attended a talk where one of the presenters made some pretty&#8230;astonishing claims about what they had achieved by the pure, uncut power of vibe coding. Difficult engineering problems solved, backlogs cleared. Rewrites that would have taken a year or more in the beforetimes, now whipped out in a few short weeks of prompting. Afterwards, wanderin&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 months ago &#183; 204 likes &#183; 41 comments &#183; Charity Majors</div></a></div><p><span>&#8226; Ep. #89, Software is the Killer App with Bryan Cantrill of 0xide Computer: </span><a href="https://www.honeycomb.io/resources/podcasts/ep-89-bryan-cantrill-software-is-the-killer-app"><span>https://www.honeycomb.io/resources/podcasts/ep-89-bryan-cantrill-software-is-the-killer-app</span></a></p><p><span>&#8226; Eric Riddoch&#8217;s post on LinkedIn: </span><a href="https://www.linkedin.com/posts/eric-riddoch_the-observability-engineering-book-has-share-7475807056285814785-pw4J"><span>https://www.linkedin.com/posts/eric-riddoch_the-observability-engineering-book-has-share-7475807056285814785-pw4J</span></a></p><p><span>&#8226; Why traditional observability misses AI agent failure: </span><a href="https://www.dataiku.com/blog/traditional-observability-misses-ai-agent-failure"><span>https://www.dataiku.com/blog/traditional-observability-misses-ai-agent-failure</span></a></p><p><span>&#8226; Charity&#8217;s LinkedIn post on effective leaders: </span><a href="https://www.linkedin.com/posts/charity-majors_the-most-effective-leaders-are-kind-caring-share-7477160924928233472-qcLw/"><span>https://www.linkedin.com/posts/charity-majors_the-most-effective-leaders-are-kind-caring-share-7477160924928233472-qcLw</span></a></p><p><span>&#8226; Catastrophe Ethics: How to Choose Well in a World of Tough Choices: </span><a href="https://www.amazon.com/dp/0593471970"><span>https://www.amazon.com/dp/0593471970</span></a></p><p><span>&#8226; More Everything Forever: AI Overlords, Space Empires, and Silicon Valley&#8217;s Crusade to Control the Fate of Humanity: </span><a href="https://www.amazon.com/More-Everything-Forever-Overlords-Humanity/dp/1541619595"><span>https://www.amazon.com/More-Everything-Forever-Overlords-Humanity/dp/1541619595</span></a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[Software engineering at a proprietary trading company: Optiver]]></title><description><![CDATA[A shift from a focus on latency to building better AI models, owning the full stack from applications to building custom hardware, very different incentives to most tech companies in play, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/optiver</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/optiver</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 11 Aug 2026 16:17:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GFOE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>Before we start: I&#8217;ll be in New York, on 15 September, presenting the keynote at </span><a href="https://leaddev.com/leaddev-new-york/?utm_source=pragmaticengineer&amp;utm_medium=newsletter-social&amp;utm_campaign=NYC26-media-community-partner"><span>LDX3 New York</span></a><span>, doing a book signing, and hanging out with attendees. The focus of the conference is engineering leadership at a time when things are moving very fast. </span><strong><a href="https://leaddev.com/leaddev-new-york/?utm_source=pragmaticengineer&amp;utm_medium=newsletter-social&amp;utm_campaign=NYC26-media-community-partner"><span>See the full agenda and get tickets</span></a><span>. </span></strong><span>If you&#8217;ll be around &#8211; hopefully catch you there!</span></em></p><div><hr></div><p><em><span>The Pragmatic Engineer is back from our summer break. We resume with a detailed deepdive about the trading industry, and interesting engineering challenges that come when working at a company that has no external customers, but where a single, unfortunate enough software bug could wipe out the whole company.</span></em></p><p><span>In tech recruitment, proprietary trading companies have a particularly high bar and typically offer compensation on a par with, or even exceeding, Big Tech; right at the top of the market. That&#8217;s because for these market makers, success is all about gaining a competitive edge over rivals. Such competitive advantages today includes software that is superior to that at their competitors.</span></p><p><strong><span>Software engineers tend to know little about trading companies &#8211; and this piece aims to change that. </span></strong><span>Trading companies build bespoke hardware stacks and have larger platform engineering teams than most workplaces. For software engineers, it&#8217;s a lucrative niche in terms of compensation, full-stack (hardware to software) work and for engineering challenges, and so we decided to go deeper in this interesting area.</span></p><p><span>In order to find out more, The Pragmatic Engineer sat down with a leading proprietary trading firm, </span><a href="https://www.optiver.com/"><span>Optiver</span></a><span>. Headquartered in Amsterdam, they also have a large engineering presence in the US and globally. We met engineers and engineering leaders to learn in depth how engineering works in a modern trading business, with contributions from:</span></p><ul><li><p><a href="https://www.linkedin.com/in/alexander-itkin-5b070532/"><span>Alex Itkin</span></a><span>: CTO, Optiver US</span></p></li><li><p><a href="https://www.linkedin.com/in/pat-cooney-1226a23b4/"><span>Pat Cooney</span></a><span>: Head of Global Platform Engineering</span></p></li><li><p><a href="https://www.linkedin.com/in/david-gross-cpp/"><span>David Gross</span></a><span>: Technology Lead, Options</span></p></li></ul><p><span>Thanks to everyone at Optiver for taking part in this report which lifts the lid on how software engineering is done when even nanoseconds can count. In this article, we look into a software engineering environment that&#8217;s distinct from what you expect at most startups and Big Tech. For example:</span></p><ul><li><p><strong><span>No external customers. </span></strong><span>Usually, companies have consumer customers (B2C), business customers (B2B), or both. But not trading houses like Optiver, where their own business is </span><em><span>the</span></em><span> customer. This is a different reality: there&#8217;s no external deadlines and related pressures, but personal motivation to improve is highly valued.</span></p></li><li><p><strong><span>Latency: &#8220;enemy number one&#8221;. </span></strong><span>Nearly every major engineering decision at Optiver is made in the interest of minimizing latency &#8211; the amount of time between a request and response. This approach is present across the software stack and in kernel-level work. It&#8217;s why Optiver manufactures its own hardware.</span></p></li><li><p><strong><span>Today, latency is the floor, and AI models are becoming a differentiator. </span></strong><span>Gone are the days of having lower latency than the competition allowing for arbitrage opportunities to make risk-free profits. Instead, information models are becoming a differentiator: slow models with a fast trigger sending signals to execute trades, and fast models running at the edge of the network making trade decisions realtime.</span></p></li><li><p><strong><span>Haunted by a bug that nearly killed a business.</span></strong><span> Among trading houses, there&#8217;s a cautionary tale of when a peer company, </span><a href="https://en.wikipedia.org/wiki/Knight_Capital_Group#2012_stock_trading_disruption"><span>Knight Capital</span></a><span>, nearly went bankrupt after a single bug in a high-frequency trading system triggered a $440M loss.</span></p></li><li><p><strong><span>Different incentives. </span></strong><span>The business is incentivized to move very fast, but with a high premium on caution in order to avert potential financial disasters on the market. This cautious attitude to risk in concert with chasing speed feels pretty distinct in tech.</span></p></li></ul><p><span>I this deepdive, we cover:</span></p><ol><li><p><strong><span>Overview of trading &amp; hedge funds. </span></strong><span>Categories of trading companies, high-frequency trading (HFT), plenty of ML &amp; math, and AI labs poaching HFT talent</span></p></li><li><p><strong><span>Engineering organization. </span></strong><span>How trading-specific roles work together, platform engineering, the &#8220;build and own&#8221; culture, and more.</span></p></li><li><p><strong><span>Software tech stack. </span></strong><span>The three-layer tech stack, languages and tools, CI/CD stack and the data layer.</span></p></li><li><p><strong><span>Hardware engineering, FPGAs and Silicon. </span></strong><span>Latency progression, custom FPGAs, custom hardware, AMD hardware partnership, and more.</span></p></li><li><p><strong><span>Network &amp; physical infrastructure. </span></strong><span>Physical infrastructure, dedicated fiber &amp; wavelength leasing, optical cable, radio, data centers &amp; co-locations, and why AI models matter more than ever before.</span></p></li><li><p><strong><span>Engineering practices.</span></strong><span> Risk vs speed, knowledge-sharing culture, testing culture, monitoring &amp; incident detection, risk management.</span></p></li><li><p><strong><span>AI at Optiver. </span></strong><span>AI tooling stack, future of agentic coding, details about adoption, and how it all looks in practice.</span></p></li><li><p><strong><span>Hiring, career development &amp; culture. </span></strong><span>Engineering levels at Optiver, going</span><strong><span> </span></strong><span>from hiring mostly juniors to hiring experienced engineers today, competition during hiring, and the onboarding feedback loop.</span></p></li></ol><p><span>We&#8217;re delighted to publish this report, including details never shared before. Let&#8217;s dive in!</span></p><h2><span>1. Overview of trading &amp; hedge funds</span></h2><p><span>Here&#8217;s a summary of the world of &#8216;prop shops&#8217;; another name for firms like Optiver that invest their own funds in trading financial assets. Below are some useful mental models for understanding the sector.</span></p><h3><span>How trading operates</span></h3><h4><span>Buy side/sell side</span></h4><ul><li><p><strong><span>Buy side: </span></strong><span>companies invest money and earn returns. Examples: hedge funds, asset managers, pension funds.</span></p></li><li><p><strong><span>Sell side:</span></strong><span> firms sell services or products such as advice, underwriting, research, execution, etc. These are usually investment banks and broker-dealers.</span></p></li></ul><p><span>Optiver is on the &#8220;buy side&#8221;, as a prop shop.</span></p><h4><span>Sources of capital</span></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lYMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lYMQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png 424w, https://substackcdn.com/image/fetch/$s_!lYMQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png 848w, https://substackcdn.com/image/fetch/$s_!lYMQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png 1272w, https://substackcdn.com/image/fetch/$s_!lYMQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lYMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png" width="1456" height="1112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1112,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:166942,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/209934932?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lYMQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png 424w, https://substackcdn.com/image/fetch/$s_!lYMQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png 848w, https://substackcdn.com/image/fetch/$s_!lYMQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png 1272w, https://substackcdn.com/image/fetch/$s_!lYMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c08f97a-e84e-4a4a-a4e5-87f8da178e80_1694x1294.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Trading categories based on capital source</figcaption></figure></div><p><span>Based on whose money is being traded, there are three main capital sources:</span></p><ol><li><p><strong><span>Investment banks </span></strong><span>serve corporate and institutional clients by raising capital, advising on deals, and executing trades on their behalf. Examples: Goldman Sachs, JPMorgan, Morgan Stanley.</span></p></li><li><p><strong><span>Hedge funds </span></strong><span>raise money from external investors and trade it on their behalf, charging management &amp; performance fees. Examples: Citadel, Millennium, Two Sigma, Bridgewater.</span></p></li><li><p><strong><span>Proprietary trading firms</span></strong><span> trade only their own capital, with no clients or external funding. Examples: Optiver, Jane Street, Jump Trading, DRW, Hudson River Trading.</span></p></li></ol><h3><span>Trading eras</span></h3><p><span>Optiver&#8217;s CTO US Alex Itkin pictures the evolution of trading as having unfolded across four eras to date:</span></p><ol><li><p><strong><span>Pre-electronic (pre-1990s).</span></strong><span> Trading was done face-to-face on noisy trading floors and by phone. Prices were shared on reels of ticker tape and printed in newspapers. Investors contacted brokers to place orders.</span></p></li><li><p><strong><span>First wave of electronification (early/mid 1990s).</span></strong><span> Financial markets moved onto computer screens but orders were still entered manually.</span></p></li><li><p><strong><span>Automated trading (late 1990s to ~2015).</span></strong><span> Computers did the same as human traders, but faster and at scale. This was the &#8220;mechanical&#8221; automation era of building automated workflows without data-driven decision-making.</span></p></li><li><p><strong><span>Quantitative trading (~2015 to present).</span></strong><span> Data-driven decision-making with machine learning models and inference compute, with human decision-making in some key areas.</span></p></li></ol><p><strong><span>Each era &#8220;weeded&#8221; the market. </span></strong><span>Some companies excelled at automated trading but never made the leap to quantitative trading. According to Itkin, competition has got tougher over time, while the number of serious players has decreased. Today, there are only a handful of really big firms, and one reason for this is cost: investment in research clusters &#8211; which serious prop shops all do &#8211; requires hundreds of millions of dollars.</span></p><h3><span>Optiver at a glance</span></h3><p><span>Optiver turned 40 years old in March 2026, launching in 1986 at the European Options Exchange. Today, the company has:</span></p><ul><li><p><strong><span>~2,200</span></strong><span> employees</span></p></li><li><p><strong><span>~950</span></strong><span> engineers and ~1,000 traders and researchers</span></p></li><li><p><strong><span>11</span></strong><span> </span><strong><span>offices</span></strong><span>: Amsterdam (HQ), Chicago (US HQ), Austin, New York (2025), London, Sydney, Shanghai, Hong Kong, Singapore, Taipei, and Mumbai.</span></p></li><li><p><strong><span>10M+</span></strong><span> trades executed per day, across 100 exchanges</span></p></li><li><p><strong><span>&#8364;4.5B </span></strong><span>($5.1B) in trading income, and &#8364;1.7B ($1.95B) profit, as per </span><a href="https://www.optiver.com/insights/news/optiver-reports-robust-financial-results-for-2025/"><span>2025 financial results</span></a></p></li></ul><p><span>Optiver is a mix of:</span></p><ul><li><p><strong><span>Market maker</span></strong><span>: providing liquidity on exchanges by quoting &#8216;buy&#8217; and &#8216;sell&#8217; prices of financial products and earning the spread between the two.</span></p></li><li><p><strong><span>High-frequency trader:</span></strong><span> executing automated trading strategies at very low latency</span></p></li></ul><h3><span>High-Frequency Trading (HFT)</span></h3><p><span>High-frequency trading involves placing high volumes of orders at lightning speed in an effort to take advantage of extremely rapid market movements. In this domain, speed is the biggest advantage, and achieving it obviously involves high-performance computing. The basic trading loop is run millions of times a day. It&#8217;s made up of three steps:</span></p><ol><li><p><strong><span>Watch</span></strong><span> the market for new information like price changes</span></p></li><li><p><strong><span>Decide</span></strong><span> what the information means and the right trade to make</span></p></li><li><p><strong><span>Send</span></strong><span> a trade to the exchange before competitors do</span></p></li></ol><p><span>In trading, timing is everything, and for some types of trade even nanoseconds count. Optiver&#8217;s fastest trading system operates in the realm of sub-nanosecond, where measurement noise becomes a challenge in itself. Software, hardware, and physics are all involved, along with microwave and shortwave links between data centers, and custom-manufactured chips.</span></p><p><em><span>We go deep into this in the &#8220;Hardware Engineering&#8221; section below.</span></em></p><p><strong><span>However, in this niche, even ultra-low latency is no longer a competitive moat in itself</span></strong><span>. As competitors have squeezed performance out of their systems, focus has shifted towards fine-tuning of trading strategies. Today, Optiver invests substantially more in building better models than it does in lowering latencies.</span><em><span> More on this in the &#8220;Network and physical infrastructure&#8221; </span></em><span>section below.</span></p><p><strong><span>HFT evolves faster than other industries. </span></strong><span>Profitable strategies don&#8217;t last long, opportunities are fleeting, and innovation is a constant. In this environment, a tool like AI is relatively straightforward to implement because trading houses like Optiver are well used to change in their daily business environment. </span><em><span>More on this topic in the &#8216;Optiver &amp; AI&#8217; section.</span></em></p><h3><span>Plenty of ML &amp; math</span></h3><p><span>There&#8217;s a big role for machine learning (ML) and mathematics in quantitative trading. A good chunk of Optiver&#8217;s business is the buying and selling of </span><a href="https://en.wikipedia.org/wiki/Option_(finance)"><span>options</span></a><span>, and the pricing of these rests on mathematical theorems like the </span><a href="https://en.wikipedia.org/wiki/Black%E2%80%93Scholes_model"><span>Black-Scholes model</span></a><span>. Traders, quants, and even software engineers building option-pricing strategies must understand the math of this problem space.</span></p><p><span>Over time, machine learning is becoming more important than math models, but it&#8217;s worth keeping in mind that trading is not purely an ML pursuit.</span></p><p><strong><span>AI infra providers are heavily involved. </span></strong><span>NVIDIA, Groq, and Cerebras are actively courting trading firms, due to how much money they spend on GPUs. For example, see Hudson River Trading </span><a href="https://resources.nvidia.com/en-us-financial-services-industry/hudson-river"><span>discussing</span></a><span> Blackwell deployments at NVIDIA&#8217;s GTC conference, or Jump Trading being among the first </span><a href="https://www.jumptrading.com/signals"><span>to deploy</span></a><span> next-gen Vera Rubin systems. HFT companies have very clear monetization paths for GPUs and spend large sums on hardware, hence why NVIDIA and other suppliers are keen to partner with them.</span></p><h3><span>AI labs poach trading talent</span></h3><p><span>One new trend is AI labs like Anthropic and OpenAI recruiting from prop shops, defying the assumption that AI labs mostly recruit from Big Tech. There are a few reasons why AI labs seek out talent from the trading world:</span></p><ul><li><p><strong><span>Infra expertise.</span></strong><span> Prop shops like Optiver have spent decades operating their own data centers and deploying on-prem hardware at co-location facilities.</span></p></li><li><p><strong><span>Custom, high-performance hardware. </span></strong><span>Prop shops also often build their own hardware and their kernel stacks achieve very low latencies. That&#8217;s a talent AI labs seek!</span></p></li><li><p><strong><span>Skillsets. </span></strong><span>The highest-paying destinations for CS majors out of standout colleges are often prop shops, paying top-of-market compensation for standout talent. </span><em><span>Outside of select colleges prop shops recruit from, however, there tends to be little awareness about these companies for new grads, or across the industry.</span></em></p></li></ul><h2><span>2. Engineering organization</span></h2><h3><span>Two eras of Optiver tech</span></h3><p><span>Optiver&#8217;s history can be seen as two distinct ages:</span></p><ol><li><p><strong><span>Regional systems (&#8220;unblock yourself&#8221;: 1986-2020):</span></strong><span> internal systems and platforms were built to serve local needs, such as building support for a market. Systems built exclusively for the US, Europe, or Asia were common.</span></p></li><li><p><strong><span>Global platforms (&#8220;build for the whole company&#8221;: 2020-present): </span></strong><span>Optiver recently started to build new systems to work globally across their platform. This global focus is also why the company is investing a lot more in its platform engineering arm. A globalization push started around 2023, and its momentum has been growing.</span></p></li></ol><p><span>The benefit of the old &#8220;unblock yourself&#8221; approach of local teams building whatever they needed, was that it enabled them to move fast and not get held up by dependencies. But this became problematic because of fragmentation and duplication, and the downsides became more visible over time:</span></p><ul><li><p><span>Fragmentation: different teams use different technologies, frameworks, and infrastructure</span></p></li><li><p><span>Duplication: teams in different parts of the business independently build the same or very similar services</span></p></li></ul><p><span>The career trajectory of Pat Cooney, Optiver&#8217;s head of platform engineering, mirrors the shift to a global platform: he was the CTO of Optiver in Europe in the mid-2010s when the business was split by region, and was appointed head of platform engineering in 2025 when that approach was replaced.</span></p><p><span>Optiver&#8217;s approach to continuous integration (CI) has also evolved. Previously, the company had several regional CI services, but from 2025, it started to rebuild its CI system with two new goals:</span></p><ul><li><p><strong><span>Build for scale: </span></strong><span>create a CI system built to scale across regions and stand the test of time</span></p></li><li><p><strong><span>Use from any region: </span></strong><span>standardize deployment pipelines, so that code built in one location can run anywhere without friction</span></p></li></ul><h3><span>How roles work together</span></h3><p><span>At Optiver, there are three main areas for tech roles:</span></p><ul><li><p><strong><span>Engineering</span></strong><span>: build and own the full trading-platform stack</span></p></li><li><p><strong><span>Research</span></strong><span>: quantitative scientists who build models and predictive signals to create and improve trading algorithms. Typically, their background is in math, physics, economics, and statistics</span></p></li><li><p><strong><span>Trading</span></strong><span>: quantitative traders who watch live markets, adjust trading system parameters in response to conditions, and build tools to automate decisions</span></p></li></ul><p><strong><span>In reality, the boundaries between these areas are porous. </span></strong><span>Yes, people do the job they were hired for, but it&#8217;s common to also see researchers roll up their sleeves and take part in implementing a trading strategy, or software engineers conducting research.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5P4J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5P4J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png 424w, https://substackcdn.com/image/fetch/$s_!5P4J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png 848w, https://substackcdn.com/image/fetch/$s_!5P4J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png 1272w, https://substackcdn.com/image/fetch/$s_!5P4J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5P4J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png" width="1422" height="732" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:732,&quot;width&quot;:1422,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5P4J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png 424w, https://substackcdn.com/image/fetch/$s_!5P4J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png 848w, https://substackcdn.com/image/fetch/$s_!5P4J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png 1272w, https://substackcdn.com/image/fetch/$s_!5P4J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3025b66-4273-4f85-817f-1dd58ee7316b_1422x732.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">At Optiver, folks aren&#8217;t tied to one task</figcaption></figure></div><p><strong><span>Cross-functional collaboration between roles is very common. </span></strong><span>For example, when developing market signals and associated trading strategies, it&#8217;s normal for engineers, researchers, and traders to collaborate on most, if not all, projects.</span></p><p><strong><span>End-to-end ownership, plus autonomy, is a given. </span></strong><span>Engineers have autonomy in how they get things done, and they own and solve problems from the ideas stage through to implementation. There is a limited amount of guidance for trading, and it&#8217;s down to engineers to find the right solution.</span></p><p><span>In many ways, this approach to software engineering is pretty similar to startups&#8217;: software engineers get limited guidance and lots of autonomy. In order to succeed at tech startups, engineers typically need to understand the business, as well as being excellent at building production-ready software. It&#8217;s the same at Optiver, where understanding the business means understanding markets.</span></p><h3><span>Platform engineering</span></h3><p><span>Before Optiver&#8217;s globalized platform efforts started seriously in ~2023, regions duplicated effort:</span></p><ul><li><p><span>Multiple implementations of identical core logic</span></p></li><li><p><span>Each region had its own systems, frameworks, and infrastructure</span></p></li><li><p><span>Local teams built whatever they needed in an &#8220;unblock yourself&#8221; culture</span></p></li></ul><p><span>But that&#8217;s all changed. An obvious sign of global platform efforts is the appointment of Optiver&#8217;s first global CTO, </span><a href="https://www.linkedin.com/in/lance-braunstein-a198794b/"><span>Lance Braunstein</span></a><span>, who joined with a mandate to scale the platform.</span></p><p><strong><span>Roughly 30-40% of Optiver&#8217;s 950 engineers work on the platform. </span></strong><span>In contrast, a more typical ratio at other large tech companies is for 15-20% of engineers to be dedicated to platform work.</span></p><p><span>Prior to the global platform, there was a lot more tolerance of development experience friction; new engineers could spend weeks checking out the codebase and getting their build system to work. This mindset has changed, with the platform team stressing user empathy and reducing friction on engineers&#8217; journeys, like by setting up build pipelines for their software.</span></p><p><strong><span>Now, the platform is beginning to reimagine itself as built for AI.</span></strong><span> As agents proliferate at Optiver, users are both humans and automated systems. The goal of this shift is to empower people to decompose work into workstreams and orchestrate agents. Two projects were launched earlier this year by the platform team for agentic work:</span></p><ul><li><p><strong><span>AI gateway</span></strong><span>: gives Optiver engineers access to models</span></p></li><li><p><strong><a href="https://newsletter.pragmaticengineer.com/p/mcp"><span>MCP</span></a><span> hosting platform:</span></strong><span> makes it easy for engineers to access internal systems and tools via agents</span></p></li></ul><h3><span>How trading teams are organized</span></h3><p><span>Trading teams at Optiver have three roles:</span></p><ol><li><p><span>Traders decide strategy and make risk decisions</span></p></li><li><p><span>Researchers and quantitative analysts (&#8220;quants&#8221;) build hypotheses, pricing models, and run evaluations</span></p></li><li><p><span>Engineers build production systems</span></p></li></ol><p><span>In practice, these roles overlap. This was true before the AI era, but it seems to be accelerating with AI adoption. Most traders and quants have STEM backgrounds without recent production coding experience. AI enables quantitatively-minded people to automate workflows with agents and to implement strategies.</span></p><p><strong><span>Trading teams are organized by asset class and strategy.</span></strong><span> For example (asset classes in </span><em><span>italic</span></em><span>):</span></p><ul><li><p><span>A large team is focused on a broad area like </span><em><span>options</span></em></p></li><li><p><span>A team focused on </span><em><span>cash markets</span></em><span> and building strategies for exchange-traded funds (ETF) and stocks.</span></p></li><li><p><span>A team focused on machine learning (ML) and trading in the </span><em><span>cash market</span></em><span>.</span></p></li></ul><p><strong><span>Within larger teams, there are horizontal and vertical sub-teams. </span></strong><span>Horizontal teams take on challenges that impact any trading desk; for example, pricing is a horizontal team as the underlying mechanism is the same whether a soybean or an index fund being priced.</span></p><p><span>Vertical teams are similar to &#8220;tiger teams&#8221;, accelerators, and </span><a href="http://ewsletter.pragmaticengineer.com/p/program-platform-split-uber"><span>program teams</span></a><span> at other companies. They focus on short-term goals attached to a few different desks in a location like the US, Amsterdam, Mumbai or Sydney.</span></p><p><span>Each team has a trading or research lead and a tech lead, who identify work for the team to do. The overall direction is set by a partnership structure, similar to an investment bank, but partners are not necessarily in charge of teams. At Optiver, partners are collections of senior people responsible for overall strategy.</span></p><p><span>Regardless of asset class or vertical, every trading team builds a version of a trading loop with four components.</span></p><ol><li><p><span>Retrieval of market-related information</span></p></li><li><p><span>Collecting signals to work out which trades to execute</span></p></li><li><p><span>Execution of strategies (sending orders to market)</span></p></li><li><p><span>Intervention via a feedback loop, enabling a trader to monitor the system.</span></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mWfY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mWfY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png 424w, https://substackcdn.com/image/fetch/$s_!mWfY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png 848w, https://substackcdn.com/image/fetch/$s_!mWfY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png 1272w, https://substackcdn.com/image/fetch/$s_!mWfY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mWfY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png" width="1456" height="264" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:264,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64025,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/209934932?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mWfY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png 424w, https://substackcdn.com/image/fetch/$s_!mWfY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png 848w, https://substackcdn.com/image/fetch/$s_!mWfY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png 1272w, https://substackcdn.com/image/fetch/$s_!mWfY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8193441-47ab-4a0a-a17b-a1c8a6da4c57_1906x346.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3><span>&#8220;Build and own&#8221; culture</span></h3><p><span>Optiver runs on an ownership culture, with the principle that the best engineers take work personally and care deeply about Optiver&#8217;s systems, decisions, and outcomes. Leaders want engineers to treat their projects as if they were CEOs of a company, and be responsible for design, build, rollout, shipping, or support. There is no notion of throwing work over the wall to a QA team.</span></p><p><span>Optiver&#8217;s ownership model:</span></p><ol><li><p><strong><span>Traders and engineers define problems together.</span></strong><span> Engineers design, build, test, deploy, and monitor a solution. There are hundreds of production changes daily</span></p></li><li><p><strong><span>Design reviews for architectural decision-making.</span></strong><span> When an engineer has a project that entails architectural change to the stack, the engineer is responsible for bringing multiple options with the pros and cons to the team for consultation. The goal is to share information and knowledge, and to make decisions</span></p></li></ol><p><span>Optiver pushes new hires and interns to develop ownership. From day one, engineers have something they own and are assigned a real project with mentoring support. Production code changes are an expectation for new hires. Within a year, a new hire becomes the experienced person in their domain, ramping up the next engineer. This is explicitly emphasized in Optiver&#8217;s onboarding materials:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZNS4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZNS4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png 424w, https://substackcdn.com/image/fetch/$s_!ZNS4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png 848w, https://substackcdn.com/image/fetch/$s_!ZNS4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png 1272w, https://substackcdn.com/image/fetch/$s_!ZNS4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZNS4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png" width="1024" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZNS4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png 424w, https://substackcdn.com/image/fetch/$s_!ZNS4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png 848w, https://substackcdn.com/image/fetch/$s_!ZNS4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png 1272w, https://substackcdn.com/image/fetch/$s_!ZNS4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9782db4-a23f-41dc-bd03-d56e386e856d_1024x576.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ownership is also baked into the interview process, with explicit questions about problem-solving, talking through trade-offs, and implementation.</p><h3><span>Case study: the Options Org</span></h3><p><span>Optiver started life with options trading. The word &#8216;Optiver&#8217; is actually a Dutch portmanteau of &#8220;options&#8221; and &#8220;trader&#8221;, so it&#8217;s unsurprising that the options team is among the most developed parts of the operation, with engineers split across multiple locations. The organization is composed of both vertical and horizontal teams.</span></p><p><span>One of the technical systems for which the Options organization is responsible is the retreat system. When Optiver trades an option, that trade itself changes the price of the next quote on offer. The retreat system has to reprice the entire option surface (i.e., all options related to the one just traded). This is called a &#8216;retreat&#8217;.</span></p><p><span>In the case of S&amp;P options, the option surface can consist of thousands of options that have to be updated. Ten years ago, the retreat process took seconds; now, through optimizations at every level of the stack, it&#8217;s down to nanoseconds.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-adx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-adx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png 424w, https://substackcdn.com/image/fetch/$s_!-adx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png 848w, https://substackcdn.com/image/fetch/$s_!-adx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png 1272w, https://substackcdn.com/image/fetch/$s_!-adx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-adx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png" width="1260" height="788" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:788,&quot;width&quot;:1260,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94821,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/209934932?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-adx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png 424w, https://substackcdn.com/image/fetch/$s_!-adx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png 848w, https://substackcdn.com/image/fetch/$s_!-adx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png 1272w, https://substackcdn.com/image/fetch/$s_!-adx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F200ca9ea-3546-4cc7-8b7f-073835205df7_1260x788.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How the &#8216;retreat system&#8217; works, at a high-level</figcaption></figure></div><p><span>Retreat speed matters because everything changes as soon as a trade occurs: the original quote is stale and a trader needs to remove the bid from the exchange before anyone can exploit it. Faster firms can take advantage of others&#8217; stale prices, leading to an adversarial market dynamic.</span></p><h3><span>Horizontal vs vertical team structures</span></h3><p><span>Vertical teams work on specific tactical problems related to local trading desks with a focus on immediate impact. But they are not short-term or temporary teams, even if they work on short-term problems. They&#8217;re empowered to solve the most important current problems, end-to-end. On the other hand, horizontal teams serve most desks, and have longer time horizons because they work on cross-cutting problems like pricing, market connectivity, or auto-trading.</span></p><h2><span>3. Software tech stack</span></h2><h3><span>Basic trading loop &amp; three-layer tech stack</span></h3><p><span>Most trading software applications or services (aka &#8220;apps&#8221;) at Optiver can be simplified to the basic trading loop. The exchange where the trading takes place is part of the outside world from which signals are extracted:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GFOE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GFOE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png 424w, https://substackcdn.com/image/fetch/$s_!GFOE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png 848w, https://substackcdn.com/image/fetch/$s_!GFOE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png 1272w, https://substackcdn.com/image/fetch/$s_!GFOE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GFOE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png" width="1456" height="489" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:489,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80544,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/209934932?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GFOE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png 424w, https://substackcdn.com/image/fetch/$s_!GFOE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png 848w, https://substackcdn.com/image/fetch/$s_!GFOE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png 1272w, https://substackcdn.com/image/fetch/$s_!GFOE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cebf337-7395-47d1-b080-c4145a269eed_1768x594.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>The three layers of trading: signals, strategy and execution</span></em></figcaption></figure></div><h4><span>Signals</span></h4><p><span>This is the information-gathering phase where services collect market data such as prices and order book information, and also run various data calculations, such as pricing algorithms and machine learning pipelines. These signals are made available to strategy applications/services which decide how to trade.</span></p><h4><span>Strategy</span></h4><p><span>A single trading strategy typically focuses on a particular class of assets and trades, and many different strategies run concurrently. The strategy sets what and how to trade, but doesn&#8217;t execute the trade; that&#8217;s the next step.</span></p><p><span>All strategies are enveloped by a risk management system that can block trades and stop individual strategies. To be effective, it has a broader view of the combined risk level of multiple strategies.</span></p><p><span>Risk mechanisms can include human oversight, with traders tweaking strategy parameters, and also automated monitoring that checks if apps are outputting orders within expected parameters, regardless of what the algorithm wants. The latter approach is essential in low latency strategies where faster-than-human reaction speeds are needed.</span></p><h4><span>Execution</span></h4><p><span>The execution step involves executing trades on exchanges. There&#8217;s a hard &#8216;separation of concerns&#8217; principle where execution steps are only permitted to execute the trade. No additional logic is meant to run there.</span></p><h4><span>Ultra low-latency loop</span></h4><p><span>In some market-making use cases where nanosecond-level latencies matter, much of this process may run within a single chip (FPGA or ASIC) where the strategy part can be </span><a href="https://en.wikipedia.org/wiki/Memoization"><span>memoized</span></a><span> with precomputed responses for all expected input patterns. This is then burned into the hardware to minimize latency from when market information arrives until a trading order is issued.</span></p><h4><span>The tech stack&#8217;s three layers</span></h4><p><span>All apps implementing the trading loop sit on top of a multi-layered internal platform:</span></p><ul><li><p><strong><span>Basic infrastructure layer</span></strong><span>: the stuff you&#8217;d see at most tech companies (CI/CD pipelines, k8s, Kafka, Postgres, etc), but they&#8217;re also customizing their stack. They run their own data centers, have custom hardware, custom Linux kernels, customized CI tooling, and databases.</span></p></li><li><p><strong><span>Domain-specific infrastructure</span></strong><span> contains core trading-specific services such as trading data dictionaries, metadata on securities, and the trade booking system.</span></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eXDN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eXDN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png 424w, https://substackcdn.com/image/fetch/$s_!eXDN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png 848w, https://substackcdn.com/image/fetch/$s_!eXDN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png 1272w, https://substackcdn.com/image/fetch/$s_!eXDN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eXDN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png" width="1312" height="772" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:772,&quot;width&quot;:1312,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143066,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/209934932?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eXDN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png 424w, https://substackcdn.com/image/fetch/$s_!eXDN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png 848w, https://substackcdn.com/image/fetch/$s_!eXDN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png 1272w, https://substackcdn.com/image/fetch/$s_!eXDN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99c41336-8749-482b-8914-ae99f17ac2fe_1312x772.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The three layers of Optiver&#8217;s tech stack. The &#8216;basic infra platform&#8217; is similar to infrastructure at most other tech companies</figcaption></figure></div><p><span>Historically, most of this infrastructure was duplicated at each local office level when teams prioritized moving fast and independently over avoiding duplication. A centralized platform team has started consolidating these efforts in recent years.</span></p><p><strong><span>Roughly 30-40% of the engineering headcount is allocated to the Platform team</span></strong><span>. This level of investment in the platform is beyond what you&#8217;d typically see in a tech company. That&#8217;s likely to remain the case for a while longer as they focus on improving the development experience, consolidating duplicated functionality, and catering to the specifics of their tech stack.</span></p><h3><span>Languages and tools</span></h3><p><span>At a glance:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Oy6R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Oy6R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png 424w, https://substackcdn.com/image/fetch/$s_!Oy6R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png 848w, https://substackcdn.com/image/fetch/$s_!Oy6R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png 1272w, https://substackcdn.com/image/fetch/$s_!Oy6R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Oy6R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png" width="1456" height="704" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:704,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:171964,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/209934932?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Oy6R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png 424w, https://substackcdn.com/image/fetch/$s_!Oy6R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png 848w, https://substackcdn.com/image/fetch/$s_!Oy6R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png 1272w, https://substackcdn.com/image/fetch/$s_!Oy6R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dab8a5c-3770-402b-b58f-3d093a9cbf24_1664x804.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Language choices at Optiver are fairly standard for a financial institution: </span><strong><span>C++</span></strong><span> for low latency applications, and </span><strong><span>Python</span></strong><span> for modeling, prototyping and internal tooling work.</span></p><p><span>However, looking closely at Optiver&#8217;s </span><a href="https://github.com/optiver"><span>contributions</span></a><span> to the Python ecosystem reveals that this language is not just a prototyping tool:</span></p><ul><li><p><a href="https://github.com/optiver/optiver-asyncpg"><span>optiver-asyncpg</span></a><span>: Optiver&#8217;s fork of a performance-focused async Python lib for Postgres</span></p></li><li><p><a href="https://github.com/optiver/vulcan-py"><span>vulcan-py</span></a><span>: Optiver&#8217;s own dependency manager for Python allows more granular control over indirect dependencies</span></p></li><li><p><a href="https://github.com/optiver/opti-napalm"><span>opti-napalm</span></a><span>: Optiver&#8217;s fork of a library for automating and simulating various network equipment</span></p></li></ul><p><strong><span>Optiver&#8217;s internal tooling also has strict performance requirements</span></strong><span> because traders use internal dashboards and tools to make time-sensitive trading decisions. Avoiding hand-offs between traders and engineers for reimplementation in C++ saves time, and empowers non-engineers to solve their problems directly, in line with the &#8220;unblock yourself&#8221; ethos.</span></p><p><strong><span>Rust</span></strong><span> is starting to play a significant role in research tooling and service orchestration, likely driven by the performance requirements. It&#8217;s interesting to see Rust used in areas such as Python, as opposed to it replacing C++, which would be obvious given its focus on performance. It&#8217;s likely due to Optiver&#8217;s decades&#8217; worth of investment in the low-latency C++ ecosystem, its deep integration with existing internal hardware, and being able to directly control things like memory allocation with C++.</span></p><p><span>Other languages used in some niche use cases include:</span></p><ul><li><p><strong><span>C#</span></strong><span> for building data-intensive trader-facing GUIs,</span></p></li><li><p><strong><a href="https://en.wikipedia.org/wiki/VHDL"><span>VHDL</span></a></strong><span> and </span><strong><a href="https://en.wikipedia.org/wiki/SystemVerilog"><span>SystemVerilog</span></a></strong><span> for FPGA development.</span></p></li></ul><h3><span>CI/CD stack</span></h3><p><span>Much of the software that Optiver builds interacts with custom hardware, custom Linux kernels, and requires predictable compute performance for predictable results in performance tests. These are all constraints that the CI/CD stack has to operate within.</span></p><p><strong><span>Optiver&#8217;s CI/CD runs on bare metal machines, </span></strong><span>with custom hardware installed, the right OS tweaks, and a well-understood performance profile. Interestingly, this means Optiver needs to plan capacity in advance for its CI/CD clusters in the same way as it plans capacity for production systems. This is tricky since AI-coding tools started boosting the number of builds an average engineer does in a day.</span></p><p><span>They chose GitHub Actions as their CI Platform for the seamless development experience with GitHub. Unfortunately, Actions doesn&#8217;t provide overall, system-level metrics like queue times and utilizations, which are critical information for planning CI cluster capacity. Therefore, they had to build a bespoke observability layer over GitHub Actions pipelines with GitHub webhooks.</span></p><h3><span>Data</span></h3><p><span>When it comes to databases and storage systems in general, Optiver is a big user of </span><strong><span>Kafka</span></strong><span>, </span><strong><span>Postgres</span></strong><span>, and </span><strong><span>Databricks</span></strong><span> (the company built its entire data platform around this).</span></p><p><span>A few interesting details show the role of Postgres:</span></p><ul><li><p><span>They contributed </span><a href="https://github.com/optiver/timestamp9"><span>a new timestamp type</span></a><span> to Postgres, allowing timestamps to be expressed with nanosecond precision. Few Postgres applications care about nanosecond-level precision, and this wasn&#8217;t available &#8220;out of the box&#8221;.</span></p></li><li><p><span>They built their own internal version of the NOTIFY - LISTEN mechanism called &#8216;PG Feed,&#8217; based on Postgres&#8217; write-ahead log. This is used for distributing high-fanout, latency-sensitive messages to clients like pricing and configuration data, whereas using something like Kafka may involve additional disk reads and writes, which imply unwanted latency.</span></p></li></ul><p><span>Optiver generally picks industry-standard tooling, but heavily tweaks it to fit their specific performance needs. Not many tech companies of this size tweak Postgres or GitHub Actions, let alone Linux kernels!</span></p><h2><span>4. Hardware engineering, FPGAs and Silicon</span></h2>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/optiver">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Formal methods with Hillel Wayne]]></title><description><![CDATA[Hillel Wayne explains why formal methods like TLA+ matter, how they help build reliable software, and whether AI will finally bring formal verification into the mainstream.]]></description><link>https://newsletter.pragmaticengineer.com/p/formal-methods-with-hillel-wayne</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/formal-methods-with-hillel-wayne</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 29 Jul 2026 16:22:31 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/208490793/39e73f549d0e5b122bbc9dfe29a9b11a.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/KSkcgIYQy0U">YouTube</a>, <a href="https://podcasts.apple.com/us/podcast/formal-methods-with-hillel-wayne/id1769051199?i=1000778935586">Apple</a> and <a href="https://open.spotify.com/episode/7pF97J4VB96PpLJdPShK7W">Spotify</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YCsL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YCsL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 424w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 848w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1272w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YCsL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png" width="1280" height="80" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:80,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YCsL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 424w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 848w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1272w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><strong><span>&#8226; </span><a href="https://antithesis.com/pragmatic"><span>Antithesis</span></a></strong><span> &#8212; Turbocharge testing of your systems by running your whole system under aggressive fault injection. There&#8217;s good reason teams like Jane Street, Fly.io, and the etcd community rely on Antithesis. </span><a href="https://antithesis.com/pragmatic"><span>Learn more.</span></a></p><p><strong><span>&#8226; </span><a href="https://workos.com/"><span>WorkOS</span></a></strong><span> &#8211; make your app and agents Enterprise Ready, with SSO, SCIM, RBAC, and more. </span><a href="https://workos.com/"><span>Get started</span></a><span>.</span></p><p><strong><span>&#8226; </span><a href="https://turbopuffer.com/pragmatic"><span>turbopuffer</span></a></strong><span> </span>&#8211;<span> A vector and full-text search engine built on object storage. It&#8217;s fast, cheap, and extremely scalable. I met their team in San Francisco, and am a fan of their &#8220;hardcore and whimsical&#8221; engineering culture, and how pragmatic their engineering philosophy is. </span><a href="https://turbopuffer.com/pragmatic"><span>Check them out.</span></a></p><h3><strong>In this episode</strong></h3><p><span>There&#8217;s a popular theory that AI will finally make formal verification mainstream because mathematical proof of correctness will be needed when machines write most or all of the code. But will this happen? Today, I&#8217;m talking with one of the best people to tackle the prediction. Hillel Wayne is a formal methods consultant, educator, and author (his most recent book being </span><a href="https://logicforprogrammers.com"><span>Logic for Programmers</span></a><span>), who&#8217;s deeply interested in software history.</span></p><p><span>In this episode of The Pragmatic Engineer podcast, I sit down with Hillel to compare software engineering with traditional engineering, discuss where formal methods fit into modern software development, and we explore why they are essential for some of the world&#8217;s most complex systems. We cover the formal specification language, TLA+, walk through several formal verification tools, examine why distributed systems are so difficult to reason about, and look into whether AI will make formal methods accessible to more engineering teams.</span></p><h3>Takeaways from the conversation with Hillel</h3><div id="youtube2-KSkcgIYQy0U" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;KSkcgIYQy0U&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/KSkcgIYQy0U?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong><span>1. Are we &#8220;real&#8221; engineers? After thorough research, Hillel has an answer.</span></strong><span> For </span><a href="https://www.hillelwayne.com/tags/crossover-project/"><span>The Crossover Project</span></a><span>, Hillel interviewed ~20 people in different fields of traditional engineering and software engineering, and found plenty of similarities and differences. He concluded that the rigor needed in software engineering means we earn the right to the title of &#8220;engineer.&#8221;</span></p><p><strong><span>2. Version control is unique to software engineering. </span></strong><span>Other fields of engineering have change management, but &#8220;traditional&#8221; engineers wish the concept of version control in software engineering existed in their fields because it&#8217;s far more sophisticated.</span></p><p><strong><span>3. TLA+ is a formal specification language created by Leslie Lamport for designing and verifying systems. </span></strong><span>Lamport is a mathematician and creator of LaTeX, who wanted to create a language for modeling complex systems. The language represents the state machine of the system and every possible state it can transition to. From the initial state, the system enumerates to get to every reachable state and checks whether properties defined upfront apply to those states. In this episode, Hillel walks us through a demo with TLA+.</span></p><p><strong><span>4. Amazon used TLA+ to find a bug almost impossible to locate without formal methods. </span></strong><span>In the paper </span><a href="https://cacm.acm.org/research/how-amazon-web-services-uses-formal-methods/"><span>How AWS uses formal methods</span></a><span>, the AWS team shared that they&#8217;d found a complicated bug for which the shortest error trace to exhibit was 35 steps (!!). The bug passed unnoticed through extensive design review, code reviews, and testing. AWS concluded they wouldn&#8217;t have uncovered it if they&#8217;d stuck to conventional testing approaches.</span></p><p><strong><span>5. Lack of practice makes most engineers bad at dealing with concurrency problems and race conditions. </span></strong><span>When a system has a race condition due to your code, you usually don&#8217;t find out until a few months later &#8211; if ever! In contrast, a system modeled in TLA+ can tell you about race conditions as soon as the tool is run, making it a fast feedback loop.</span></p><p><strong><span>6. Why not use formal verification for everything, then?</span></strong><span> It&#8217;s because specs in the real world are a nightmare to write. Even a simple problem like &#8220;find the file in a directory that has the most lines&#8221; gets complicated when modeled with formal methods. We would have to answer questions like: &#8216;do we look at ASCII or UTF-8 new line characters, what about unreadable files, and </span><a href="https://en.wikipedia.org/wiki/Symbolic_link"><span>Symlinks</span></a><span>?&#8217; Without formal methods, we can write a simple verification that is right in 99%+ of cases. Formal methods require a lot of extra effort for the less than 1% of exotic use cases!</span></p><p><strong><span>7. Hillel recommends most engineers adopt property-based testing, and stop there. </span></strong><span>Property-based tests mean defining properties which the test then throws thousands of inputs at, in order to stress test a system. Hillel is convinced that formal methods are a niche tool for most engineers, whereas property-based testing is the most practical approach for building robust software with this lightweight formal method.</span></p><p><strong><span>8. AI won&#8217;t make formal verification mainstream, but will increase its use. </span></strong><span>As Hillel says, &#8220;AI bringing formal verification up from maybe 0.1% to 0.3% across the industry would still be huge!&#8221; He also finds that people who succeed at using AI to generate formal specs are often formal verification experts.</span></p><p><strong><span>9. Hillel worries about the time-of-check vs time-of-use bug.</span></strong><span> It makes Hillel want to pull his hair out when he sees a time gap between the time of checking something (e.g., whether a bank account contains sufficient funds for withdrawals), and the action itself (e.g., withdrawing money). This category of bug is hard to defend against and can cause annoying issues in real-world systems.</span></p><p><strong><span>10. Hillel worries less about job losses from AI and more about software becoming an &#8220;ordinary&#8221; job. </span></strong><span>Revisiting his </span><a href="https://www.linkedin.com/posts/hillel-wayne_the-following-can-all-be-true-1-vibe-coders-activity-7341040574319206401-F0C6/"><span>2025 predictions of the impact of AI</span></a><span> on the tech industry, one of Hillel&#8217;s concerns is that software engineering in the future will be lower-paid and lower-prestige than today. At present, the range of software careers available is pretty magical, especially compared to &#8220;traditional&#8221; engineering roles. But will this last?</span></p><p><strong><span>11. One of Hillel&#8217;s coolest projects: verifying train transponders.</span></strong><span> Beyond databases and distributed systems, he has also formally verified device firmware. One cool project was working on the electric beacons between rail tracks that pass traffic information to the control system. He found a really odd bug in one transponder system, and fixing it made the real-world system more reliable and safe.</span></p><p><strong><span>12. One thing that software engineering could take from &#8220;traditional&#8221; engineering: books on &#8220;the fundamentals&#8221; which every professional in the field should know. </span></strong><span>One of Hillel&#8217;s favorite books is </span><a href="https://www.amazon.com/First-Snap-Fit-Handbook-Creating-Attachments/dp/1569902798"><span>The First Snap-Fit Handbook</span></a><span>, a nearly 500-page tome on those little clips that hold battery covers in place. He observes that while most industries have copious documentation for the most mundane topics, within software engineering there&#8217;s not even a book on how to version an API! We could learn from other fields about the value of documenting our own craft.</span></p><p><strong><span>13: The &#8220;materials&#8221; in software engineering are freakishly consistent. </span></strong><span>All other engineering professions have to worry about the consistency of their materials; for example, electrical engineers work with resistors that offer resistance within 20% of 100 ohms across a thousand units, and only when operated within a given temperature range. In contrast, a program runs identically on any given computer in software engineering. Hillel argues that the variability we deal with in software, like versions, APIs, bugs with integrations, etc, are largely battles of our own making.</span></p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/antithesis"><span>How to debug large, distributed systems: Antithesis</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/how-aws-s3-is-built"><span>How AWS S3 is built</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/paying-down-tech-debt"><span>Paying down tech debt</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/how-big-tech-does-qa"><span>How Big Tech does quality assurance (QA)</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/bug-management-that-works-part-1"><span>Bug management that works</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/resiliency-in-distributed-systems"><span>Resiliency in distributed systems</span></a></p><h3><strong>Timestamps</strong></h3><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U">00:00</a> Intro</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=272s">04:32</a> The Crossover Project</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=697s">11:37</a> What software engineering does better</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=930s">15:30</a> What traditional engineering does better</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=1097s">18:17</a> Formal methods</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=1772s">29:32</a> TLA+: what it is and demo</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=2218s">36:58</a> TLA+ at Amazon</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=2290s">38:10</a> Ways distributed systems break</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=2463s">41:03</a> Formal methods and systems thinking</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=2780s">46:20</a> The value of learning math</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=3023s">50:23</a> What TLA+ is good for and isn&#8217;t</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=3170s">52:50</a> Alloy: a declarative language for software modeling</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=3533s">58:53</a> Other formal methods tools</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=3684s">1:01:24</a> Property-based testing</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=3931s">1:05:31</a> AI and the need for formal verification</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=4349s">1:12:29</a> Logic for programmers</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=4475s">1:14:35</a> Hillel&#8217;s 2025 prediction on AI&#8217;s impact</p><p><a href="https://www.youtube.com/watch?v=KSkcgIYQy0U&amp;t=4890s">1:21:30</a> Book recommendation</p><h3><strong>References</strong></h3><p><strong><span>Where to find Hillel Wayne:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="http://linkedin.com/in/hillel-wayne"><span>linkedin.com/in/hillel-wayne</span></a></p><p><span>&#8226; Newsletter: </span><a href="https://buttondown.com/hillelwayne"><span>https://buttondown.com/hillelwayne</span></a></p><p><span>&#8226; Website: </span><a href="https://www.hillelwayne.com">https://www.hillelwayne.com</a></p><p><strong>Mentions during the episode:</strong></p><p><span>&#8226; The Crossover Project: </span><a href="https://www.hillelwayne.com/tags/crossover-project"><span>https://www.hillelwayne.com/tags/crossover-project</span></a></p><p><span>&#8226; Blog Series: Real Software Engineering: </span><a href="https://vanderburg.org/blog/series/real-software-engineering/"><span>https://vanderburg.org/blog/series/real-software-engineering</span></a></p><p><span>&#8226; Software Art Thou: Glenn Vanderburg &#8212; Real Software Engineering: </span></p><div id="youtube2-RhdlBHHimeM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;RhdlBHHimeM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/RhdlBHHimeM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><span>&#8226; New Austrian tunneling method: </span><a href="https://en.wikipedia.org/wiki/New_Austrian_tunneling_method"><span>https://en.wikipedia.org/wiki/New_Austrian_tunneling_method</span></a></p><p><span>&#8226; </span><em><span>The Design of Everyday Things</span></em><span>: </span><a href="https://www.amazon.com/dp/0465050654"><span>https://www.amazon.com/dp/0465050654</span></a></p><p><span>&#8226; </span><em><span>The First Snap-Fit Handbook: Creating Attachments for Plastics Parts</span></em><span>: </span><a href="https://www.amazon.com/dp/1569902798"><span>https://www.amazon.com/dp/1569902798</span></a></p><p><span>&#8226; NuSMV: </span><a href="https://nusmv.fbk.eu/">https://nusmv.fbk.eu/</a></p><p><span>&#8226; TLA+: </span><a href="https://github.com/tlaplus"><span>https://github.com/tlaplus</span></a></p><p><span>&#8226; Use of Formal Methods at Amazon Web Services: </span><a href="https://lamport.azurewebsites.net/tla/formal-methods-amazon.pdf"><span>https://lamport.azurewebsites.net/tla/formal-methods-amazon.pdf</span></a></p><p><span>&#8226; Common Sense Computing: From the Society of Mind to Digital Intuition and beyond: </span><a href="https://link.springer.com/chapter/10.1007/978-3-642-04391-8_33"><span>https://link.springer.com/chapter/10.1007/978-3-642-04391-8_33</span></a></p><p><span>&#8226; Alloy: </span><a href="https://alloytools.org">https://alloytools.org</a></p><p><span>&#8226; Time-of-check to time-of-use: </span><a href="https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use"><span>https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use</span></a></p><p><span>&#8226; P: Formal Modeling and Analysis of Distributed Systems: </span><a href="https://github.com/p-org/P"><span>https://github.com/p-org/P</span></a></p><p><span>&#8226; Quint: </span><a href="https://quint.sh">https://quint.sh</a></p><p><span>&#8226; PRISM: </span><a href="https://www.prismmodelchecker.org">https://www.prismmodelchecker.org</a></p><p><span>&#8226; NuSMV: a new symbolic model checker: </span><a href="https://nusmv.fbk.eu">https://nusmv.fbk.eu</a></p><p><span>&#8226; I formally modeled Dreidel for no good reason: </span><a href="https://buttondown.com/hillelwayne/archive/i-formally-modeled-dreidel-for-no-good-reason"><span>https://buttondown.com/hillelwayne/archive/i-formally-modeled-dreidel-for-no-good-reason</span></a></p><p><span>&#8226; Formally modeling dreidel, the sequel: </span><a href="https://buttondown.com/hillelwayne/archive/formally-modeling-dreidel-the-sequel"><span>https://buttondown.com/hillelwayne/archive/formally-modeling-dreidel-the-sequel</span></a></p><p><span>&#8226; Event-B: </span><a href="https://eventb-soton.github.io/en-us"><span>https://eventb-soton.github.io/en-us</span></a></p><p><span>&#8226; MCRL2: </span><a href="https://mcrl2.org/web/index.html"><span>https://mcrl2.org/web/index.html</span></a></p><p><span>&#8226; KeYmaera X: </span><a href="https://keymaerax.org">https://keymaerax.org</a></p><p><span>&#8226; Dafny: </span><a href="https://dafny.org">https://dafny.org</a></p><p><span>&#8226; JML: </span><a href="https://www.openjml.org">https://www.openjml.org</a></p><p><span>&#8226; Frama-C: </span><a href="https://frama-c.com">https://frama-c.com</a></p><p><span>&#8226; Ada SPARK: </span><a href="https://www.adacore.com/languages/spark"><span>https://www.adacore.com/languages/spark</span></a></p><p><span>&#8226; The Coming AI Revolution in Distributed Systems: </span><a href="https://zfhuang99.github.io/github%20copilot/formal%20verification/tla+/2025/05/24/ai-revolution-in-distributed-systems.html"><span>https://zfhuang99.github.io/github%20copilot/formal%20verification/tla+/2025/05/24/ai-revolution-in-distributed-systems.html</span></a></p><p><span>&#8226; CRAQ.tla: TLA+ specification of CRAQ (lamport-agent): </span><a href="https://github.com/zfhuang99/lamport-agent/blob/main/spec/CRAQ/CRAQ.tla"><span>https://github.com/zfhuang99/lamport-agent/blob/main/spec/CRAQ/CRAQ.tla</span></a></p><p><span>&#8226; My EuroSys 2026 paper is obsolete: </span><a href="https://claudiacauli.com/2026/03/08/my-eurosys-2026-paper-is-obsolete"><span>https://claudiacauli.com/2026/03/08/my-eurosys-2026-paper-is-obsolete</span></a></p><p><span>&#8226; Situated Software &#8212; Clay Shirky (2004):  </span><a href="https://gwern.net/doc/technology/2004-03-30-shirky-situatedsoftware.html"><span>https://gwern.net/doc/technology/2004-03-30-shirky-situatedsoftware.html</span></a></p><p><span>&#8226; Lamport Agent - AI-assisted Formal Specification: </span><a href="https://zfhuang99.github.io/github%20copilot/formal%20verification/tla+/2025/11/14/lamport-agent.html"><span>https://zfhuang99.github.io/github%20copilot/formal%20verification/tla+/2025/11/14/lamport-agent.html</span></a></p><p><span>&#8226; LLMs are bad at vibing specifications: </span><a href="https://buttondown.com/hillelwayne/archive/llms-are-bad-at-vibing-specifications/"><span>https://buttondown.com/hillelwayne/archive/llms-are-bad-at-vibing-specifications</span></a></p><p><span>&#8226; </span><em><span>Logic for Programmers</span></em><span>: </span><a href="https://logicforprogrammers.com">https://logicforprogrammers.com</a></p><p><span>&#8226; Engineering a Safer World: Systems Thinking Applied to Safety: </span><a href="https://www.amazon.com/dp/0262533693"><span>https://www.amazon.com/dp/0262533693</span></a></p><p><span>&#8226; The following can all be true: </span><a href="https://www.linkedin.com/posts/hillel-wayne_the-following-can-all-be-true-1-vibe-coders-share-7341040573711073281-3V8C"><span>https://www.linkedin.com/posts/hillel-wayne_the-following-can-all-be-true-1-vibe-coders-share-7341040573711073281-3V8C</span></a></p><p><span>&#8226; The third golden age of software engineering &#8211; thanks to AI, with Grady Booch: </span><a href="https://newsletter.pragmaticengineer.com/p/the-third-golden-age-of-software"><span>https://newsletter.pragmaticengineer.com/p/the-third-golden-age-of-software</span></a></p><p><span>&#8226; </span><em><span>Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World</span></em><span>: </span><a href="https://www.amazon.com/dp/1935504215"><span>https://www.amazon.com/dp/1935504215</span></a></p><p><span>&#8226; Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems: </span><a href="https://www.amazon.com/Debugging-Indispensable-Software-Hardware-Problems/dp/0814474578"><span>https://www.amazon.com/Debugging-Indispensable-Software-Hardware-Problems/dp/0814474578</span></a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[How building software is changing at Anthropic]]></title><description><![CDATA[A deepdive on what&#8217;s changed in how the leading AI lab makes software. Ever more code review and testing is done by AI, two-pizza teams very much alive, and more. Details from inside of Anthropic]]></description><link>https://newsletter.pragmaticengineer.com/p/inside-anthropic</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/inside-anthropic</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 28 Jul 2026 15:49:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0GCi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Much-improved AI tooling is changing how we build software, and I want to take a peek into how the future of software engineering may unfold under its influence. What better place for that than with tech&#8217;s most &#8220;AI-pilled&#8221; teams: the AI labs themselves.</span></p><p><span>So, I visited the two leading AI labs to see how teams and engineers do things day to day. In this article and in an upcoming follow-up, I&#8217;ll share what I learned about how AI is reshaping software engineering principles many of us are accustomed to &#8211; and what&#8217;s stayed mostly the same despite the AI wave.</span></p><p><span>In a later article, we&#8217;ll compare findings from Anthropic and OpenAI to see what their ways of working might mean for the overall direction of software engineering.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0GCi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0GCi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png 424w, https://substackcdn.com/image/fetch/$s_!0GCi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png 848w, https://substackcdn.com/image/fetch/$s_!0GCi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png 1272w, https://substackcdn.com/image/fetch/$s_!0GCi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0GCi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png" width="1456" height="694" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:694,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0GCi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png 424w, https://substackcdn.com/image/fetch/$s_!0GCi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png 848w, https://substackcdn.com/image/fetch/$s_!0GCi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png 1272w, https://substackcdn.com/image/fetch/$s_!0GCi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86124b7-b1c1-4e0e-9f57-42f5e6de75ed_2048x976.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Inside Anthropic&#8217;s HQ (left). AI development milestones framed on the wall (right)</figcaption></figure></div><p><span>Thanks to Anthropic for showing me inside their lab in San Francisco. I talked with four people:</span></p><ul><li><p><strong><a href="https://www.linkedin.com/in/katelynlesse/"><span>Katelyn Lesse</span></a></strong><span>, Head of Engineering for Claude Platform, whose organization owns the infrastructure that Claude runs on</span></p></li><li><p><strong><a href="https://x.com/jarredsumner?lang=en"><span>Jarred Sumner</span></a></strong><span>, creator of Bun, now at Anthropic on Bun and Claude Code</span></p></li><li><p><strong><a href="https://x.com/trq212"><span>Thariq Shihipar</span></a></strong><span>, who works across Claude Code engineering and education</span></p></li><li><p><strong><a href="https://www.linkedin.com/in/david-hershey/"><span>David Hershey</span></a></strong><span>, at Anthropic&#8217;s Applied AI organization in a role resembling a sales engineer, working with customers like Cursor, Cognition, and Perplexity</span></p></li></ul><p><span>Thanks to them, I got a sense of where things are headed at the leading AI lab &#8211; and possibly for the wider industry.</span></p><p><em><span>Before we continue, The Pragmatic Engineer will be </span><a href="https://newsletter.pragmaticengineer.com/about#%C2%A7publishing-schedule-and-holidays"><span>on summer break</span></a><span> for the next week and a half. This means no Thursday article this week, and no articles next week. I appreciate your understanding and support!</span></em></p><p><span>Back to today&#8217;s deepdive, we cover:</span></p><ol><li><p><strong><span>Complex &amp; long: Claude Managed Agents</span></strong><span>. One of the most complicated projects took the Claude Platform team six months to ship, and created a new primitive to use at the agent infra level. Infra projects still need re-architecting mid-way through and take time to get right.</span></p></li><li><p><strong><span>Twelve-month project done in 11 days: Bun rewrite to Rust. </span></strong><span>Migrating a 500K+ line project to another language used to take a small team a year, making it impractical. With Fable and $165K of tokens, it recently took the creator of the project less than two weeks.</span></p></li><li><p><strong><span>Changing engineering practices</span></strong><span>. Inside the AI lab with more than 3,500 employees, prototyping is more fluid, verification is more time-consuming than implementation, code review and testing are increasingly done by AI.</span></p></li><li><p><strong><span>Team-level changes. </span></strong><span>Design is more ongoing and less upfront, teams work on more projects, a maximum of two engineers per project, and more.</span></p></li><li><p><strong><span>Still the same: </span></strong><span>two-pizza teams, planning is important, PRDs are relevant in complex projects, context switching is a challenge, the ratio of time spent on coding vs testing not changing that much.</span></p></li><li><p><strong><span>Changing the &#8220;standout&#8221; software engineer archetype? </span></strong><span>Deep understanding, including of a layer below what you work on, is valuable, along with the ability to coordinate work.</span></p></li><li><p><strong><span>Will AI replace software engineering? </span></strong><span>The more hands-on software engineers get with AI at the lab, the less they fear their jobs are going away.</span></p></li></ol><h2><span>1. Complex &amp; long: Claude Managed Agents</span></h2><p><span>The Claude Platform team&#8217;s most complex project in the past year was building Claude Managed Agents, a pre-built harness for production agents that runs in the cloud on infrastructure managed by Anthropic, or on your team&#8217;s own infrastructure, with any sandbox you choose. The project took around six months from idea until launch in April. Katelyn Lesse, head of engineering for Claude Platform, shared the story.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8a-1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8a-1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8a-1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8a-1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8a-1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8a-1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8a-1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8a-1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8a-1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8a-1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8978dd-0a93-4ca0-be99-6accd8673ce8_2048x1536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>With Katelyn Lesse, at Anthropic</span></em></figcaption></figure></div><h3><span>Claude Platform</span></h3><p><span>This team sits between the model/accelerator layer (Claude models operate on GPUs) and the product/application layer (with products like Claude Code and Claude Cowork):</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!65a0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!65a0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png 424w, https://substackcdn.com/image/fetch/$s_!65a0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png 848w, https://substackcdn.com/image/fetch/$s_!65a0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png 1272w, https://substackcdn.com/image/fetch/$s_!65a0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!65a0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png" width="962" height="1056" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1056,&quot;width&quot;:962,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!65a0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png 424w, https://substackcdn.com/image/fetch/$s_!65a0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png 848w, https://substackcdn.com/image/fetch/$s_!65a0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png 1272w, https://substackcdn.com/image/fetch/$s_!65a0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f0fd550-8768-48e5-a278-6c5208be6410_962x1056.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Where Claude Platform sits inside of Anthropic</span></em></figcaption></figure></div><p><span>Katelyn on what the Platform team does:</span></p><blockquote><p><span>&#8220;We&#8217;re on the &#8216;token hot path.&#8217; The prompt comes in, then we tokenize it. Then, things like safeguards and billing all happen within our layer.&#8221;</span></p></blockquote><p><em><span>What the Claude team calls &#8220;Platform,&#8221; I think more of as &#8220;API.&#8221;</span></em><span> Claude Platform operates the API, and owns responsibilities an API would have. </span><em><span>Of course, the team does more than that, and Claude Managed Agents is one case we cover here.</span></em></p><p><strong><span>The platform layer is being migrated from Python to Rust. </span></strong><span>Originally, this layer was written for Python for the &#8220;usual&#8221; reasons at AI companies: it&#8217;s a convenient language and AI researchers use Python already, which enables quick iteration. But Python is single-threaded, and at scale, when the API is under high load, it&#8217;s not as performant as Rust.</span></p><h3><span>Harness infrastructure demand</span></h3><p><span>The project came together due to customers wanting their own &#8220;harness infrastructure&#8221;, says Katelyn:</span></p><blockquote><p><span>&#8220;We started with a model where you get an API to define an agent, then you get an API to start a session with an agent. The reality of what the world wants and needs right now is people running their own infrastructure. So, we started to build a self-hosted sandbox.</span></p><p><span>But then, what we started to hear from lots of customers is that they&#8217;re trying to hack harnesses together, running their own &#8220;harness infrastructure,&#8221; and this gave us the idea for Claude Managed Agents.&#8221;</span></p></blockquote><h3><span>The largest part: planning</span></h3><p><span>In this project, Katelyn said the single biggest matter was planning:</span></p><blockquote><p><span>&#8220;There are products you can jump straight to prototyping, but then there are ones where you need to start by architecting it properly. For example, if we build a TypeScript CLI &#8211; which is pretty trivial for what needs to be built &#8211; we could go straight to prototyping. But with Claude Managed Agents, we needed to first figure out what we are doing.</span></p><p><span>Of course, we did some upfront prototyping for Managed Agents: hacking and spiking things. But prototyping itself was more about understanding the requirements.</span></p><p><strong><span>Our planning process looked more like a typical pre-AI planning process. </span></strong><span>You know how every team has the project, where everyone comes up with some version of the same idea and people keep floating and circling it around until you finally do it? Managed Agents was this for our team. When we started the project, we had documents dating back up to two years about ideas and suggestions.</span></p></blockquote><p><span>Post-planning, when the project officially kicked off, a PRD (product requirements document) was created:</span></p><blockquote><p><span>&#8220;In the end, it was the Product Manager and the Tech Lead on our API Agents team who decided to pull the trigger and kick off this project. We&#8217;d get in a room, go through it, and get aligned. But it wasn&#8217;t just us: we&#8217;d have to align with teams around the business, other cloud providers, and other engineering teams. For example, we have a sandboxing team inside of the Platform org: and so this team was consulted on the design of Managed Agents, given this product would spawn a lot of sandboxes.</span></p><p><strong><span>Just like before, we had a PRD, it was a Google Doc. </span></strong><span>We used a Google Doc because we needed to coordinate all interested people. This has not gone away.</span></p><p><span>Similarly, my product counterpart and I run product reviews.&#8221;</span></p></blockquote><p><span>Some processes from before AI, like the PRD, are still useful in complex projects today, for getting large groups of people on the same page.</span></p><h3><span>Build for an internal customer first</span></h3><p><span>With planning complete, the team decided to do a &#8220;spike&#8221; and stress-test the idea and architecture, by building the backend of Claude Code on the web. Remote execution of code with an agent harness was a similarly shaped problem to the one they wanted to solve for customers. The thinking was to start by solving it for the Claude Code team before tackling it in a more generic way for customers.</span></p><p><strong><span>Internal teams are more fluid than before AI. </span></strong><span>Katelyn:</span></p><blockquote><p><span>&#8220;Pre-AI, we might have hit the Claude Code team up with a bunch of big requirements documents, and they would have then hit us back with another set of documents. Now it was much easier: someone on our team built a few components, took it over to the Claude Code team, and they started to hack around it. We could figure out how this component plugs into this part of their product, and the other way around. It was just a faster and easier process, getting this first internal version of the product up and running.</span></p><p><span>Aligning with other teams on interfaces remains important, and it&#8217;s easier.</span><strong><span> </span></strong><span>Back in the day, you&#8217;d have to come with a fully spec&#8217;d interface to use. Now, we could do it a lot more fluidly: we could stand up a stub service that shadowed traffic to start with, and iron out the interfaces with the Claude Code team as we went. They did some hacking on it and gave feedback, we made changes while building out the service under the interface, then went back to make it work.&#8221;</span></p></blockquote><p><span>They launched a service for Claude Code&#8217;s mobile app to spin up a sandbox, boot up Claude Code and run it. The service went to production and the Claude Platform team took the learnings.</span></p><h3><span>Re-architecting midway through</span></h3><p><span>It&#8217;s likely a familiar scenario many engineers can relate to, that after planning a project and getting underway, you see that you&#8217;re going to need to change the architecture. It happened on this project, too.</span></p><p><strong><span>The platform team ended up re-architecting Managed Agents based on learnings from the Claude Code &#8220;spike.&#8221; </span></strong><span>Re-architecting meant decoupling the &#8220;brain&#8221; of Claude and its harness from the &#8220;hands&#8221; (sandboxes &amp; tools that perform actions) and the &#8220;session&#8221; (the log of events). Each became an interface that made few assumptions about each other.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ODEN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ODEN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png 424w, https://substackcdn.com/image/fetch/$s_!ODEN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png 848w, https://substackcdn.com/image/fetch/$s_!ODEN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png 1272w, https://substackcdn.com/image/fetch/$s_!ODEN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ODEN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png" width="1456" height="763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:763,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ODEN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png 424w, https://substackcdn.com/image/fetch/$s_!ODEN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png 848w, https://substackcdn.com/image/fetch/$s_!ODEN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png 1272w, https://substackcdn.com/image/fetch/$s_!ODEN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91e11771-4d1b-424f-be24-03eb3a4a5ba5_1882x986.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>High-level architecture of Claude Managed Agents after the re-architecture</span></em></figcaption></figure></div><p><span>The team also built an abstraction around vaults and credentials. Credentials can safely be stored inside </span><a href="https://platform.claude.com/docs/en/managed-agents/vaults"><span>a vault</span></a><span>. All calls using credentials are made via a proxy which has a session token. It is the proxy that fetches the right credentials from the vault: the credentials are never seen by the agent, sandbox, or session. Credentials are only injected at the egress boundary when the service is invoked:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R6yh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R6yh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png 424w, https://substackcdn.com/image/fetch/$s_!R6yh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png 848w, https://substackcdn.com/image/fetch/$s_!R6yh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!R6yh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R6yh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png" width="1456" height="1372" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1372,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R6yh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png 424w, https://substackcdn.com/image/fetch/$s_!R6yh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png 848w, https://substackcdn.com/image/fetch/$s_!R6yh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!R6yh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8697499a-a569-417f-b21d-f125de5dc490_1568x1478.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Adding credentials the harness never sees</span></em></figcaption></figure></div><p><span>Internal &#8220;dogfooding&#8221; helped surface hard problems to solve. A few examples:</span></p><ul><li><p><span>Reliability and scalability: these are really hard to do well for agents because if connection to the sandbox is lost, the whole agent dies and you lose state</span></p></li><li><p><span>Credentials and access control: also hard and problematic, especially when first building the service</span></p></li></ul><p><em><span>The Managed Agents team shared </span><a href="https://www.anthropic.com/engineering/managed-agents"><span>more about this re-architecting project</span></a><span>.</span></em></p><p><strong><span>The project took about six months, by no means a rapid process. </span></strong><span>Katelyn emphasized that pre-AI, a project like this would have probably been in the realm of two years. Managed Agents is one of the biggest projects the Claude Platform team has built, and more complex than it looks: for example, adding support for running agents on AWS, GCP and Azure.</span></p><h2><span>2. Twelve-month project done in 11 days: Bun rewrite to Rust</span></h2><p><span>As covered before, Jarred Sumner is the creator of Bun, a popular JavaScript runtime with 22 million monthly downloads currently and Claude Code as a dependency.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bYpH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bYpH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bYpH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bYpH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bYpH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bYpH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg" width="1456" height="1941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bYpH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bYpH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bYpH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bYpH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c1f66a-54ca-4ece-b9ef-04c31b953c34_1536x2048.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>With Jarred Sumner (left), creator of Bun</span></em></figcaption></figure></div><p><span>Bun is written in Zig, a performant, productive language. However, it&#8217;s not memory safe and memory issues </span><a href="https://bun.com/blog/bun-in-rust?ref=blog.pragmaticengineer.com"><span>kept coming up</span></a><span>. Jarred thought that rewriting the project to an also-performant, memory-safe language like Rust could be an option &#8211; except that rewrites like this turned out as follies in the past. </span><a href="https://bun.com/blog/bun-in-rust"><span>Jarred</span></a><span> (emphasis mine:)</span></p><blockquote><p><span>&#8220;Historically, rewrites are a terrible idea. Excluding comments, Bun is 535,496 lines of Zig. A rewrite in another language would take a small team of engineers a full year. It would mean freezing bugfixes, security fixes or feature development for that time. The least risky approach to getting something shippable would be a mechanical port from Zig to Rust, with the minimal number of behavioral changes, using the exact same test suite we already use for testing Bun.</span></p><p><span>Fortunately, Bun&#8217;s own test suite is written in TypeScript which means it doesn&#8217;t depend on the runtime&#8217;s programming language.</span></p><p><strong><span>A year of zero user-facing impact was not an option we could consider.</span></strong><span> So, enforcement through code style to fix stability issues was our best bet, and was our plan when we added Rust-inspired smart pointers to Bun&#8217;s codebase.</span></p><p><span>But honestly, I didn&#8217;t want to do it. Homegrown smart pointers offer worse ergonomics than Rust, with none of the guarantees.&#8221;</span></p></blockquote><p><span>But then, Jarred asked if AI could do the heavy lifting and wondered how much the migration could be sped up. </span><strong><span>In the end, he completed the rewrite from start to merge in 11 days, using 64 parallel agents and $165,000 in tokens at API price. </span></strong><span>Here&#8217;s Jarred on how his AI-heavy rewrite compared:</span></p><blockquote><p><span>&#8220;By hand, I think this would&#8217;ve taken three engineers with full context on the codebase about a year, during which time we wouldn&#8217;t be able to improve Node.js compatibility, fix bugs, fix security issues or implement new features. We never would&#8217;ve done that. The realistic alternative was to do nothing and keep fixing the bugs at the top of this post forever.&#8221;</span></p></blockquote><p><span>There was a lot more to the project than typing out the &#8220;...make zero mistakes&#8221; prompt:</span></p><ul><li><p><span>Jarred made a detailed plan and style guide on how to migrate</span></p></li><li><p><span>He set up the project so agents would not use Git worktrees which he found slow, but worked on different files in the same codebase</span></p></li><li><p><span>He created an orchestration system where each AI agent came up with suggestions of what to change, but did not make a change to the file to avoid conflicts; an orchestrator AI agent created the commits</span></p></li><li><p><span>The most time and tokens went on fixing the compile bugs, tests, and verifying that things worked</span></p></li><li><p><span>Bun itself has a very robust test harness: when all tests pass, it&#8217;s a high-confidence signal that the rewrite works</span></p></li><li><p><span>Crucially, Jarred is </span><em><span>the</span></em><span> ultimate domain expert in Bun: he created the project and knows the codebase better than anyone</span></p></li></ul><p><span>The rewrite has been shipped to production and powers Claude Code today.</span></p><p><em><span>We cover a lot more on this in </span><a href="https://blog.pragmaticengineer.com/the-pulse-what-can-we-learn-from-buns-rapid-rust-rewrite-with-ai/"><span>What can we learn from Bun&#8217;s rapid Rust rewrite with AI?</span></a></em></p><h2><span>3. Changing engineering practices</span></h2><p><span>So, what has changed in how teams build software at Anthropic, compared to the pre-AI days? That&#8217;s the question of this article, and it seems that many things are different. Let&#8217;s go through it:</span></p><h3><span>AI lab-specific practices</span></h3><p><span>Some things as normal as breathing at AI labs like Anthropic stand out as different with an outside perspective:</span></p><ul><li><p><strong><span>Everyone runs multiple AI agents all the time. </span></strong><span>Running 3-10 parallel agents is a given. Folks I talked with had their agents running in the background or cloud.</span></p></li><li><p><strong><span>No token budget, usage not tracked. </span></strong><span>One major difference between AI labs and everyone else is that there </span><em><span>really</span></em><span> is no token limit or token leaderboards that promote tokenmaxxing; people already use agents all the time.</span></p></li><li><p><strong><span>Very high autonomy. </span></strong><span>Work is becoming more structured inside AI labs, but there&#8217;s still massive autonomy compared to Big Tech and most startups. When everyone has unlimited tokens, it&#8217;s pretty easy to prototype any idea.</span></p></li></ul><h3><span>Prototyping and &#8220;spiking&#8221; is far more fluid</span></h3><p><span>It was several times faster to prototype early approaches for Claude Managed Agents. Similarly, &#8220;spiking&#8221; the Claude Code mobile backend implementation was much faster than pre-AI, Katelyn told me.</span></p><h3><span>Verification takes longer than implementation</span></h3><p><span>Jarred made a point about the split between implementation and validation in his 11-day rewrite to Rust. Roughly, it was:</span></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N0px!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N0px!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png 424w, https://substackcdn.com/image/fetch/$s_!N0px!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png 848w, https://substackcdn.com/image/fetch/$s_!N0px!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png 1272w, https://substackcdn.com/image/fetch/$s_!N0px!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N0px!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png" width="1456" height="317" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:317,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N0px!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png 424w, https://substackcdn.com/image/fetch/$s_!N0px!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png 848w, https://substackcdn.com/image/fetch/$s_!N0px!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png 1272w, https://substackcdn.com/image/fetch/$s_!N0px!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d5471e-bdc4-4485-846d-3833b3d6dc5b_1928x420.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Implementation of the Rust rewrite took far less time than fixing it up, then validating that it works as expected</figcaption></figure></div><p><span>The &#8220;implementation&#8221; part of rewriting the code from Zig to Rust took about 15% of the time, while 85% went on fixing things up: getting it to compile, fixing tests, verifying that it worked.</span></p><h3><span>Most tokens no longer spent on implementation</span></h3><p><strong><span>Thariq:</span></strong></p><blockquote><p><span>&#8220;We see that few tokens are spent on actual implementation. Most are spent on discovery of unknowns, prototyping, mocking, and then in verification and testing.&#8221;</span></p></blockquote><p><span>Jarred&#8217;s Bun rewrite echoes this: he spent more tokens on fixing up the implementation and verifying that it worked than on the implementation itself!</span></p><h3><span>Code review and more testing by AI</span></h3><p><span>Jarred:</span></p><blockquote><p><span>&#8220;Critiquing the code and testing it with agents is a new approach we do a lot more of</span><strong><span>.</span></strong><span> I think a lot about trust when you merge a lot of code. How do you merge 100+ PRs a day, and make sure the code works? At this pace, you need to trust the code without the ability to read it all yourself. And I think it&#8217;s a few things:</span></p><ul><li><p><strong><span>Code review</span></strong><span>: it needs to be really good and automated. I&#8217;m clearly tooting our own horn here, but I find Claude&#8217;s code review to be really good. Claude&#8217;s code review catches bugs that would take me an hour of closely reading the code to figure out. The caveat is that it&#8217;s expensive!</span></p></li><li><p><strong><span>Security scanning</span></strong><span>: for this Rust rewrite we did 11 runs of the Claude Security Scanner.</span></p></li><li><p><strong><span>Fuzz testing</span></strong><span>: we&#8217;ve also been doing different types of fuzzing (</span><a href="https://en.wikipedia.org/wiki/Fuzzing"><span>fuzz testing</span></a><span>), where we had Claude write a fuzzer for things like parser fuzzing.</span></p></li></ul><p><span>Running out-of-process testing, where it happens in a different process/session from coding, is one way to build trust in the code. I expect more of this.&#8221;</span></p></blockquote><h3><span>New pattern: fanning out work to AI</span></h3><p><span>Jarred described a new way he works:</span></p><blockquote><p><span>&#8220;A new approach I&#8217;m using is fanning out a lot of the work to many Claudes at the same time. I did this with the Bun rewrite, but I use it for other work. This approach works very well for me, and I feel it&#8217;s pretty underused.&#8221;</span></p></blockquote><h3><span>Time-saving automations powered by agents more widespread</span></h3><p><span>Jarred listed several time-saving automations set up by the Bun team to run an active open-source project with a small team, while the team works on Claude Code:</span></p><ul><li><p><span>Every time someone files an issue, Claude runs to try and reproduce the issue. If it succeeds, it starts another container, which then tries to fix the issue and submit a PR.</span></p></li><li><p><span>The agent tasked with submitting a PR has to write a test that fails in the system version (the one without the patch) of Bun, and passes in the debug build with the patch, before it is allowed to submit a PR</span></p></li><li><p><span>There are other automations, like if there is no test, the PR is auto-rejected; all linters are run: Claude Code review is run, CodeRabbit&#8217;s code review is run, and the agents go back and forth on the GitHub pull request</span></p></li></ul><h3><span>Auto-merge of pull requests: coming soon?</span></h3><p><span>Pull requests are merged manually when all quality gates pass, but this could become automatic at some point. Once all the above checks pass, all (AI) code review comments are addressed, tests are added to new code, etc. As an interesting aside, a lot of GitHub activity is Claude talking to Claude!</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oU4s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oU4s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png 424w, https://substackcdn.com/image/fetch/$s_!oU4s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png 848w, https://substackcdn.com/image/fetch/$s_!oU4s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!oU4s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oU4s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png" width="1456" height="1193" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1193,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oU4s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png 424w, https://substackcdn.com/image/fetch/$s_!oU4s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png 848w, https://substackcdn.com/image/fetch/$s_!oU4s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!oU4s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa28345d7-0db1-4e25-86de-507ce45bc994_1894x1552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Claude talking to Claude. Source: </span><a href="https://github.com/oven-sh/bun/pull/34144"><span>Bun</span></a></em></figcaption></figure></div><p><span>But manual merging may vanish in low-risk cases, at least for the Bun project. Jarred told me:</span></p><blockquote><p><span>&#8220;Today, a person presses &#8216;merge&#8217; but within a few months, I expect:</span></p></blockquote><ul><li><p><span>Automated reviewer LGTMs</span></p></li><li><p><span>&#8594; another Claude with a fresh context window judges if it&#8217;s simple and low blast-radius</span></p></li><li><p><span>&#8594; if it is: auto-merge!&#8221;</span></p></li></ul><h3><span>Test assumptions with each model generation</span></h3><p><span>Inside Anthropic, the team keeps testing their priors. Thariq gave an interesting example:</span></p><blockquote><p><span>&#8220;The thing with agents is that you have to revisit any assumptions you have made because it can change with a new model generation. For that reason, we deleted 80% of the Claude Code system prompt recently because the model has gotten smarter.</span></p><p><strong><span>Using HTML is another assumption we needed to re-examine.</span></strong><span> HTML is one of those things which Claude is a lot smarter at than many of us expected. I&#8217;ve started preferring HTML as an output format over Markdown, and see this being used by others on the Claude Code team.</span></p><p><span>HTML can convey much richer information compared to markdown, HTML documents are easier to read and share.&#8221;</span></p></blockquote><h2><span>4. Team-level changes</span></h2><p><span>At Anthropic, there are also changes in how engineering teams operate, compared to pre-AI.</span></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/inside-anthropic">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Pulse: Quitting Spotify Podcasts over reliability]]></title><description><![CDATA[Also: Chinese open models match closed ones from Anthropic and OpenAI, AWS&#8217;s &#8220;heart-attack&#8221; billing error, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-quitting-spotify-podcasts</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-quitting-spotify-podcasts</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 23 Jul 2026 15:59:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nelU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece389ea-6dd6-45c8-b269-718ee5fc0098_1100x620.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</span></em></p><p><span>Today, we cover:</span></p><ol><li><p><strong><span>Moving my video podcast off Spotify due to constant reliability issues. </span></strong><span>Spotify&#8217;s podcast platform has become chronically unreliable since the company&#8217;s leadership started boasting about high AI adoption. But competitors haven&#8217;t had similar issues, and so I have offboarded from Spotify.</span></p></li><li><p><strong><span>Will Kimi K3 trigger US push for closed-source AI models? </span></strong><span>Moonshot AI&#8217;s latest open model, Kimi K3, is on par with Anthropic&#8217;s Fable 5. Could it lead to the US government regulating or banning Chinese open models to protect US labs?</span></p></li><li><p><strong><span>AWS laughs off &#8220;heart attack&#8221; billing error. </span></strong><span>AWS customers were billed trillions more than they should have been, due to what was likely a conversion error. But instead of sharing an incident report, AWS saw the funny side.</span></p></li><li><p><strong><span>Industry pulse. </span></strong><span>OpenAI&#8217;s unreleased model tried to hack HuggingFace to improve its test scores, X took more than a year to develop its new Android app, Google&#8217;s new AI model flops, and more.</span></p></li></ol><h2><span>1. Moving my video podcast off Spotify due to constant reliability issues</span></h2>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-quitting-spotify-podcasts">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Pushing software engineering limits with “napkin math”]]></title><description><![CDATA[Turbopuffer cofounder Simon Eskildsen on the benefits of longer tenure, using first principles to build durable software &#8211; and why founders should be cautious when raising VC money]]></description><link>https://newsletter.pragmaticengineer.com/p/pushing-software-engineering-limits</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/pushing-software-engineering-limits</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 21 Jul 2026 16:52:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/h8TBLKyo7Rs" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>Hi, this is Gergely with the monthly, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover Big Tech and startups through the lens of senior engineers and engineering leaders. If you&#8217;ve been forwarded this email, you can </span><a href="https://newsletter.pragmaticengineer.com/about?ref=blog.pragmaticengineer.com"><span>subscribe here</span></a><span>.</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.pragmaticengineer.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.pragmaticengineer.com/subscribe?"><span>Subscribe now</span></a></p><p><span>After I recently interviewed Simon Eskildsen, co-founder and CEO of turbopuffer, on the main stage at the AI Engineer&#8217;s World Fair, many people at the event told me they found him relatable and inspiring for his choices to stick with one company for close to a decade, his belief in the power of &#8220;napkin math&#8221; to reveal why products run slowly or cost too much, and for his insight about how too much of VC funding is about ego, not business needs.</span></p><p><span>This article contains the most interesting parts from that conversation; in particular, the concept of &#8220;napkin math&#8221; &#8211; doing quick calculations to get rough answers &#8211; as a way to challenge existing systems to improve. The full 55-minute-long video of the discussion at the AI Engineer&#8217;s World Fair is available to watch:</span></p><div id="youtube2-h8TBLKyo7Rs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;h8TBLKyo7Rs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/h8TBLKyo7Rs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youtu.be/h8TBLKyo7Rs&quot;,&quot;text&quot;:&quot;Watch the full interview&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/h8TBLKyo7Rs"><span>Watch the full interview</span></a></p><p><span>Today, we cover:</span></p><ol><li><p><strong><span>Algorithmic programming speedrun.</span></strong><span> While in high school, Simon competed in the International Olympiad for Informatics (IOI) which pushed him to learn about writing correct programs that are fast and memory-efficient, and more.</span></p></li><li><p><strong><span>Eight years of infra at Shopify. </span></strong><span>There are many upsides to longer tenure: Simon learned infrastructure concepts, dug deep into databases running across regions, and learned to write software that ages well.</span></p></li><li><p><strong><span>&#8220;Napkin math&#8221; as a superpower.</span></strong><span> Simon became obsessed with finding the theoretical limits of compute operations, such as sending over data and reading bytes. This held him in good stead at Shopify, and then at his startup.</span></p></li><li><p><strong><span>Origins of turbopuffer</span></strong><span>. When ChatGPT took off, context windows were small, and so stuffing them with the right information was key for AI applications. Fast search was needed, but the search solutions were surprisingly expensive. Using &#8220;napkin math&#8221;, Simon discovered they were </span><em><span>far</span></em><span> more expensive than necessary.</span></p></li><li><p><strong><span>A new product without VC funding &amp; Cursor as customer no.1. </span></strong><span>After raising $8M in seed funding, Cursor rolled the dice on the new turbopuffer team after Simon helped with their search &amp; database needs.</span></p></li><li><p><strong><span>Reasons to raise venture capital</span></strong><span>. Fund R&amp;D, fund growth, stroke founders&#8217; egos, and more.</span></p></li></ol><p><em><span>Disclaimer: turbopuffer is a season sponsor </span><a href="https://pragmaticpodcast.com/"><span>of the podcast</span></a><span>, but as with all our deepdives, this article is independent of podcast sponsorships.</span></em></p><h2><span>1. </span>Algorithmic programming speedrun</h2><p><span>A self-taught professional, Simon skipped college to work at Shopify and spent nearly a decade there building a variety of systems. His interest in computers started after initially getting into building websites aged 12. Growing up in Denmark, he dabbled in HTML with tools like Microsoft FrontPage and Adobe&#8217;s Dreamweaver.</span></p><p><span>While still a teenager, Simon &#8220;hit a wall&#8221; by exhausting the Danish-language part of the internet for learning programming, and got into the World of Warcraft MMO game, which helped him acquire English.</span></p><p><span>After discovering the International Olympiad for Informatics (IOI), he decided to enter, despite a very competitive, multi-stage selection process open to all Danish high schools. IOI problems are pretty similar to Leetcode problems: algorithmic challenges that value correctness, speed, and memory usage.</span></p><p><span>Simon cleared the online qualification round and was invited to the Danish Nationals. This was more than a competition: a weekend-long bootcamp to teach participants more advanced programming techniques such as recursion (which Simon already knew), the </span><a href="https://en.wikipedia.org/wiki/Divide-and-conquer_algorithm"><span>divide-and-conquer algorithm</span></a><span>, and </span><a href="https://en.wikipedia.org/wiki/Dynamic_programming"><span>dynamic programming</span></a><span>; one of the more tricky concepts to master for algorithmic programming.</span></p><p><span>I tip my hat to the organizers for creating a challenging bootcamp and offering the opportunity for people like Simon, who wasn&#8217;t aware of what &#8220;NP complete&#8221; meant when he entered. </span><a href="https://sirupsen.com/my-journey-to-the-international-olympiad-in-informatics"><span>He recalls</span></a><span>:</span></p><blockquote><p><span>&#8220;The routine was that every four hours we&#8217;d be introduced to a new &#8220;programming concept&#8221;, and receive ~2-6 tasks where this, combined with previously introduced concepts, had to be applied. All the solutions had to be submitted to the same site I submitted my qualification solutions to, as it was all part of the final evaluation. The tasks were incredibly challenging, like nothing I had ever tried before.</span></p><p><span>Sometimes in extreme desperation combined with tiredness from the trip, I&#8217;d think about taking the next train home. This feeling would disappear with the utter joy and confidence that arose whenever I would finally solve a task, and creep back once again when I found myself still struggling after an hour on a new problem. But this kept me going. By Saturday afternoon, I had almost managed to get up to speed with the others, and was doing the same tasks as them.&#8221;</span></p></blockquote><p><span>Ultimately, Simon claimed one of six spots in the Danish national team, making it through to the regional finals.</span></p><p><strong><span>Aware of how little he knew about programming, Simon doubled down to catch up. </span></strong><span>He realized that most other participants were better prepared and that he had to do something to survive the next qualifying round. So, he got to work:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gp-r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gp-r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png 424w, https://substackcdn.com/image/fetch/$s_!Gp-r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png 848w, https://substackcdn.com/image/fetch/$s_!Gp-r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png 1272w, https://substackcdn.com/image/fetch/$s_!Gp-r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gp-r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png" width="1294" height="916" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:916,&quot;width&quot;:1294,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Gp-r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png 424w, https://substackcdn.com/image/fetch/$s_!Gp-r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png 848w, https://substackcdn.com/image/fetch/$s_!Gp-r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png 1272w, https://substackcdn.com/image/fetch/$s_!Gp-r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7d73bb2-e470-41b1-afe7-059ddbd78d55_1294x916.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Simon&#8217;s desk with Donald Knuth&#8217;s &#8220;The Art of Computer Programming,&#8221; and the training week he created</figcaption></figure></div><p><span>As Simon recalled:</span></p><blockquote><p><span>&#8220;I armed myself with a borrowed copy of &#8220;The Art of Computer Programming&#8221;, worked through the exercises, read up on common algorithms on Wikipedia, completed tasks on USACO, and memorized the critical parts of my Vim config for the competition computers. I managed to create quite an intense training weekend for myself.&#8221;</span></p></blockquote><p><span>The regional finals were even more challenging than the Nationals, and participants struggled to write performant solutions to the problems. Despite putting in the effort, Simon was pretty sure he was out of the competition, </span><a href="https://sirupsen.com/my-journey-to-the-international-olympiad-in-informatics"><span>and recorded</span></a><span> his learnings:</span></p><blockquote><p><span>&#8220;[From the programming competition] I learned that you must avoid digging holes. Repeatedly, I found myself so fixated on getting a particular idea to work that I&#8217;d get absolutely nowhere. Sometimes, you have to bite the bullet, delete your program, find a new sheet of paper, and start from scratch. A good case of this is when you start working around a general solution to solve specific edge-cases. I learned that there is almost always a simple way to solve a problem without explicitly handling edge-cases. If there are two edge-cases, there&#8217;s almost certainly two more. The simple solution will handle edge-cases automatically &#8211; even those you might not have considered.&#8221;</span></p></blockquote><p><span>But as it turned out, two months later he was told he had been selected to represent Denmark in the final phase of the competition. Simon continued to push himself out of the comfort zone of web development, using HTML, a bit of PHP, and getting into algorithmic programming.</span></p><p><strong><span>Another decision that would later bear fruit career-wise was starting a blog while at high school &#8211; though he didn&#8217;t know it at the time.</span></strong><span> In 2010, Simon launched </span><a href="https://sirupsen.com/"><span>his English-language blog</span></a><span> but posted only one or two articles per year; mostly short ones describing problems he&#8217;d solved:</span></p><ul><li><p><a href="https://sirupsen.com/a-simple-imgur-bash-screenshot-utility"><span>A five-line script</span></a><span> to take screenshots and upload them to Imgur, all from the command line (2010)</span></p></li><li><p><a href="https://sirupsen.com/setting-up-unicorn-with-nginx"><span>Setting up a Ruby HTTP server</span></a><span> on NGINX using the library </span><a href="https://tomayko.com/blog/2009/unicorn-is-unix"><span>Unicorn</span></a><span> (2010)</span></p></li><li><p><a href="https://sirupsen.com/stop-relying-on-your-orm-and-learn-sql"><span>Why Simon favors SQL</span></a><span> over ORMs: Object-Relational Mappings (ORMs) are frameworks to abstract SQL, these were very popular around that time (2011)</span></p></li></ul><p><span>Two posts he published would go on to have an impact on his life. One was about </span><a href="https://sirupsen.com/my-journey-to-the-international-olympiad-in-informatics"><span>his IOI experience and learnings</span></a><span>. The other only came about after he suffered the disaster of fatally dropping his iPhone during his final year in high school.</span></p><h2><span>2. </span>Eight years of infra at Shopify</h2><p><span>With his smartphone dead, Simon was forced to switch to an old-school Nokia &#8220;dumb&#8221; phone. He wrote a short article about the experience titled </span><a href="https://sirupsen.com/iphone"><span>Why I&#8217;m glad my iPhone broke</span></a><span>, which </span><a href="https://news.ycombinator.com/item?id=5109159"><span>went viral on Hacker News</span></a><span>, making it to the front page of the site with many comments.</span></p><p><span>It seems that someone at Shopify, in Canada, read the article and others by him &#8211; including the summary of his impressive performance at the International Olympiad for Informatics &#8211; as a recruiter from Shopify flew Simon out to interview in Ottawa, Canada, where he was offered a software engineering position at the company.</span></p><p><strong><span>In his new job on the infrastructure team, Simon made notes about things he didn&#8217;t understand and read up on new concepts. </span></strong><span>As he told me:</span></p><blockquote><p><span>&#8220;When I started at Shopify, I was insecure about having not studied computer science and my biggest exposure to programming had been the IOI. If nothing else, preparing for the IOI taught me that you can sit down, read a paper, and figure it out if you spend enough time on it. So, I did that repeatedly.</span></p><p><span>In my first year at Shopify, every time I heard something I didn&#8217;t know, I noted it down on a piece of paper. Then, that evening, I would read up about it.</span></p><p><span>For example, if someone at work mentioned TCP, I assumed that surely they would know </span><em><span>exactly</span></em><span> what&#8217;s in the three-way handshake and how TLS is layered on top. And I also assumed they&#8217;d looked at Wireshark and all of that. I don&#8217;t think that&#8217;s true, but that&#8217;s what I thought at the time! So, I dug deep into everything I encountered.&#8221;</span></p></blockquote><p><span>Working in infrastructure meant solving interesting engineering problems at a time when Shopify was growing 120-140% in load year-on-year; Simon was exposed to problem domains like:</span></p><ul><li><p><strong><span>Ruby on Rails and databases: </span></strong><span>Shopify was already one of the world&#8217;s largest Ruby on Rails monolith applications, and working on infrastructure meant being close to the database layer</span></p></li><li><p><strong><span>Sharding and cutting over:</span></strong><span> as Simon&#8217;s manager used to say, &#8220;you cannot cache writes&#8221;, so Shopify had to move from running on a single group of machines to a shard (partitioned) setup of machines. The team did the cut-over (moving to the shard) just a week before Black Friday, the busiest time of the year.</span></p></li><li><p><strong><span>Multi-data centers: </span></strong><span>expanding database footprint from one data center (DC) to multiple DCs</span></p></li><li><p><strong><span>Splitting up key services:</span></strong><span> Shopify had a 128GB machine (massive for the time) running Redis as a key-value store. Nobody dared touch it until one day the service went down. Then, the team split responsibilities up into separate services.</span></p></li></ul><p><strong><span>Simon built a framework to simulate networking conditions called </span><a href="https://github.com/shopify/toxiproxy"><span>toxiproxy</span></a><span>. </span></strong><span>The idea came to him while attempting to write a more thorough, systems-level test to see how Shopify&#8217;s application held up during partial outages. He created a matrix of Shopify&#8217;s services, and wanted to write a complete test suite for this matrix, to see if the system was resilient enough to handle some parts of the system being down. For example:</span></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9au0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9au0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png 424w, https://substackcdn.com/image/fetch/$s_!9au0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png 848w, https://substackcdn.com/image/fetch/$s_!9au0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png 1272w, https://substackcdn.com/image/fetch/$s_!9au0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9au0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png" width="512" height="135" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:135,&quot;width&quot;:512,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9au0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png 424w, https://substackcdn.com/image/fetch/$s_!9au0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png 848w, https://substackcdn.com/image/fetch/$s_!9au0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png 1272w, https://substackcdn.com/image/fetch/$s_!9au0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdba208-a817-42fe-b4a0-f6ba813d8541_512x135.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><em><span>An example of a test case Simon wanted to run</span></em></figcaption></figure></div><p><span>As Simon </span><a href="https://shopify.engineering/building-and-testing-resilient-ruby-on-rails-applications"><span>wrote</span></a><span> about this problem at the time:</span></p><blockquote><p><span>&#8220;Having tests for the matrix was a must; otherwise we couldn&#8217;t guarantee the state of the matrix wouldn&#8217;t degrade over time. Since the tools mentioned previously require root access, we investigated proxies to simulate latency and downtime at the TCP level, but didn&#8217;t find one that suited our needs. We needed an online API to edit proxies and to support deterministic latencies, which made it suitable for integration testing.&#8221;</span></p></blockquote><p><span>This was the inspiration that led to toxiproxy. As Simon told me on stage:</span></p><blockquote><p><span>&#8220;Toxiproxy is a proxy that sits in between the application and the databases. With the proxy in place, you could do things like make an API call to the proxy, instructing it to simulate taking the database down, or making it slow.</span></p><p><span>Over time, we added a bunch of other ways to inject failures. With this proxy, we did not have to mock low-level drivers, but we could test failure handling really well.&#8221;</span></p></blockquote><p><span>Toxiproxy was </span><a href="https://github.com/shopify/toxiproxy"><span>open sourced</span></a><span> in 2014, and apparently still runs in Shopify&#8217;s CI system 12 years later, to Simon&#8217;s knowledge!</span></p><p><strong><span>The biggest benefit of a long tenure at a company was learning to write software that ages well. </span></strong><span>Simon told me that this was the lesson that made it so worthwhile, and how often the simple solution someone put together in a week or two outlasted the big, multi-team RFC-driven solutions. That was a lesson he still uses today.</span></p><h2><span>3. </span>&#8220;Napkin math&#8221; as a superpower</h2><p><span>While at Shopify, Simon became interested in figuring out the theoretical limits of certain computer operations. For example, how much bandwidth does DRAM have for memory transfer? How long does a round-trip operation to AWS S3 take, and how much does it cost? What does a gigabyte of memory cost?</span></p><p><span>He sought the actual numbers, wrote a script to collect them, and created a table with the data:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W-hZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W-hZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png 424w, https://substackcdn.com/image/fetch/$s_!W-hZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png 848w, https://substackcdn.com/image/fetch/$s_!W-hZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png 1272w, https://substackcdn.com/image/fetch/$s_!W-hZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W-hZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png" width="1336" height="854" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:854,&quot;width&quot;:1336,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157203,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/207938613?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W-hZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png 424w, https://substackcdn.com/image/fetch/$s_!W-hZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png 848w, https://substackcdn.com/image/fetch/$s_!W-hZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png 1272w, https://substackcdn.com/image/fetch/$s_!W-hZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c561ff1-c96d-48f0-8396-a0c2572f17a8_1336x854.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Some of the numbers Simon measured &amp; memorized<span>. See </span><a href="https://github.com/sirupsen/napkin-math"><span>the full table on GitHub</span></a></figcaption></figure></div><p><strong><span>Simon started to memorize key numbers with flash cards. </span></strong><span>He wanted to be able to instantly recall all important numbers. As he told me:</span></p><blockquote><p><span>&#8220;Napkin math was essentially just this table that I maintain on GitHub. There&#8217;s probably like 50 of these numbers and then a script that generates them all.</span></p><p><span>For example, what does a gigabyte of memory cost? $2. What does a gigabyte of S3 cost? Two cents. What does a gigabyte of this cost? 10 cents. What does it cost on spot? What does it cost on a three-year commit? I had a massive table, then I created flashcards for almost every single cell so I know all these numbers.</span></p><p><span>This was a project I started taking on at Shopify because I would review projects and these numbers would be helpful.&#8221;</span></p></blockquote><p><strong><span>Napkin math enabled him to challenge design decisions based on benchmarks that had issues. </span></strong><span>As he told me:</span></p><blockquote><p><span>&#8220;When reviewing a project, a product team would tell me that they chose Database A over Database B because they benchmarked both, and Database A was better. I hate benchmarks because making design decisions based on benchmarks is not a satisfying answer to me.</span></p><p><span>For example, you&#8217;re saying that with Database A, as per the benchmark, it takes 10 seconds to do this one thing. But it should take 10 milliseconds if you do the napkin math. Say, it&#8217;s a search query. Okay, you&#8217;re searching for three terms then. Each term has this many documents that match it. That&#8217;s this many megabytes. We intersect this many lists. You have DRAM bandwidth on multiple cores, at 100 GB/sec. So if you do the math, it should be 10 milliseconds.</span></p><p><span>So, now you&#8217;re telling me that the benchmark for the same thing takes 10 seconds, which means one of us is wrong! Either there&#8217;s a gap in my understanding &#8211; which is possible! &#8211; or the benchmark measures the wrong thing.</span></p><p><span>Often, it would be things like the person doing the benchmark and not realizing that the query would be a distributed one, running across a hundred different nodes. And in this case, of course the p99 is going to be very high!&#8221;</span></p></blockquote><p><strong><span>Simon went even deeper into &#8220;napkin math&#8221; after leaving Shopify. </span></strong><span>He </span><a href="https://sirupsen.com/napkin/problem-10-mysql-transactions-per-second"><span>investigated</span></a><span> whether MySQL&#8217;s maximum transactions per second is equivalent to fsyncs per second (the number of file writes per second a system can handle). He discovered that MySQL can handle more writes than the operating system could sync to the file, which was a surprise:</span></p><blockquote><p><span>&#8220;It takes ~3 seconds to perform 16,000 insertions, or ~5,300 insertions per second. This is 5x more than the 1,000 fsyncs per second our napkin math told us would be the theoretical maximum transactional throughput!</span></p><p><span>Typically, with napkin math we aim for being within an order of magnitude, which we are. But when I do napkin math, it usually establishes a lower bound for the system, i.e., from first-principles, how fast could this system perform in ideal circumstances?</span></p><p><strong><span>Rarely is the system 5x faster than the napkin math says.</span></strong><span> When we identify a significant-looking gap between the real-life performance and the expected performance, I call it the &#8220;first-principle gap.&#8221; This is where curiosity sets in. It typically means there&#8217;s (1) an opportunity to improve the system, or (2) a flaw in our model of the system. In this case, only (2) makes sense, because the system is faster than we predicted.&#8221;</span></p></blockquote><p><span>Simon </span><a href="https://sirupsen.com/napkin/problem-10-mysql-transactions-per-second"><span>started to investigate</span></a><span>, and learned that MySQL does grouping of transactions (not doing an fsync for every write), and it also does smart merging of multiple fsync operations that would be processed in parallel, effectively doing a &#8220;group commit&#8221; to further improve performance. This is a learning he&#8217;d later use: grouping writes together on top of S3, to reduce latency and improve cost.</span></p><p><span>Personally, I find it amazing how much you can learn with some measurements and by asking questions about how a system achieves results that go against what the &#8220;napkin math&#8221; suggested should be its limit!</span></p><h2><span>4. Origins of turbopuffer</span></h2><p><span>&#8220;Napkin math&#8221; also played a part in the creation of turbopuffer. Simon told me that three things had to combine for the project to come to life.</span></p><p><strong><span>1. Search was a difficult project at Shopify. </span></strong><span>Building search was one of Simon&#8217;s final projects at the company, and he did not have a good time with it. He used a popular database vendor but struggled to have it perform napkin math. The query plans were not exposed easily by the database, so he could not figure out what was missing and why it wasn&#8217;t performing the napkin math without reading massive amounts of source code. Also, the search infra was difficult to operate.</span></p><p><strong><span>2. Napkin math became a surprisingly efficient reasoning tool. </span></strong><span>As a toolkit, napkin math gave Simon a way to reason about what could be achievable with a machine, if utilized perfectly.</span></p><p><strong><span>3. His friends&#8217; startups needed fast search badly because of AI. </span></strong><span>In early 2023, Simon helped a few friends with infra at their startups, many of whom had the same problem: LLM context windows were very small (4-8 KB), and they needed to fill them with the right parts of documents, but this demanded very fast search. One startup budgeted that their new search vendor would cost $30K/month, while the existing infra bill was only $5K/month! For a bootstrapped Canadian company, the cost was too high, so they didn&#8217;t ship the AI feature.</span></p><p><span>Simon could not stop thinking about why search was so expensive, and why it didn&#8217;t line up with what the &#8220;napkin math&#8221; predicted the cost should be. Eventually, he laid out a basic architecture to make it fast and cheap:</span></p><ol><li><p><span>Store the data to search in AWS S3</span></p></li><li><p><span>Do some clustering and organize the files</span></p></li><li><p><span>Get latency down. S3 is cheap and reliable, but has high latency</span></p></li></ol><p><span>Driven by curiosity about how that could work, he set out to build it. As he told me:</span></p><blockquote><p><span>&#8220;I just became fully obsessed that summer [of 2023] with building it. The first version was the simplest possible thing. I&#8217;m a very pragmatic person, so I didn&#8217;t get buried in detail. I barely read the literature on log-structured merge (</span><a href="https://en.wikipedia.org/wiki/Log-structured_merge-tree"><span>LSM</span></a><span>).</span></p><p><span>The simplest way to do this is to run a clustering algorithm on the vectors. You get the clusters, and then put the clusters in files. The files are called &#8216;cluster_01&#8217;, &#8216;cluster_02&#8217;, &#8216;cluster_03.&#8217; Then you have a file called centroids of the clusters. Then, you search by downloading centroids, looking into them, then downloading the closest clusters.</span></p><p><span>There were a few optimizations around merging clusters that were adjacent in files, just to control costs and boost performance. But this was the core of it.&#8221;</span></p></blockquote><p><span>What about performance? Simon:</span></p><blockquote><p><span>&#8220;For the first version, I didn&#8217;t even implement a dedicated caching layer. I just put the reverse proxy (NGINX) in front of S3, and that was it! The performance improvement came from caching all of the S3 objects. It was the simplest possible layer at the NGINX level.&#8221;</span></p></blockquote><h2><span>5. A new product without VC funding &amp; Cursor as customer no.1</span></h2><p><span>I first heard of turbopuffer last year, when I interviewed Cursor cofounder Sualeh Asif about how they built the AI coding harness. From our previously published </span><a href="https://newsletter.pragmaticengineer.com/p/cursor"><span>Cursor deepdive</span></a><span>:</span></p><blockquote><p><span>&#8220;The ongoing need to re-shard as usage grew became error-prone and frustrating. Sualeh told me the biggest lesson the team learned was to avoid sharding where possible in future. So, they looked for a vector database that could support multi-tenancy without requiring manual sharding.</span></p><p><span>Turbopuffer was a startup that promised this, so Cursor tried it and migrated a good part of their vector search use cases over.&#8221;</span></p></blockquote><p><strong><span>So, how did a billion-dollar startup come to bet on a tiny, unproven infra product with zero customers? </span></strong><span>There were a few factors:</span></p><p><span>First, Cursor was not </span><em><span>yet</span></em><span> a billion-dollar company in the fall of 2023, but a relatively fresh startup. The company raised $8M in seed funding in the same month. In 2024, the company was valued at $400M, and then its valuation surged to $29.3B. It was sold to SpaceX for $60B this year.</span></p><p><span>Secondly, it involved a tweet Simon posted after having had enough of building all summer, and wanting to test the waters. As he told me:</span></p><blockquote><p><span>&#8220;I was so sick of working on [turbopuffer]. I&#8217;d been working on this all summer and didn&#8217;t know if anyone cared. I only wanted to work on it if anyone cared. So, I decided to put it on Twitter.</span></p><p><span>At that point, I had a single </span><a href="https://groups.google.com/g/gce-discussion/c/eNl7L3_Y6Mg"><span>TMUX</span></a><span> instance running on an 8-core node somewhere in GCP. I was thinking: &#8220;if someone goes to prod, I&#8217;ll set it up properly on multiple nodes.</span></p><p><strong><span>But first, let&#8217;s see if anyone cares.</span></strong></p><p><span>Anyone who&#8217;s worked in the internals of databases would&#8217;ve had too much pride to ship anything like that; I was just releasing it like a SaaS project. Why can&#8217;t you work on a database like it&#8217;s SaaS?&#8221;</span></p></blockquote><p><span>So, he put out this confident-sounding tweet:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HfSI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HfSI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png 424w, https://substackcdn.com/image/fetch/$s_!HfSI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png 848w, https://substackcdn.com/image/fetch/$s_!HfSI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!HfSI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HfSI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png" width="1182" height="1000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1182,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HfSI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png 424w, https://substackcdn.com/image/fetch/$s_!HfSI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png 848w, https://substackcdn.com/image/fetch/$s_!HfSI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!HfSI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb6c554-160e-4136-bb74-a114be3d0bb5_1182x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>The launch tweet for turbopuffer. Source: </span><a href="https://x.com/Sirupsen/status/1709602855160869275?s=20"><span>Simon Eskildsen</span></a></em></figcaption></figure></div><p><span>Simon had the confidence to launch his product because he knew it was rock-solid and scalable:</span></p><blockquote><p><span>&#8220;I knew turbopuffer was reliable. It upheld its invariants. For example, you shut down all the VMs and no data is lost. All the writes are committed directly to blob storage.&#8221;</span></p></blockquote><p><strong><span>Cursor reached out. </span></strong><span>The company was an eight-person team at the time, fresh from seed funding and growing fast, but with a search problem that they were looking to partner with a startup on. Simon recounts:</span></p><blockquote><p><span>&#8220;Knowing Cursor&#8217;s founders now, I&#8217;m sure they must have sat at the dinner table one day and were like: &#8216;the unit economics of what we have right now, where all the vectors are in DRAM, are not working.&#8217;</span></p><p><span>They probably were asking why someone had not built a solution where you can put all the vectors from the codebase into S3 (to make it cheap), and move the part of the codebase used in memory (to make it fast). Then, everything sits in blob stores and you just hot load it all into cache. When you open the codebase, after a few seconds it&#8217;s all in RAM and the queries are as fast as everything else.</span></p><p><span>Aman (one of the cofounders) was already talking about using S3 as a key-value cache, which at the time, barely anyone was thinking of for unit economics.&#8221;</span></p></blockquote><p><strong><span>Simon knew nothing about B2B sales at that point, and was not trying to &#8220;sell&#8221; anything to Cursor. </span></strong><span>He exchanged a few emails with the Cursor team about their use case of searching many small local codebases. He wanted to help Cursor with the unit economics, while also proving that turbopuffer works. So, he hopped on a flight from Canada to San Francisco, arrived at Cursor&#8217;s office and got down to debugging their database provider:</span></p><blockquote><p><span>&#8220;When I showed up at Cursor&#8217;s office, they were having some Postgres problems. I asked, &#8216;do you guys have </span><a href="https://pganalyze.com/"><span>pganalyze</span></a><span>?&#8217; And they didn&#8217;t, so I was like, &#8216;Okay, let&#8217;s get that going. Let&#8217;s look at it. &#8220;</span></p><p><span>And the problem was the same thing as it always is with Postgres: </span><a href="https://www.postgresql.org/docs/current/runtime-config-vacuum.html"><span>autovacuum</span></a><span> hadn&#8217;t run enough. And so they had all of these going to </span><a href="https://medium.com/@Amir_M4A/how-postgresql-stores-data-heaps-blocks-and-ctids-explained-f66d052cf87d"><span>heap</span></a><span>, when they should be doing index scans, etc. So, we were talking about all of that.</span></p><p><strong><span>I was just helping them: my &#8220;database genes&#8221; just kicked in.</span></strong><span> I think this built enough trust with them to believe that if I know enough to help them with their database, maybe I also know how to build one.&#8221;</span></p></blockquote><p><span>It was around when turbopuffer&#8217;s other cofounder, </span><a href="https://justine.li/"><span>Justine Li</span></a><span>, joined that the work with Cursor kicked off. Simon describes Justine as the best engineer he ever worked with at Shopify, and together, they made more performance optimizations. Cursor migrated their local code-base search over to this brand new product.</span></p><p><strong><span>Simon promised to reduce Cursor&#8217;s bill by 95%, and delivered &#8211; thanks to napkin math! </span></strong><span>Cursor was spending around $80K/month on indexing and search; with turbopuffer in place, this dropped to $4K/month. Simon was confident about making this prediction thanks to napkin math! He did the calculations based on the fundamentals; only counting resource usage that Cursor was using, and not taking a margin for turbopuffer&#8217;s operating cost at the time.</span></p><h2><span>6. Reasons to raise venture capital</span></h2><p><span>After securing Cursor as the first customer, Simon was not convinced that turbopuffer should raise VC money. He explained his thinking:</span></p><blockquote><p><span>&#8220;</span><strong><span>I understood that if you take venture capital, no matter how many smiles there are in the room, everyone&#8217;s expecting to earn a big return </span></strong><span>on some timeline that makes sense to everyone involved. And &#8216;everyone involved&#8217; are pension funds in Canada.</span></p><p><span>But at the time, I did not know if turbopuffer could be a billion dollar company. It felt like a very niche kind of search engine. And that was completely fine with me!</span></p><p><span>So, I just looked at what we invoiced and I looked at my GCP bill. And I was making this equation that:<br><br>Customer </span><em><span>Invoices &gt;= GCP bill [the turbopuffer costs]</span></em><span><br><br>Justine and I were going to optimize the system until these numbers were roughly equal. And if we could get some other workloads over to turbopuffer, we could then start paying ourselves.</span></p><p><span>But either way, I didn&#8217;t know if I could even go and raise a bunch of money. I didn&#8217;t have any relationships. I was an outsider who grew up in Aarhus, Denmark, and moved to Canada.&#8221;</span></p></blockquote><p><span>A few months later, turbopuffer ended up raising a total of $700K, just to be able to hire two engineers until the end of the year on </span><em><span>real</span></em><span> salaries. Simon found that most VCs did not take them seriously for wanting to raise </span><em><span>too little money, </span></em><span>and assumed this signified a lack of ambition! Two years later, with less than $1M in initial funding raised, turbopuffer crossed $100M in annual run rate. So, there evidently was ambition!</span></p><p><span>Since our conversation, Simon has reflected on the topic of VC capital and built a mental model of six reasons that justify raising external funding:</span></p><p><strong><span>Reason #1: Research and development. </span></strong><span>This is what turbopuffer raised for: they needed the money to hire two more engineers until the end of the year, in order to build out more of the platform. Then, they would either get more customers and generate enough revenue to not need funding, or shut down the project if it failed to gain traction.</span></p><p><strong><span>Reason #2: Growth. </span></strong><span>When you&#8217;ve built something and want to tell the world about it, often, you have to spend money on doing that.</span></p><p><strong><span>Reason #3: Massaging founders&#8217; egos. </span></strong><span>Simon:</span></p><blockquote><p><span>&#8220;This is a very, very popular reason! You see big numbers, you get lots of press. But I think it&#8217;s a really dangerous reason to raise money.</span></p><p><span>I wish this reason was talked about more, because you are diluting all of your employees when you do it. And for some people, it can become a status game. It&#8217;s not what we are about: we&#8217;re here to build a big business together.&#8221;</span></p></blockquote><p><strong><span>Reason #4: Employee rewards. </span></strong><span>A startup is a long journey, and everyone wants to work with the best people. But there are necessarily few of these folks, so you want to reward the standout ones by raising money so that employees can sell their shares. This was why, in December 2025, turbopuffer raised a round where they let employees sell some of their equity: it meant they would not have to wait for a future financial event like an IPO.</span></p><p><strong><span>Reason #5: Strategic partnerships. </span></strong><span>It might be the case that raising from a VC whose network of connections is key to your business succeeding, or that taking funding from a strategic investor gives you access to their platform or services.</span></p><p><strong><span>Reason #6: Mergers &amp; acquisitions (M&amp;A).</span></strong><span> Purchase another company with the funding in order to expand the business.</span></p><p><span>Simon encourages founders to be honest about why they raise capital funding &#8211; and to watch out if the reason is egocentric!</span></p><h2><span>Takeaways</span></h2><p><span>Watch </span><a href="https://www.youtube.com/watch?v=h8TBLKyo7Rs"><span>the full interview here</span></a><span>.</span></p><p><strong><span>It&#8217;s inspiring to see how far it&#8217;s possible to get with &#8220;napkin math&#8221; and by understanding the bottom layers. </span></strong><span>It didn&#8217;t sit right with Simon to make decisions about vendors based on hastily written benchmarks that might measure the wrong thing. By understanding the constraints of data transfer latency and storage cost, he found a way to estimate the theoretical lower bounds of the system.</span></p><p><span>This helped lead to more informed design decisions at Shopify, and showed him there was an opportunity to build a faster, cheaper search product than the status quo.</span></p><p><strong><span>Getting &#8220;lucky&#8221; in business requires a lot of skill, and in-person greatly helps with first impressions. </span></strong><span>Turbopuffer&#8217;s first customer being Cursor sounds almost too good to be true. But the account from </span><a href="https://newsletter.pragmaticengineer.com/i/165641889/sharding-headaches"><span>Cursor cofounder Sualeh Asif</span></a><span> &#8211; and now from Simon &#8211; reveals the ingredients in more detail:</span></p><ul><li><p><span>Spotting a new business need: AI-native startups like Cursor saw their search bills explode, but needed search functionality to offer usable AI products</span></p></li><li><p><span>Offering a product with a magnitude of lower pricing: what people made suddenly pay attention to turbopuffer was the promise of not &#8220;just 20-50%&#8221; cost savings, but a seemingly radical, 90%+ reduction in costs. When you&#8217;re late to enter a market (like search), you need major differentiation, then deliver on it! This is also what Cursor&#8217;s attention.</span></p></li><li><p><span>Building trust before a sale: Simon helped the Cursor team fix their existing database before discussing using his product</span></p></li><li><p><span>In-person impressions: if Simon had not flown to San Francisco to meet the Cursor team in person, would they have taken a bet on turbopuffer?</span></p></li><li><p><span>Launching at the earliest opportunity: none of this would have happened if Simon did not announce the first version of the product when he knew it could work, but was still in a pretty unpolished state!</span></p></li></ul><p><strong><span>It&#8217;s always helpful to be aware of the dynamic of venture funding &#8211; some of which are rarely mentioned. </span></strong><span>Simon knew investors expect returns and growth on timelines which they set. Raising money is helpful in many situations, but problems arise from egotistical reasoning, and Simon believes too many founders prioritize them &#8211; knowingly or not.</span></p>]]></content:encoded></item><item><title><![CDATA[The Pulse: Grok’s CLI caught uploading all your local files to the cloud]]></title><description><![CDATA[Also: engineering leaders concerned about continued increase in code review load, devs at enterprises surprised by high enterprise pricing, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-groks-cli-caught-uploading</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-groks-cli-caught-uploading</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 16 Jul 2026 16:48:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8VV3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1de119-a4fd-4a85-b20a-bdc73c9db948_1182x842.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</span></em></p><p><span>Today, we cover:</span></p><ol><li><p><strong><span>Grok&#8217;s CLI uploaded all your local files to the cloud, then got caught</span></strong><span>. Just as devs were starting to use the Grok CLI &#8211; thanks to the capable Grok 4.5 coding model &#8211; they discover&#8230;</span></p></li></ol>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-groks-cli-caught-uploading">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Context engineering with Dex Horthy]]></title><description><![CDATA[Dex Horthy explains why context engineering is key to building more effective AI-assisted software without sacrificing code quality.]]></description><link>https://newsletter.pragmaticengineer.com/p/context-engineering-with-dex-horthy</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/context-engineering-with-dex-horthy</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 15 Jul 2026 16:08:59 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/207002724/0bb29b0934f66d3ca98d4e9fac8d6b49.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/Usufn8IQJgw">YouTube</a>, <a href="https://open.spotify.com/episode/7ahjKC1ft3RrJA8SvsilfC">Spotify</a></strong>, <strong>and <a href="https://podcasts.apple.com/us/podcast/the-pragmatic-engineer/id1769051199">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HVBB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HVBB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png 424w, https://substackcdn.com/image/fetch/$s_!HVBB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png 848w, https://substackcdn.com/image/fetch/$s_!HVBB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png 1272w, https://substackcdn.com/image/fetch/$s_!HVBB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HVBB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png" width="1456" height="127" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:127,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HVBB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png 424w, https://substackcdn.com/image/fetch/$s_!HVBB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png 848w, https://substackcdn.com/image/fetch/$s_!HVBB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png 1272w, https://substackcdn.com/image/fetch/$s_!HVBB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9e89e3-866b-4248-91a9-e6461be25cd8_1497x131.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><strong><span>&#8226; </span><a href="https://antithesis.com/pragmatic"><span>Antithesis</span></a> </strong>&#8212; with Antithesis, you can use AI agents to work on critical systems without worrying about correctness. Going far beyond code review, you can run your complete system in a hostile environment, analyze its behavior, and reproduce every issue perfectly. Teams like Jane Street, <a href="http://fly.io"><span>Fly.io</span></a>, and the etcd community use Antithesis to ship better code, faster. <a href="https://antithesis.com/pragmatic"><span>Learn more.</span></a></p><p><strong>&#8226; <a href="https://buildkite.com/pragmatic">Buildkite</a></strong> &#8212;<strong> </strong><span>the CI platform trusted by OpenAI, Anthropic, Cursor, Meta, Uber, Ramp, Nvidia, Airbnb and many more. Buildkite was stress-tested at the largest scale inside companies solving some of the hardest engineering problems. It&#8217;s built to reliably manage whatever your coding agents throw at the build queue, today, next year and beyond. </span><a href="https://buildkite.com/pragmatic"><span>Learn more.</span></a></p><p><strong><span>&#8226; </span><a href="http://sentry.io/pragmatic"><span>Sentry</span></a></strong><span> &#8211; application monitoring software built by developers, for developers. Sentry&#8217;s </span><a href="https://sentry.io/lp/seer/utm_source=pragmatic&amp;utm_medium=paid-community&amp;utm_campaign=ai-fy27q1-seerlaunch&amp;utm_content=recording-coreread-freetrial&amp;code=pragmatic"><span>Seer AI agent</span></a><span> is one of their new, neat tools, as a way to debug errors faster. Same with Sentry&#8217;s MCP server. </span><a href="http://sentry.io/pragmatic"><span>Check out Sentry</span></a><span>.</span></p><h3><strong>In this episode</strong></h3><p><span>Knowing how LLM contexts work and how to work around context limitations &#8211; aka &#8220;context engineering&#8221; &#8211; is becoming more important for software engineers working with LLMs. Let&#8217;s look into what works and what doesn&#8217;t, today.</span></p><p><span>In this episode of The Pragmatic Engineer podcast, I sit down with the CEO and cofounder of HumanLayer, Dex Horthy, who coined the term &#8220;context engineering&#8221;. We discuss the ideas behind this context engineering, harness engineering, loop engineering, software factories, why his approach to AI-assisted software development has evolved, and how </span><a href="https://www.humanlayer.dev/"><span>HumanLayer</span></a><span> is helping engineering teams automate more of the software development lifecycle without sacrificing code quality.</span></p><h3>Key observations from Dex</h3><p>Here are 12 useful points Dex made in our conversation:</p><div id="youtube2-Usufn8IQJgw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Usufn8IQJgw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Usufn8IQJgw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong><span>1. Dex talked with ~100 &#8220;real&#8221; AI Engineers and wrote the popular &#8216;</span><a href="https://github.com/humanlayer/12-factor-agents"><span>12-Factor Agents - Principles for building reliable LLM applications</span></a></strong><span>&#8217; based on what he learned. Around August 2024, he started to build AI agents when the common approach was to use frameworks like LangChain and CrewAI, and also talked with around 100 AI engineers doing tangible work such as taking on $100K+ contracts to ship AI solutions within enterprises. They tried those frameworks and discarded them in favor of building their own pipelines. Dex shared the learnings from the conversations in his hit book, </span><a href="https://github.com/humanlayer/12-factor-agents"><span>12-Factor Agents</span></a><span>. </span><em><span>It&#8217;s a great read!</span></em></p><p><strong><span>2. Lesson learned: Shipping unread code spells disaster within months. </span></strong><span>Dex experimented with having the model write the code and humans not reviewing anything in July 2025. Four months later, they shut things down and threw the whole system out. Production broke, and no matter how much the team prompted Opus 4.1, the model could not find the root cause.</span></p><p><span>It took days of wading through spaghetti code to discover the primary key wrongly routed through the complete codebase. Once fixed, it took three weeks to re-onboard to a codebase no human had ever read. Today, Dex thinks this problem wouldn&#8217;t even take four months to develop, now that newer models produce code a </span><em><span>lot</span></em><span> faster than a year ago.</span></p><p><strong><span>3. Today&#8217;s coding models are most likely trained in a way that makes codebases </span></strong><em><strong><span>worse</span></strong></em><strong><span> over time. </span></strong><span>Dex believes that the reason we see LLMs &#8220;degrade&#8221; existing codebases is because they are optimized to do well on SWE-bench-style benchmarks. These benchmarks reward reproducing a known fix in codebases like Django, but cannot measure poor architecture decisions. This is because the cost function of bad architecture and bad program design cannot be evaluated by running a unit test.</span><strong><span> </span></strong><span>It&#8217;s a tricky problem to solve: Dex&#8217;s best guess is an eval of a model building 20 features in a row in a codebase without knowing what&#8217;s coming next.</span></p><p><strong><span>4. Context engineering 101: figure out where the &#8220;dumb zone&#8221; begins. </span></strong><span>As a rule of thumb, the less of the context window that is used, the better the outcomes are. This is because the attention mechanism </span><a href="https://newsletter.pragmaticengineer.com/i/141865286/scalability-challenge-from-self-attention"><span>is quadratic</span></a><span>: the more that goes into the context window, the more compute is required to process it all. </span><em><span>We cover more about self-attention scalability challenges </span><a href="https://newsletter.pragmaticengineer.com/i/141865286/scalability-challenge-from-self-attention"><span>in our ChatGPT deepdive</span></a><span>.</span></em></p><p><span>For a model with a 1M context window, Dex pushes it to around 300-400K when it feels right. For smaller models, he stops at around 100K. You hit the &#8220;dumb zone&#8221; when its performance starts to degrade because the context window fills up beyond this heuristic limit, and the model begins doing increasingly stupid things like deleting your .env file, for example.</span></p><p><strong><span>5. A larger context window does not mean a smarter model. </span></strong><span>Models&#8217; intelligence is behind the ability to use the tokens in the context window, by deciding which parts of the context are relevant for the next decision. You have to get a feel for how much context usage makes sense, and experiment when you hit the &#8220;dumb zone.&#8221;</span></p><p><strong><span>6. Frequent, intentional compaction is a technique Dex uses for more complex projects. </span></strong><span>He will take a long and noisy context, compress it into a Markdown document, then start a new session fresh, pointing the model to this &#8220;compressed context&#8221; that is in the Markdown.</span></p><p><span>A workflow he uses:</span></p><ul><li><p><span>One session reads a ton of code (filling up its context window while in the &#8220;smart zone&#8221;), then emits a research document</span></p></li><li><p><span>The next session takes tickets describing the work to be done and turns it into a design document</span></p></li><li><p><span>The following session takes both documents to create a plan</span></p></li><li><p><span>The human is in the loop where it </span><em><span>really</span></em><span> matters: in this case, reviewing the design document and architecture because Dex finds models to be weak on this</span></p></li></ul><p><strong><span>7. Don&#8217;t bother optimizing LLM usage until business is booming, there&#8217;s massive scale, or high costs. </span></strong><span>Dex suggests to always start building software with the smartest available model to solve the problem, since engineering time is almost always the bottleneck. Begin to optimize LLM usage and context usage only when at real scale and costs are high enough. That&#8217;s when it can be worth using GPT-OSS-120B (1/1,000th the cost of Opus) for the simpler steps in your process.</span></p><p><strong><span>8. &#8220;You&#8217;re completely right!&#8221; or &#8220;you&#8217;re right to push back on that&#8221; are phrases that mean it&#8217;s time to start a new session. </span></strong><span>These responses mean the LLM session is trajectory-poisoned, and you&#8217;re wasting time and tokens to continue. Models are </span><a href="https://en.wikipedia.org/wiki/Autoregressive_model"><span>autoregressive</span></a><span>, so if you get into this loop of:</span></p><ul><li><p><span>Model makes a mistake</span></p></li><li><p><span>&#8594; user &#8220;yells&#8221;</span></p></li><li><p><span>&#8594; model keeps making mistakes</span></p></li><li><p><span>&#8594; user &#8220;yells&#8221;</span></p></li><li><p><span>&#8230; the model calculates that the next most probable message is to make another mistake!</span></p></li></ul><p><strong><span>9. Only four things matter in the context window:</span></strong></p><ul><li><p><strong><span>Size</span></strong><span>: the bigger it is, the more space you should have before hitting the &#8220;dumb zone&#8221;</span></p></li><li><p><strong><span>Information quality</span></strong><span>. Once something is in the context window, every subsequent turn treats it as fact. This is why errors can compound.</span></p></li><li><p><strong><span>Missing information</span></strong><span>: if there&#8217;s information missing that the agent would need, the outcome will be worse, as the agent fills in the gap with guesses.</span></p></li><li><p><strong><span>Trajectory. </span></strong><span>Models are autoregressive, so they predict the next message in the conversation based on previous ones in a kind of thread of reasoning. &#8220;Trajectory poisoning&#8221; is when the agent gets into a pattern of doing things you don&#8217;t want. In this case, it&#8217;s time to start over.</span></p></li></ul><p><strong><span>10. Slow loops are Dex&#8217;s favorite way to do &#8216;loop engineering.&#8217; </span></strong><span>The HumanLayer team started with a nightly automation setup that kicks off an agent to fix one thing in the codebase, and open a pull request. In the mornings, they woke up to a PR waiting to be merged. They tweaked it over time and now have four agents open a total of four PRs by the morning, with the focus on code quality improvements. A person still reads all of them before merging.</span></p><p><strong><span>11. &#8220;Token harder&#8221; vs. &#8220;token smarter&#8221;:</span></strong><span> Dex is in a group chat named &#8216;Hyper Engineering&#8217;, where members share advice on how to max out their Claude subscriptions. This approach, he calls &#8220;token harder&#8221;. On the other side is &#8220;token smarter&#8221;: aiming to get maximum value from AI while keeping control. Smarter is harder to pull off.</span></p><p><strong><span>12. Three ways to run a &#8220;software factory.&#8221; </span></strong><span>Here&#8217;s options Dex sees as viable:</span></p><ol><li><p><strong><span>&#8220;Turn the lights off:</span></strong><span>&#8221; go all-in on agentic coding, do not review the code, and pray that AI doesn&#8217;t create too much slop. </span><em><span>Dex tried this and failed.</span></em></p></li><li><p><strong><span>Read and review all AI-generated code. </span></strong><span>This slows things down to human speed. Dex says that this way, you should expect a 30-50% lift in productivity from AI, compared to pre-AI engineering.</span></p></li><li><p><strong><span>Find leverage, but keep people in the loop. </span></strong><span>Find out where an hour spent in planning could save four hours&#8217; worth of implementation, in terms of fewer bugs. Invest more time in areas with leverage: design, architecture, and key decisions. Then, let the agent generate code and don&#8217;t insist on reviewing all of it. In this way, Dex believes you can move 2-3x faster than when devs wrote all code by hand.</span></p></li></ol><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development"><span>How Uber uses AI for development: inside look</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/are-ai-agents-actually-slowing-us"><span>Are AI agents actually slowing us down?</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026"><span>AI Tooling for Software Engineers in 2026</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/vibe-coding-as-a-software-engineer"><span>Vibe Coding as a software engineer</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built"><span>How Claude Code is built</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/ai-engineering-in-the-real-world"><span>AI Engineering in the real world</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/the-ai-engineering-stack"><span>The AI Engineering Stack</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/how-ai-will-change-software-engineering"><span>How AI-assisted coding will change software engineering: hard truths</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/the-creator-of-clawd-i-ship-code"><span>The creator of OpenClaw: &#8220;I ship code I don&#8217;t read&#8221;</span></a></p><h3><strong>Timestamps</strong></h3><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw">00:00</a> Intro</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=215s">03:35</a> Dex&#8217;s path into tech</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=336s">05:36</a> Early work in platform engineering</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=450s">07:30</a> Replicated</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=806s">13:26</a> Metalytics</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=878s">14:38</a> 12-factor agents</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=1229s">20:29</a> Context engineering</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=1540s">25:40</a> Harness engineering</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=1693s">28:13</a> Context overload</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=1967s">32:47</a> Loop engineering</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=2796s">46:36</a> Software factories before and after AI</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=3155s">52:35</a> Automation limits</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=3440s">57:20</a> Three options for automating</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=3662s">1:01:02</a> RPI framework</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=3978s">1:06:18</a> Intentional compaction</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=4430s">1:13:50</a> Token harder vs. token smarter</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=4726s">1:18:46</a> AI slop</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=4877s">1:21:17</a> HumanLayer</p><p><a href="https://www.youtube.com/watch?v=Usufn8IQJgw&amp;t=5471s">1:31:11</a> Book recommendation</p><h3><strong>References</strong></h3><p><strong><span>Where to find Dex Horthy:</span></strong></p><p><span>&#8226; X: </span><a href="https://x.com/dexhorthy"><span>https://x.com/dexhorthy</span></a></p><p><span>&#8226; LinkedIn: </span><a href="http://linkedin.com/in/dexterihorthy"><span>linkedin.com/in/dexterihorthy</span></a></p><p><span>&#8226; Website: </span><a href="https://www.humanlayer.dev">https://www.humanlayer.dev</a></p><p><strong>Mentions during the episode:</strong></p><p><span>&#8226; HumanLayer: </span><a href="https://www.humanlayer.dev">https://www.humanlayer.dev</a></p><p><span>&#8226; Jet Propulsion Laboratory (JPL): </span><a href="https://www.jpl.nasa.gov">https://www.jpl.nasa.gov</a></p><p><span>&#8226; Dykstra&#8217;s projection algorithm: </span><a href="https://en.wikipedia.org/wiki/Dykstra's_projection_algorithm"><span>https://en.wikipedia.org/wiki/Dykstra&#8217;s_projection_algorithm</span></a></p><p><span>&#8226; Replicated: </span><a href="https://www.replicated.com">https://www.replicated.com</a></p><p><span>&#8226; Docker: </span><a href="https://www.docker.com">https://www.docker.com</a></p><p><span>&#8226; HashiCorp: </span><a href="https://www.hashicorp.com">https://www.hashicorp.com</a></p><p><span>&#8226; DataStax: </span><a href="https://www.ibm.com/products/datastax"><span>https://www.ibm.com/products/datastax</span></a></p><p><span>&#8226; Puppet: </span><a href="https://www.puppet.com">https://www.puppet.com</a></p><p><span>&#8226; Travis CI: </span><a href="https://www.travis-ci.com">https://www.travis-ci.com</a></p><p><span>&#8226; Circle CI: </span><a href="https://circleci.com">https://circleci.com</a></p><p><span>&#8226; Randy Newman&#8217;s website: </span><a href="https://www.randynewman.com">https://www.randynewman.com</a></p><p><span>&#8226; 12-Factor Agents - Principles for building reliable LLM applications: </span><a href="https://github.com/humanlayer/12-factor-agents"><span>https://github.com/humanlayer/12-factor-agents</span></a></p><p><span>&#8226; The creator of Clawd: &#8220;I ship code I don&#8217;t read&#8221;: </span><a href="https://newsletter.pragmaticengineer.com/p/the-creator-of-clawd-i-ship-code"><span>https://newsletter.pragmaticengineer.com/p/the-creator-of-clawd-i-ship-code</span></a></p><p><span>&#8226; Vaibhav Gupta on LinkedIn: </span><a href="https://www.linkedin.com/in/vaigup"><span>https://www.linkedin.com/in/vaigup</span></a></p><p><span>&#8226; Tobi Lutke&#8217;s post on X about context engineering: </span></p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/tobi/status/1935533422589399127&quot;,&quot;full_text&quot;:&quot;I really like the term &#8220;context engineering&#8221; over prompt engineering. \n\nIt describes the core skill better: the art of providing all the context for the task to be plausibly solvable by the LLM.&quot;,&quot;username&quot;:&quot;tobi&quot;,&quot;name&quot;:&quot;tobi lutke&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1999293930936909824/_HWYanot_normal.jpg&quot;,&quot;date&quot;:&quot;2025-06-19T03:01:43.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:347,&quot;retweet_count&quot;:879,&quot;like_count&quot;:8587,&quot;impression_count&quot;:2073181,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><span>&#8226; Andrej Karpathy&#8217;s post on X about context engineering: </span></p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/karpathy/status/1937902205765607626&quot;,&quot;full_text&quot;:&quot;+1 for \&quot;context engineering\&quot; over \&quot;prompt engineering\&quot;.\n\nPeople associate prompts with short task descriptions you'd give an LLM in your day-to-day use. When in every industrial-strength LLM app, context engineering is the delicate art and science of filling the context window&quot;,&quot;username&quot;:&quot;karpathy&quot;,&quot;name&quot;:&quot;Andrej Karpathy&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1296667294148382721/9Pr6XrPB_normal.jpg&quot;,&quot;date&quot;:&quot;2025-06-25T15:54:24.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{&quot;full_text&quot;:&quot;I really like the term &#8220;context engineering&#8221; over prompt engineering. \n\nIt describes the core skill better: the art of providing all the context for the task to be plausibly solvable by the LLM.&quot;,&quot;username&quot;:&quot;tobi&quot;,&quot;name&quot;:&quot;tobi lutke&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1999293930936909824/_HWYanot_normal.jpg&quot;},&quot;reply_count&quot;:532,&quot;retweet_count&quot;:2047,&quot;like_count&quot;:14331,&quot;impression_count&quot;:2383641,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><span>&#8226; Improving Deep Agents with harness engineering: </span><a href="https://www.langchain.com/blog/improving-deep-agents-with-harness-engineering"><span>https://www.langchain.com/blog/improving-deep-agents-with-harness-engineering</span></a></p><p><span>&#8226; # Skill Issue: Harness Engineering for Coding Agents: </span><a href="https://www.humanlayer.dev/blog/skill-issue-harness-engineering-for-coding-agents"><span>https://www.humanlayer.dev/blog/skill-issue-harness-engineering-for-coding-agents</span></a></p><p><span>&#8226; Harness engineering for coding agent users: </span><a href="https://martinfowler.com/articles/harness-engineering.html"><span>https://martinfowler.com/articles/harness-engineering.html</span></a></p><p><span>&#8226; How AI will change software engineering &#8211; with Martin Fowler: </span><a href="https://newsletter.pragmaticengineer.com/p/martin-fowler"><span>https://newsletter.pragmaticengineer.com/p/martin-fowler</span></a></p><p><span>&#8226; Dex&#8217;s post on X about context reality check: </span></p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/dexhorthy/status/2032198500063330703&quot;,&quot;full_text&quot;:&quot;don't make me tap the sign&quot;,&quot;username&quot;:&quot;dexhorthy&quot;,&quot;name&quot;:&quot;dex&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1936650128518938624/tCFV_MZO_normal.jpg&quot;,&quot;date&quot;:&quot;2026-03-12T20:54:13.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/HDPRw74bQAMTATJ.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/9YgllxAY0I&quot;}],&quot;quoted_tweet&quot;:{&quot;full_text&quot;:&quot;Giving sonnet 4 a 1m context window is kinda unhinged considering I see many folks struggle to keep it on task past 100k&quot;,&quot;username&quot;:&quot;dexhorthy&quot;,&quot;name&quot;:&quot;dex&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1936650128518938624/tCFV_MZO_normal.jpg&quot;},&quot;reply_count&quot;:21,&quot;retweet_count&quot;:25,&quot;like_count&quot;:700,&quot;impression_count&quot;:122933,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><span>&#8226; Laurie Voss on LinkedIn: </span><a href="https://www.linkedin.com/in/seldo"><span>https://www.linkedin.com/in/seldo</span></a></p><p><span>&#8226; Everything is a ralph loop: </span><a href="https://ghuntley.com/loop"><span>https://ghuntley.com/loop</span></a></p><p><span>&#8226; Dex&#8217;s post on X about feedback loops: </span></p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/dexhorthy/status/2031394747869192431&quot;,&quot;full_text&quot;:&quot;Here&#8217;s what&#8217;s gonna happen:\n\n- you replace your code review with feedback loops (sentry, datadog, support tickets, etc)\n- you stop reading the code\n- software factory fixes everything\n- one day something breaks at 3am, agent can&#8217;t fix it\n- nobody&#8217;s read the code in 3 months\n- you&quot;,&quot;username&quot;:&quot;dexhorthy&quot;,&quot;name&quot;:&quot;dex&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1936650128518938624/tCFV_MZO_normal.jpg&quot;,&quot;date&quot;:&quot;2026-03-10T15:40:24.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{&quot;full_text&quot;:&quot;@gregpr07 this may surprise you that thus is coming from me but I think we&#8217;re in for a 1-3 year period where stuff might break at 3am and if you&#8217;re relying on loops to fix it and nobody understands what&#8217;s under the hood, you&#8217;re looking at an existential threat to your company&quot;,&quot;username&quot;:&quot;dexhorthy&quot;,&quot;name&quot;:&quot;dex&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1936650128518938624/tCFV_MZO_normal.jpg&quot;},&quot;reply_count&quot;:254,&quot;retweet_count&quot;:551,&quot;like_count&quot;:6810,&quot;impression_count&quot;:629403,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><span>&#8226; Dex&#8217;s post on X about token harder vs. token smarter: </span></p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/dexhorthy/status/2038101619720781941&quot;,&quot;full_text&quot;:&quot;noticing the ai coding meta is starting to shift in some circles from &#8220;token harder&#8221; to &#8220;token smarter&#8221;\n\nIn August the mandate felt like &#8220;figure out how to spend lots of tokens, you are being held back by your inability to spend tokens&#8221; - Ralph wiggum, RPI, worktree tools like&quot;,&quot;username&quot;:&quot;dexhorthy&quot;,&quot;name&quot;:&quot;dex&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1936650128518938624/tCFV_MZO_normal.jpg&quot;,&quot;date&quot;:&quot;2026-03-29T03:51:06.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:21,&quot;retweet_count&quot;:7,&quot;like_count&quot;:161,&quot;impression_count&quot;:15050,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><span>&#8226; Dex&#8217;s post on X about AI slop: </span></p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/dexhorthy/status/2068004719298228236&quot;,&quot;full_text&quot;:&quot;STOP WRITING YOUR SPECS BY HAND\n\nyeah, ai can write your code, but it can also write your specs and PRDs\n\nbut the same rule as always: slop in &#8594; slop out\n\nif you outsource the thinking, you&#8217;re gonna get garbage\n\nlucky you, me and <span class=\&quot;tweet-fake-link\&quot;>@vaibcode</span> went deep on some powerful techniques &quot;,&quot;username&quot;:&quot;dexhorthy&quot;,&quot;name&quot;:&quot;dex&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1936650128518938624/tCFV_MZO_normal.jpg&quot;,&quot;date&quot;:&quot;2026-06-19T16:15:21.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!rboi!,w_1028,c_limit,f_auto,q_auto:best,fl_progressive:steep/l_play_button_usfui2,w_88,e_colorize:0/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F__ss-rehost__tw-video-preview-13_2068004228052996096.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/zFH49qX5My&quot;}],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:7,&quot;retweet_count&quot;:5,&quot;like_count&quot;:145,&quot;impression_count&quot;:9191,&quot;expanded_url&quot;:null,&quot;video_url&quot;:&quot;https://video.twimg.com/amplify_video/2068004228052996096/vid/avc1/720x1280/h8YPoPXs2S0oMEBY.mp4&quot;,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><span>&#8226; GitHub: </span><a href="https://github.com">https://github.com</a></p><p><span>&#8226; Paul Graham, Live from Stockholm: </span><a href="https://www.ycombinator.com/library/Q7-paul-graham-live-from-stockholm"><span>https://www.ycombinator.com/library/Q7-paul-graham-live-from-stockholm</span></a></p><p><span>&#8226; </span><em><span>Refactoring: Improving the Design of Existing Code</span></em><span>: </span><a href="https://www.amazon.com/dp/0134757599"><span>https://www.amazon.com/dp/0134757599</span></a></p><p><span>&#8226; </span><em><span>Clean Code: A Handbook of Agile Software Craftsmanship</span></em><span>: </span><a href="https://www.amazon.com/dp/0132350882"><span>https://www.amazon.com/dp/0132350882</span></a></p><p><span>&#8226; </span><em><span>The Pragmatic Programmer: From Journeyman to Master</span></em><span>: </span><a href="https://www.amazon.com/dp/020161622X"><span>https://www.amazon.com/dp/020161622X</span></a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[What is “loop engineering?”]]></title><description><![CDATA[There&#8217;s talk about loop engineering, but what is it exactly? I looked into it, and found triggers, cron jobs, AI slop & more. Is it a &#8220;here today, gone tomorrow&#8221; trend?]]></description><link>https://newsletter.pragmaticengineer.com/p/what-is-loop-engineering</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/what-is-loop-engineering</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 14 Jul 2026 17:01:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CaGY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4f687c-ee1a-4bb9-89fe-148a7f8d07ca_2048x984.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>&#8220;Loop engineering&#8221; has become a trending topic in the past month, after some high-profile folks at Anthropic and OpenAI revealed that they have stopped writing prompts, and started designing loops. At Anthropic&#8217;s developer conference, Boris Cherny, creator of Claude Code, </span><a href="https://www.youtube.com/watch?v=kRgdkOw82F0"><span>said</span></a><span> (emphasis mine):</span></p><blockquote><p><span>&#8220;I don&#8217;t prompt Claude anymore. I have loops running that prompt Claude and figuring out what to do. </span><strong><span>My job is to write loops.</span></strong><span>&#8221;</span></p></blockquote><p><span>Soon after, Peter Steinberger, creator of OpenClaw, preached loop design in a post:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Vtc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Vtc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png 424w, https://substackcdn.com/image/fetch/$s_!8Vtc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png 848w, https://substackcdn.com/image/fetch/$s_!8Vtc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png 1272w, https://substackcdn.com/image/fetch/$s_!8Vtc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Vtc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png" width="1184" height="446" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:446,&quot;width&quot;:1184,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8Vtc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png 424w, https://substackcdn.com/image/fetch/$s_!8Vtc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png 848w, https://substackcdn.com/image/fetch/$s_!8Vtc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png 1272w, https://substackcdn.com/image/fetch/$s_!8Vtc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21939678-7d20-40e5-8b4f-90d61d78c111_1184x446.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Source: </span><a href="https://x.com/steipete/status/2063697162748260627?s=20"><span>Peter Steinberger</span></a></em></figcaption></figure></div><p><span>Elsewhere, Addy Osmani, formerly of Google, wrote </span><a href="https://addyosmani.com/blog/loop-engineering/"><span>an article</span></a><span>, &#8216;Loop Engineering&#8217;:</span></p><blockquote><p><span>&#8220;Loop engineering is replacing yourself as the person who prompts the agent. You design the system that does it instead.&#8221;</span></p></blockquote><p><span>That&#8217;s three mentions in quick succession of this new approach, which is a novel one and therefore pretty abstract to me. To find out more, I turned online to some of the folks who read these articles. In replies, you told me what &#8220;loop engineering&#8221; means to you and gave some examples of loops in your work.</span></p><p><span>Today, we cover:</span></p><ol><li><p><strong><span>Where it began: &#8220;Ralph Wiggum&#8221; loop.</span></strong><span> A year ago, software engineer Geoffrey Huntley shared how he builds &#8220;loops.&#8221; In December, the approach went viral and &#8220;Ralph loops&#8221; were born.</span></p></li><li><p><strong><span>The /goal command ships in all major harnesses.</span></strong><span> By May this year, the major AI coding harnesses added support to run a loop from a single prompt, using the /goal command.</span></p></li><li><p><strong><span>Loops which devs use: triggers and cron jobs.</span></strong><span> I asked devs how they use loops. Most use cases involve responding to events or running scheduled jobs. They are useful, but don&#8217;t feel like brand new workflows.</span></p></li><li><p><strong><span>Helpful loops for devs. </span></strong><span>Open PRs for newly-recorded app issues, have notes ready when an oncall joins an outage Slack channel, &#8220;babysitting&#8221; and fixing nightly end-to-end tests, and more.</span></p></li><li><p><strong><span>Disappointment and &#8220;tokenmaxxing&#8221;</span></strong><span>. Several devs reject looping after trying it. Agents drifting, and the &#8220;human in the loop&#8221; having better results are some reasons. Also, at companies that pay API prices for tokens, loop engineering gets expensive fast.</span></p></li><li><p><strong><span>Was looping a hack while tooling caught up?</span></strong><span> Distinguished engineer Max Kanat-Alexander believes the &#8220;loop&#8221; might have just been a temporary hack while the harnesses added the ability to do the same from a single prompt.</span></p></li><li><p><strong><span>Does &#8220;context engineering&#8221; matter more for devs? </span></strong><span>Except for engineers building AI infra, there seems little benefit in going deep into loop engineering. Instead, becoming familiar with AI context windows &#8211; also part of building loops &#8211; could be more useful.</span></p></li></ol><h2><span>1. Where it began: &#8220;Ralph Wiggum&#8221; loop</span></h2><p><span>Exactly a year ago, software engineer Geoffrey Huntley published the article &#8216;</span><a href="https://ghuntley.com/ralph/"><span>Ralph Wiggum as a software engineer</span></a><span>&#8217;. The name references the naive son of the local police chief in The Simpsons, who is extremely eager to always be helpful. In engineering, &#8220;Ralph&#8221; is intended to continuously nudge the agent in the right direction. Geoff described it:</span></p><blockquote><p><span>&#8220;Ralph is a technique. In its purest form, Ralph is a Bash loop:</span></p><p><span>while :; do cat PROMPT.md | claude-code ; done</span></p><p><span>Ralph can replace the majority of outsourcing at most companies for greenfield projects. It has defects, but these are identifiable and resolvable through various styles of prompts.</span></p><p><span>That&#8217;s the beauty of Ralph - the technique is deterministically bad in a nondeterministic world.&#8221;</span></p></blockquote><p><span>The article expands on the idea of the Ralph loop:</span></p><ul><li><p><span>Start the agent with a prompt that captures the task and defines a goal</span></p></li><li><p><span>Create a plan of work, each item with a success criteria</span></p></li><li><p><span>Start the loop:</span></p><ul><li><p><span>Take one item per loop</span></p></li><li><p><span>When the agent is done, check if the goal is achieved</span></p></li><li><p><span>If not: start the agent again, with a clear context window</span></p><ul><li><p><span>Start loops if needed: spawn subagents as and when necessary</span></p></li></ul></li></ul></li></ul><p><span>Geoff published the experiments he did with this approach, such as building a new programming language last summer, and </span><a href="https://ghuntley.com/ralph/"><span>said</span></a><span> it requires skill:</span></p><blockquote><p><span>&#8220;Engineers are still needed. There is no way this is possible without senior expertise guiding Ralph. Anyone claiming that engineers are no longer required and a tool can do 100% of the work without an engineer is peddling horses***.&#8221;</span></p></blockquote><p><strong><span>The &#8220;Ralph method&#8221; blew up late last year with the arrival of better models</span></strong><span> which were surprisingly capable of building ambitious projects. Software engineer Matt Pocock created a tutorial, &#8216;</span><a href="https://www.youtube.com/watch?v=_IK18goX4X8"><span>Ship working code while you sleep</span></a><span>&#8217; with the Ralph Wiggum technique. He said:</span></p><blockquote><p><span>&#8220;One of the dreams of coding agents is that you can wake up in the morning to working code, where your coding agent has worked through your backlog. It has spit out a whole bunch of code for you to review, and it works.&#8221;</span></p></blockquote><p><span>Before the Ralph loop, Matt did this in two steps:</span></p><ol><li><p><span>Ask the agent to create a detailed plan for the work, with tasks broken out</span></p></li><li><p><span>Then, in a sequential order, have the agent complete each subtask in a separate run</span></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lxQ_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lxQ_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png 424w, https://substackcdn.com/image/fetch/$s_!lxQ_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png 848w, https://substackcdn.com/image/fetch/$s_!lxQ_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png 1272w, https://substackcdn.com/image/fetch/$s_!lxQ_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lxQ_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png" width="1456" height="917" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:917,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lxQ_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png 424w, https://substackcdn.com/image/fetch/$s_!lxQ_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png 848w, https://substackcdn.com/image/fetch/$s_!lxQ_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png 1272w, https://substackcdn.com/image/fetch/$s_!lxQ_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16676ff4-459f-4f02-888a-20e305cd3f28_1746x1100.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Pre-Ralph: The agent completes one step at a time in a single context window. Source: </span><a href="https://www.youtube.com/watch?v=_IK18goX4X8"><span>Matt Pocock</span></a></em></figcaption></figure></div><p><span>A problem with this approach is there&#8217;s no easy way to add new tasks to the &#8220;masterplan&#8221;. Software engineers know that most plans do need to be modified, often while the work is ongoing. In contrast, with Matt&#8217;s take on the Ralph method, the &#8220;masterplan&#8221; is continuously updated in a &#8220;master PRD&#8221;. Here&#8217;s the prompt he gives the agent:</span></p><ol><li><p><strong><span>Choose the next feature: </span></strong><span>Find the highest-priority feature to work on and work only on that feature</span></p></li><li><p><strong><span>Have tests pass</span></strong><span>: check that the tests pass (via pnpm test)</span></p></li><li><p><strong><span>Update the master tracker</span></strong><span>: update the PRD with the work done</span></p></li><li><p><strong><span>Log work:</span></strong><span> append your progress to the progress.txt file</span></p></li><li><p><strong><span>Commit</span></strong><span>: make a git commit of the feature</span></p></li></ol><p><span>This style of working is more of a &#8220;dynamic Kanban&#8221;:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mNUz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mNUz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png 424w, https://substackcdn.com/image/fetch/$s_!mNUz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png 848w, https://substackcdn.com/image/fetch/$s_!mNUz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png 1272w, https://substackcdn.com/image/fetch/$s_!mNUz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mNUz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png" width="1456" height="803" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:803,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mNUz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png 424w, https://substackcdn.com/image/fetch/$s_!mNUz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png 848w, https://substackcdn.com/image/fetch/$s_!mNUz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png 1272w, https://substackcdn.com/image/fetch/$s_!mNUz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d6b5a98-88ca-46f6-935a-dae75b12bb29_1966x1084.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>&#8220;dynamic Kanban&#8221; style of working. Source: </span><a href="https://www.youtube.com/watch?v=_IK18goX4X8"><span>Matt Pocock</span></a></em></figcaption></figure></div><p><strong><span>The &#8220;Ralph method&#8221; is all about working around context window limitations. </span></strong><span>Back in mid-2025, the maximum size of a context window was around 200,000 tokens. That&#8217;s not enough for more ambitious tasks, so it&#8217;s necessary to break up agent runs into smaller ones and run them, one by one. In this context, here&#8217;s where the Ralph method works:</span></p><ul><li><p><span>Have a goal for a project, and keep running (or re-running) agents until this goal is reached</span></p></li><li><p><span>Persist work done in a &#8220;compressed&#8221; manner on the filesystem (as logs or an updated plan)</span></p></li><li><p><span>Start agents with fresh context to minimize &#8220;context rot&#8221;</span></p></li><li><p><span>Allow each agent to add or modify the &#8220;masterplan&#8221; if needed</span></p></li></ul><h2><span>2. The /goal command ships in all major harnesses</span></h2><p><span>For a few months, building a Ralph loop meant doing it yourself: setting up the loop, state tracking, deciding how the agent can add tasks and when to stop. But things changed once coding harnesses made it easy to run these loops.</span></p><h3><span>April: Codex ships /Goals</span></h3><p><span>About six months after the &#8220;Ralph technique&#8221; started gaining wider traction, Codex shipped the &#8220;Goals&#8221; feature in Codex. From </span><a href="https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex"><span>the documentation</span></a><span>:</span></p><blockquote><p><span>&#8220;Goals are persistent objectives in Codex that keep a thread working toward a defined outcome across turns. A Goal gives Codex a completion condition: what should be true, how success should be checked, and what constraints must stay intact.&#8221;</span></p></blockquote><p><span>Also from the docs (emphasis mine):</span></p><blockquote><p><strong><span>&#8220;A normal prompt says: do this next thing.</span></strong></p><p><strong><span>A Goal says: keep working until this outcome is true.</span></strong><span> In a normal request, Codex works through the immediate instruction, reports a result, and waits. With a Goal, Codex has a durable target attached to the thread. After a turn finishes, it can inspect the current evidence and decide whether the objective is satisfied. If the answer is no, and the Goal remains active and within budget, Codex can continue from the latest state.&#8221;</span></p></blockquote><p><span>A visual representation:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3NfP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3NfP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png 424w, https://substackcdn.com/image/fetch/$s_!3NfP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png 848w, https://substackcdn.com/image/fetch/$s_!3NfP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png 1272w, https://substackcdn.com/image/fetch/$s_!3NfP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3NfP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png" width="1456" height="808" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:808,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3NfP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png 424w, https://substackcdn.com/image/fetch/$s_!3NfP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png 848w, https://substackcdn.com/image/fetch/$s_!3NfP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png 1272w, https://substackcdn.com/image/fetch/$s_!3NfP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5c2e319-99df-4ac3-9ab7-130d1cc88014_1502x834.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Goals vs prompts. Source: </span><a href="https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex"><span>OpenAI</span></a></em></figcaption></figure></div><p><span>Here&#8217;s an example of using a goal in Codex:</span></p><blockquote><p><span>/goal Reduce p95 checkout latency below 120 ms on the checkout benchmark while keeping the correctness suite green</span></p></blockquote><p><span>That&#8217;s a clear enough &#8220;end criteria&#8221; to just hand off to the agent, which then breaks up the task, spawns subagents, and runs until complete. So, how did OpenAI build Goals? They used files, logs, running tests, and lifecycle controls:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4E67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4E67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png 424w, https://substackcdn.com/image/fetch/$s_!4E67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png 848w, https://substackcdn.com/image/fetch/$s_!4E67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png 1272w, https://substackcdn.com/image/fetch/$s_!4E67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4E67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png" width="1456" height="781" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:781,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4E67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png 424w, https://substackcdn.com/image/fetch/$s_!4E67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png 848w, https://substackcdn.com/image/fetch/$s_!4E67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png 1272w, https://substackcdn.com/image/fetch/$s_!4E67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecf81e8-9f56-45e4-9aed-a5ecd46ccfbe_1828x980.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>The architecture of the Goals feature. Source: </span><a href="https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex"><span>OpenAI</span></a></em></figcaption></figure></div><p><strong><span>In this way, &#8220;Goals&#8221; feels awfully similar to a Ralph loop, except compressed into a single command! </span></strong><span>It feels like the Codex team took the idea of the Ralph loop, built infrastructure around it, took care of coordinating agents by not having them step on one another, dealt with state, running of tests, starting and stopping agents, and then added functionality such as being able to set a budget.</span></p><h3><span>May: Hermes and Claude Code follow with /goal</span></h3><p><span>Three days later (May 2), Hermes agent, a popular AI agent framework and OpenClaw rival, </span><a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/goals"><span>shipped</span></a><span> their implementation of /goal. From the docs:</span></p><blockquote><p><span>&#8220;[/goal] It&#8217;s our take on the Ralph loop, directly inspired by Codex CLI 0.128.0&#8217;s /goal by Eric Traut (OpenAI). The core idea &#8212; keep a goal alive across turns and don&#8217;t stop until it&#8217;s achieved &#8212; is theirs. The implementation here is independent and adapted to Hermes&#8217; architecture.&#8221;</span></p></blockquote><p><span>Less than two weeks later &#8211; on 12 May &#8211; Claude Code also </span><a href="https://code.claude.com/docs/en/goal"><span>shipped</span></a><span> their /goal command. It&#8217;s identical in what it does to Codex. From Claude Code:</span></p><blockquote><p><span>&#8220;The /goal command sets a completion condition and Claude keeps working toward it without you prompting each step. After each turn, a small fast model checks whether the condition holds. If not, Claude starts another turn instead of returning control to you. The goal clears automatically once the condition is met.&#8221;</span></p></blockquote><p><span>A few months before, in March, Claude Code shipped the concept of scheduling an agent with the </span><a href="https://code.claude.com/docs/en/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop"><span>/loop command</span></a><span>. It is basically what JavaScript&#8217;s setTimeout() function would be equivalent to: repeat a task after a given interval until the work is done.</span></p><p><strong><span>By May, running a Ralph loop had become as simple as giving a single command in one of the major agent harnesses. </span></strong><span>It&#8217;s as if AI labs noticed user demand to do more with agentic loops which were hard to set up, and built ways to make it simpler. For instance, in open source agent harnesses like OpenCode, there are plugins like the </span><a href="https://github.com/willytop8/OpenCode-goal-plugin"><span>/goal plugin</span></a><span>. For the minimalist coding agent, Pi, the /goal command can be added </span><a href="https://github.com/Michaelliv/pi-goal"><span>as a package.</span></a></p><h2><span>3. Loops which devs use: triggers and cron jobs</span></h2><p><span>By May, we had access to the /goal primitive. So, what use cases were Boris Cherny and Peter Steinberger referring to in terms of spending most of their time on designing loops, instead of writing prompts? I asked around for examples of &#8220;loop engineering&#8221; from fellow devs. Based on ~210 replies, mostly from X and LinkedIn, it seems that triggers and cron jobs are two very common use cases for loop engineering:</span></p><p><strong><span>Triggers / automations</span></strong><span>: an agent kicks off when an event happens. The event could be an error being logged, a new ticket created, customer support feedback received, etc.</span></p><p><span>Pre-AI, these events were typically triggered by a webhook, and kicked off things like a Slack bot posting in a channel, triggering a system, or being the starting point of a Zapier or an </span><a href="https://n8n.io/"><span>n8n</span></a><span> integration.</span></p><p><strong><span>Cron jobs: </span></strong><span>many devs see &#8220;loop engineering&#8221; as kicking off jobs that involve agents on a cadence. This is fundamentally the same as scheduled </span><a href="https://en.wikipedia.org/wiki/Cron"><span>cron jobs</span></a><span>. From director of engineering, </span><a href="https://www.linkedin.com/in/odedmesser?skipRedirect=true"><span>Oded Messer</span></a><span>:</span></p><blockquote><p><span>&#8220;The idea is that strategic workflows that are repeatable and automatable can be done so with an agent. OK. But if my strategic workflow is automatable then it either becomes tactical if the AI is capable enough or it&#8217;s just a high level old-school-automation I can set up like a cron or a trigger.</span></p><p><span>The name suggests simplicity and repetition. Sometimes it feels like AI enthusiasts forgot automation was a thing before LLMs.&#8221;</span></p></blockquote><h2><span>4. Helpful loops for devs</span></h2><p><span>Below are some workflows with AI agents that run on a regular basis as a /loop command, or when triggered:</span></p><h3><span>Development-related work</span></h3><p><strong><span>Open PRs for newly recorded app issues. </span></strong><span>Software engineer </span><a href="https://x.com/thepanta82/status/2076616844761333792?s=20"><span>Ivan Panti&#263;</span></a><span>:</span></p><blockquote><p><span>&#8220;App encounters a problem and creates a sentry issue. Then:<br>&#8594; Cron tells agent to check sentry and open PRs.<br>&#8594;If there&#8217;s no active PR, agent tackles the issue and creates one<br>&#8594; If PRs aren&#8217;t reviewed, agent pings the devs via slack</span></p><p><span>In this flow, there is only one PR open at a time.&#8221;</span></p></blockquote><p><strong><span>Fix flakey tests. </span></strong><a href="https://www.linkedin.com/in/paul-d-ambra"><span>Paul D&#8217;Ambra</span></a><span>, software engineer at PostHog:</span></p><blockquote><p><span>&#8220;/loop pull the next flakey test from the trunk API. run it to check if it flakes locally, if it does open a PR with the fix... which netted me 13 PRs to stabilise some of our tests.&#8221;</span></p></blockquote><p><strong><span>Triaging issues and outages. </span></strong><span>Software engineer </span><a href="https://x.com/NetMentorTW/status/2076594605659762887?s=20"><span>Ivan Abad:</span></a></p><blockquote><p><span>&#8220;A new alert/exception pops up in a channel. <br>&#8594; The agent investigates the issue<br>&#8594; if it is a code change, implements the change<br>&#8594; creates the PR <br>&#8594; pings the human for review. <br><br>Same applies for customer tickets or incidents. By the time you get paged and connect to the incident the agent already triaged everything and often located the root cause.&#8221;</span></p></blockquote><p><strong><span>Review design plans. </span></strong><a href="https://x.com/artemnikitin/status/2076671832158011422?s=20"><span>Artem Nikitin</span></a><span>, software engineer at Elastic:</span></p><blockquote><p><span>&#8220;What I&#8217;m finding myself doing often recently is to review design/implementation plans in a loop.</span></p><p><span>Usually, agents only find a few issues during a normal run and then find more on subsequent runs.</span></p><p><span>So I&#8217;m now asking them to run in a loop until they find 0 new major issues.&#8221;</span></p></blockquote><h3><span>Daily/nightly work</span></h3><p><strong><span>Daily product improvements. </span></strong><a href="https://x.com/itsjack/status/2076601937038922085?s=20"><span>Jack D,</span></a><span> founding engineer at Schematic:</span></p><blockquote><p><span>&#8220;We have a loop which reads the logs for the last 24 hours, user feedback and makes PR with fixes - we still review the PRs it makes though!&#8221;</span></p></blockquote><p><strong><span>Nightly end-to-end test run babysitted by an agent. </span></strong><span>Utku K, engineering manager:</span></p><blockquote><p><span>&#8220;nightly e2e runs on the frontend app. When a test fails, an agent investigates first to work out whether it&#8217;s a real regression or a false negative. If it&#8217;s a real bug, the agent attempts a fix, reruns the test, and keeps iterating until it passes or hits a retry cap and escalates... Either way it lands as a PR ready for review by morning.&#8221;</span></p></blockquote><h3><span>More complex development work</span></h3><p><strong><span>Build new telemetry integrations and verify they work</span></strong><span>. </span><a href="https://www.linkedin.com/in/lawrence2jones"><span>Lawrence Jones</span></a><span>, software engineer at Incident.io:</span></p><blockquote><p><span>&#8220;A lot of the AI runbook that we use to build new telemetry integrations uses loops such as executing the query, verifying that it executed correctly and iterating on the query plan/output format/whatever until it is happy with the outcome.&#8221;</span></p></blockquote><p><strong><span>Do a long-running migration, mostly autonomously</span></strong><span>. Startup founder </span><a href="https://x.com/GroundControl/status/2076644702112117067?s=20"><span>Rafel Mendiola</span></a><span>:</span></p><blockquote><p><span>&#8220;Recently, I converted my startup&#8217;s codebase from a regular React app to a React Native app using Expo.</span></p><p><span>There are two ways I could have done it:</span></p></blockquote><ul><li><p><span>In the traditional software engineering style, I could have created a large epic with 50-100 different tickets. I started building myself the infrastructure for that, it felt like it was way too much work.</span></p></li><li><p><span>What I did instead was create a skill that would let an agent figure out a small to medium-sized piece of work or piece of code to convert, given certain detection mechanisms and guidelines, and then do that conversion and keep track of the migration progress. Then I put that skill on a cron job. This was a lot easier to handle cognitively than managing a large migration plan. It also ran every 30 minutes, not nightly or weekly.&#8221;</span></p></li></ul><h3><span>Productivity-related workflows</span></h3><p><strong><span>Daily tasks executed. </span></strong><a href="https://x.com/Aaronontheweb/status/2076685126193271046"><span>Aaron Stannard</span></a><span>, creator of </span><a href="http://akka.net"><span>Akka.NET</span></a><span>:</span></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/what-is-loop-engineering">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Pulse: What can we learn from Bun’s rapid Rust rewrite with AI?]]></title><description><![CDATA[A rewrite done in 11 days that would have taken a small team a year to complete, for $165K in tokens. Also: coding LLM &#8220;wars&#8221; heat up, AI fakers from North Korea still a problem when hiring, and more]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-what-can-we-learn-from</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-what-can-we-learn-from</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 09 Jul 2026 16:32:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Fvua!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56c0030d-bd49-45fb-b641-23017f5aa6af_1656x1200.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</span></em></p><p><span>Today, we cover:</span></p><ol><li><p><strong><span>Bun&#8217;s Rust rewrite with Fable: what can we learn? </span></strong><span>To a sceptic, spending $165K to migrate Bun from Zig to Rust sounds very expensive. But to a realist, shortening a 1-2 year migration down to 11 days opens amazing new opportunities for devs. However, a thoroughly-tested project is required to pull it off.</span></p></li><li><p><strong><span>Anthropic&#8217;s Fable, OpenAI&#8217;s GPT-5.6 Sol, Cursor&#8217;s Grok 4.5, Meta&#8217;s Muse. </span></strong><span>Coding LLM wars heat up: Fable is back, OpenAI releases a comparable GPT-5.6 Sol, Cursor offers cheap &amp; very capable Grok 4.5, and Meta is back with its first truly competitive coding model since Llama 3. But how did Gemini slip out of the top-ranked AI coding models?</span></p></li><li><p><strong><span>North Korean hackers keep trying to infiltrate full-remote companies.</span></strong><span> The founder of a Canadian digital consultancy caught a North Korean dev red-handed, using an AI filter. These events are now so common that it&#8217;s hard to trust remote interviewees are who they claim.</span></p></li><li><p><strong><span>Industry Pulse. </span></strong><span>Meta&#8217;s key logging exposed sensitive data, massive cuts at Xbox, Meta could not buy enough AI capacity from Google, Qualcomm acquires Modular, and memory price hikes hit Apple products.</span></p></li></ol><h2><span>1. Bun&#8217;s Rust rewrite with Fable: what can we learn?</span></h2><p><span>Last week in San Francisco, I met Jarred Sumner, creator of JavaScript runtime, Bun, and was keen to learn more about the rewrite of Bun from Zig to Rust. But at the time, Jarred didn&#8217;t want to say too much, as the tool used for the migration, Fable, was out of action due to the US government imposing export controls.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QJQi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QJQi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png 424w, https://substackcdn.com/image/fetch/$s_!QJQi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png 848w, https://substackcdn.com/image/fetch/$s_!QJQi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png 1272w, https://substackcdn.com/image/fetch/$s_!QJQi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QJQi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png" width="1456" height="980" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:980,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QJQi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png 424w, https://substackcdn.com/image/fetch/$s_!QJQi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png 848w, https://substackcdn.com/image/fetch/$s_!QJQi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png 1272w, https://substackcdn.com/image/fetch/$s_!QJQi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab56f7-62fb-45ea-a522-4617130a3f61_2048x1379.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Jarred and I at Anthropic&#8217;s HQ, last week</span></em></figcaption></figure></div><p><span>Fortunately, the situation is now resolved and Fable is available globally, and Jarred has published a detailed </span><a href="https://bun.com/blog/bun-in-rust"><span>post about the project.</span></a><span> Before we get into the migration, some context:</span></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-what-can-we-learn-from">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Pragmatic Engineer AMA]]></title><description><![CDATA[In this AMA episode, Gergely Orosz answers listener questions on AI, engineering, hiring, and careers.]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pragmatic-engineer-ama</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pragmatic-engineer-ama</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 08 Jul 2026 16:38:49 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/205651879/996354bca610ff83469939ab5f7cfee3.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/cSIMVYjVF28">YouTube</a>, <a href="https://open.spotify.com/episode/1fqJo4XYcs4vF5sEv7HIxI">Spotify</a></strong>, <strong>and <a href="https://podcasts.apple.com/us/podcast/the-pragmatic-engineer-ama/id1769051199?i=1000775992941">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to <span>y</span>ou by our presenting partner, <a href="https://antithesis.com/pragmatic">Antithesis</a></strong>.</h3><p><span>Verify your system&#8217;s correctness by running your whole system in a hostile simulation and finding bugs. I&#8217;ve been using Antithesis myself, and I&#8217;m impressed with their innovation in building new kinds of debugging tools. Like this:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!THaU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!THaU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png 424w, https://substackcdn.com/image/fetch/$s_!THaU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png 848w, https://substackcdn.com/image/fetch/$s_!THaU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png 1272w, https://substackcdn.com/image/fetch/$s_!THaU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!THaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png" width="1456" height="864" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:864,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!THaU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png 424w, https://substackcdn.com/image/fetch/$s_!THaU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png 848w, https://substackcdn.com/image/fetch/$s_!THaU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png 1272w, https://substackcdn.com/image/fetch/$s_!THaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3aa9c7-c1c1-449c-97af-f000307b5b8d_1988x1180.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Bug probability analysis in Antithesis&#8217; fully deterministic, simulated environment. When probability spikes, it&#8217;s a good place on the timeline to  &#8220;rewind&#8221; and check logs to find what triggers bugs.</em></figcaption></figure></div><p><span>I show more examples of this neat UI </span><a href="https://youtu.be/cSIMVYjVF28?si=jgzwdSRUGoGGElbG&amp;t=2119"><span>inside the episode, here</span></a><span>. You can also </span><a href="https://antithesis.com/pragmatic"><span>check out Antithesis.</span></a></p><h3><strong>In this episode</strong></h3><p><span>In this special &#8220;ask me anything&#8221; episode of Pragmatic Engineer podcast, I am in the hot seat facing questions sent in by subscribers that are read out by guest Volodymyr Giginiak, CTO and cofounder of </span><a href="https://wordsmith.ai/"><span>Wordsmith AI</span></a><span>, a legal tech startup </span><em><span>(note: I&#8217;m </span><a href="https://blog.pragmaticengineer.com/investing/"><span>an investor</span></a><span>)</span></em><span>.</span></p><p><span>I tackle your questions on the software industry, AI, hiring, engineering organizations, career growth, the business model of the Pragmatic Engineer, and more. We also discuss where software engineering is headed, and I offer advice on some specific situations. </span><em><span>Thanks to everyone who sent questions!</span></em></p><h3><strong>Three stories &amp; observations</strong></h3><div id="youtube2-cSIMVYjVF28" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cSIMVYjVF28&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cSIMVYjVF28?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong><span>Story #1: Without the COVID-19 pandemic, The Pragmatic Engineer might not exist. </span></strong><span>Prior to the global health crisis in 2020, I had no plans to get serious about writing: I enjoyed blogging on The Pragmatic Engineer blog, but intended to remain an engineering manager or software engineer for the foreseeable future.</span></p><p><span>But then, COVID-19 happened and Uber made layoffs, which led to a quarter of my team being let go, while the rest of us were disbanded into other teams. It was a tough time, and I decided it was a good moment to exit and finish writing a book I had been working on, &#8216;The Software Engineer&#8217;s Guidebook&#8217;. After that project was complete, I planned to try and start a VC-funded startup and build something around platform engineering; possibly a system for tracking RFCs at mid-sized and larger companies.</span></p><p><span>I gave myself around eight months to finish the book, but when that deadline elapsed, it still wasn&#8217;t ready. I did write three other books (&#8216;The Tech Resume Inside-Out&#8217;, &#8216;Building Mobile Apps at Scale&#8217;, and &#8216;Growing as a Mobile Engineer&#8217;) and still wasn&#8217;t convinced by any startup idea. But I did discover that I like to write!</span></p><p><strong><span>Story #2: I was on track to publish a damning expos&#233;, until one message from an engineer changed my mind.</span></strong></p><p><span>During the first year of The Pragmatic Engineer, I wrote about conditions for engineers at the Dutch neobank Bunq, based on accounts from disgruntled employees. I had a final draft ready, which I sent to the company to provide a right of reply ahead of publication. Then I received a message.</span></p><p><span>It was sent by an engineer originally from the Middle East. They told me they had really wanted to break into the European tech industry, but that no company would sponsor their visa, except Bunq. Yes, the company was a tough place to work at as a dev &#8211; and this engineer subsequently left for another opportunity &#8211; but they appreciated Bunq for taking a chance on them that enabled them to move to Amsterdam and learn how to build fintech with a small team. This engineer now works at Meta and attributes their success to the break Bunq provided.</span></p><p><span>Based on that interaction, I opted not to publish the article, and it also led me to adopt a new editorial policy that I have followed since: I write about what </span><em><span>works </span></em><span>inside companies, instead of focusing on what </span><em><span>seems</span></em><span> to be broken.</span></p><p><strong><span>Story #3: Being called a &#8220;nobody&#8221; by a CEO led to my </span><a href="https://blog.pragmaticengineer.com/pollen/"><span>sole investigative piece</span></a><span>, which uncovered some pretty interesting details. </span></strong><span>After I briefly noted Pollen&#8217;s poorly-handled layoffs, CEO Callum-Negus Fancey dismissed my report during a company all-hands, and compared The Pragmatic Engineer unfavorably to the BBC as just some minor publication with an agenda against Pollen (why I would have an anti-Pollen bias isn&#8217;t clear to me!) To be honest, I took it personally when I heard a recording of this sent to me by employees there, and so started digging around.</span></p><p><span>I discovered unpaid salaries, silently cancelled health insurance in the US, and the CTO deliberately triggering a $3.2M double charge to customers and never publishing a postmortem, despite engineers requesting one.</span></p><p><span>It was certainly something, and I published the findings in the article </span><a href="https://blog.pragmaticengineer.com/pollen/"><span>Inside Pollen&#8217;s Collapse: &#8220;$200M Raised&#8221; but Staff Unpaid - Exclusive</span></a><span>. To ensure the CEO saw the report on a platform he deemed worthy, I also contributed to the BBC&#8217;s documentary: </span><a href="https://www.bbcselect.com/watch/festival-fail/"><span>Crashed: $800M Festival Fail</span></a><span>, aired in the UK during prime time. By doing all this, I also learned that investigative journalism is just not for me.</span></p><p><span>In a strange turn of events, someone at Pollen evidently </span><a href="https://blog.pragmaticengineer.com/pollen-tried-to-remove-my-article-about-callum-negus-fancey-and-google-is-assisting-to-it/"><span>wants my original article to disappear from Google&#8217;s search results</span></a><span>, and filed bogus DMCA takedown notices a few weeks ago. Well, it&#8217;s </span><a href="https://blog.pragmaticengineer.com/pollen-tried-to-remove-my-article-about-callum-negus-fancey-and-google-is-assisting-to-it/"><span>having the opposite effect!</span></a></p><p><strong><span>Opinion #1: I believe LeetCode-style interviews will stay because they self-select tolerance of corporate nonsense. </span></strong><span>The existence of data structures and algorithm (DSA) interviews is a bit of a head scratcher because these skills are rarely used at work. However, a candidate who&#8217;s willing to grind for weeks or months to prepare for an interview which bears little resemblance to the job, is likely to be someone who understands that sometimes it&#8217;s necessary to do pointless work.</span></p><p><span>This suggests they&#8217;ll probably have a much better time in Big Tech than someone who refuses to engage with meaningless tasks. It&#8217;s one reason I&#8217;ve observed for companies retaining LeetCode-style interviews. Of course, AI solves the puzzles with ease these days, and I expect larger companies to move back to in-person interviewing &#8211; all while keeping DSA interview questions.</span></p><p><strong><span>Opinion #2: MCP became industry standard partly because Anthropic wasn&#8217;t a threat &#8211; but it couldn&#8217;t pull this off today. </span></strong><span>When MCP </span><a href="https://newsletter.pragmaticengineer.com/p/mcp"><span>launched</span></a><span> in November 2024, Anthropic wasn&#8217;t yet considered </span><em><span>the</span></em><span> leading AI lab. GPT-4o was seen as the top-performing multimodal model, followed by Claude 3.5 Sonnet and Gemini 1.5 Pro. At that point, Claude 3.5 Sonnet was seen as the best</span><em><span> coding </span></em><span>model, but it wasn&#8217;t understood how advantageous being good at coding would be for AI in general.</span></p><p><span>Therefore, OpenAI, Google, Microsoft, and other players could adopt MCP without fear of lock-in, as it came from a promising, but not a dominant lab. When Google launched its </span><a href="https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/"><span>Agent2Agent protocol</span></a><span> a few months later, no major lab adopted it due to concerns about Google&#8217;s dominant position. Today, Anthropic is </span><em><span>the</span></em><span> leading frontier lab and I reckon this would discourage adoption if MCP was launched in the present climate, for the same reason as nobody adopted the Agent2Agent protocol.</span></p><p><span>My answer to subscribers with questions about how to create standards is that I see them as emerging somewhat coincidentally, following a technically strong approach and with the right external conditions in place, which are impossible to entirely predict or control.</span></p><p><strong><span>Opinion #3: My hot AI take: AI doesn&#8217;t make work easier, and be mindful of skill atrophy</span></strong><span>. If you&#8217;re using AI and life seems to be getting a lot easier, it raises the question: are you trying hard </span><em><span>enough</span></em><span>? Personally, using AI forces me to think just as hard, or even harder than before. I choose to use zero AI in my writing for the Pragmatic Engineer, and Grammarly is turned off as well. This is because I don&#8217;t want my writing skill to degrade, and would like to keep improving. On the other hand, with coding, I do use AI and accept my hand-coding ability will unavoidably degrade. My tip is to be mindful of the tradeoffs inherent in AI, and to keep using those skills which you value and want to keep sharp, even when AI tools are available.</span></p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/state-of-the-job-market-2026"><span>State of the software engineering job market in 2026</span></a></p><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/the-impact-of-ai-on-software-engineers-2026"><span>The impact of AI on software engineers in 2026: key trends.</span></a></p><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/measuring-ai-dev-tools"><span>How 10 tech companies choose the next generation of dev tools</span></a></p><p><strong><span>&#8226; </span></strong><a href="https://newsletter.pragmaticengineer.com/p/the-reality-of-tech-interviews"><span>The reality of tech interviews</span></a></p><h3><strong>Timestamps</strong></h3><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28">00:00</a> Intro</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=116s">01:56</a> From Uber to writing</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=562s">09:22</a> AI-native SDLC</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=840s">14:00</a> AI and hiring</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=1146s">19:06</a> Engineers currently thriving</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=1338s">22:18</a> Junior roles</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=1484s">24:44</a> Meta&#8217;s war mode</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=1674s">27:54</a> AI at Big Tech vs. startups</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=2206s">36:46</a> Tech debt</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=2496s">41:36</a> Types of engineering managers</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=2680s">44:40</a> Measuring AI productivity</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=2910s">48:30</a> The value of CS degrees</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=3053s">50:53</a> AI at Pragmatic Engineer</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=3369s">56:09</a> Future-proofing your career</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=3696s">1:01:36</a> The EU job market</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=3835s">1:03:55</a> Making money as a creator</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=4100s">1:08:20</a> What&#8217;s next for The Pragmatic Engineer</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=4167s">1:09:27</a> Bunq and Pollen</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=4418s">1:13:38</a> Spotting trends</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=4473s">1:14:33</a> Book updates</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=4520s">1:15:20</a> Favorite books &amp; tech products</p><p><a href="https://www.youtube.com/watch?v=cSIMVYjVF28&amp;t=4633s">1:17:13</a> What won&#8217;t change in engineering</p><h3><strong>References</strong></h3><p><strong><span>Where to find Gergely Orosz:</span></strong></p><p><span>&#8226; X: </span><a href="https://x.com/GergelyOrosz"><span>https://x.com/GergelyOrosz</span></a></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/gergelyorosz/"><span>https://www.linkedin.com/in/gergelyorosz/</span></a></p><p><span>&#8226; Bluesky: </span><a href="https://bsky.app/profile/gergely.pragmaticengineer.com"><span>https://bsky.app/profile/gergely.pragmaticengineer.com</span></a></p><p><span>&#8226; Newsletter and blog: </span><a href="https://www.pragmaticengineer.com/">https://www.pragmaticengineer.com/</a></p><p><strong><span>Where to find Volodymyr Giginiak:</span></strong></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/giginiak"><span>https://www.linkedin.com/in/giginiak</span></a></p><p><span>&#8226; Newsletter: </span></p><div class="embedded-publication-wrap" data-attrs="{&quot;id&quot;:3333411,&quot;embedding_publication_id&quot;:null,&quot;name&quot;:&quot;The Legal Engineer&quot;,&quot;logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!BliM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa8d390-c1de-4216-984f-55070edf224c_1024x1024.png&quot;,&quot;base_url&quot;:&quot;https://legalengineer.substack.com&quot;,&quot;hero_text&quot;:&quot;The journey of an engineer building AI for lawyers&quot;,&quot;author_name&quot;:&quot;Volodymyr Giginiak&quot;,&quot;show_subscribe&quot;:true,&quot;logo_bg_color&quot;:&quot;#ebf2e2&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPublicationToDOMWithSubscribe"><div class="embedded-publication show-subscribe"><a class="embedded-publication-link-part" native="true" href="https://legalengineer.substack.com?utm_source=substack&amp;utm_campaign=publication_embed&amp;utm_medium=web"><img class="embedded-publication-logo" src="https://substackcdn.com/image/fetch/$s_!BliM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa8d390-c1de-4216-984f-55070edf224c_1024x1024.png" width="56" height="56" style="background-color: rgb(235, 242, 226);"><span class="embedded-publication-name">The Legal Engineer</span><div class="embedded-publication-hero-text">The journey of an engineer building AI for lawyers</div><div class="embedded-publication-author-name">By Volodymyr Giginiak</div></a><form class="embedded-publication-subscribe" method="GET" action="https://legalengineer.substack.com/subscribe?"><input type="hidden" name="source" value="publication-embed"><input type="hidden" name="autoSubmit" value="true"><input type="email" class="email-input" name="email" placeholder="Type your email..."><input type="submit" class="button primary" value="Subscribe"></form></div></div><p><strong>Mentions during the episode:</strong></p><p><span>&#8226; Wordsmith: </span><a href="https://www.wordsmith.ai">https://www.wordsmith.ai</a></p><p><span>&#8226; Uber: </span><a href="https://www.uber.com">https://www.uber.com</a></p><p><span>&#8226; Lenny&#8217;s Newsletter: </span></p><div class="embedded-publication-wrap" data-attrs="{&quot;id&quot;:10845,&quot;embedding_publication_id&quot;:null,&quot;name&quot;:&quot;Lenny's Newsletter&quot;,&quot;logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8MSN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png&quot;,&quot;base_url&quot;:&quot;https://www.lennysnewsletter.com&quot;,&quot;hero_text&quot;:&quot;Deeply researched product, growth, and career advice for product leaders, founders, and ambitious builders.\n&quot;,&quot;author_name&quot;:&quot;Lenny Rachitsky&quot;,&quot;show_subscribe&quot;:true,&quot;logo_bg_color&quot;:&quot;#ffffff&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPublicationToDOMWithSubscribe"><div class="embedded-publication show-subscribe"><a class="embedded-publication-link-part" native="true" href="https://www.lennysnewsletter.com?utm_source=substack&amp;utm_campaign=publication_embed&amp;utm_medium=web"><img class="embedded-publication-logo" src="https://substackcdn.com/image/fetch/$s_!8MSN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png" width="56" height="56" style="background-color: rgb(255, 255, 255);"><span class="embedded-publication-name">Lenny's Newsletter</span><div class="embedded-publication-hero-text">Deeply researched product, growth, and career advice for product leaders, founders, and ambitious builders.
</div><div class="embedded-publication-author-name">By Lenny Rachitsky</div></a><form class="embedded-publication-subscribe" method="GET" action="https://www.lennysnewsletter.com/subscribe?"><input type="hidden" name="source" value="publication-embed"><input type="hidden" name="autoSubmit" value="true"><input type="email" class="email-input" name="email" placeholder="Type your email..."><input type="submit" class="button primary" value="Subscribe"></form></div></div><p><span>&#8226; Waterfall methodology: </span><a href="https://www.atlassian.com/agile/project-management/waterfall-methodology"><span>https://www.atlassian.com/agile/project-management/waterfall-methodology</span></a></p><p><span>&#8226; Agile: </span><a href="https://www.atlassian.com/agile"><span>https://www.atlassian.com/agile</span></a></p><p><span>&#8226; How Kent Beck shapes the software engineering industry:</span></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;1991261a-9bc5-47d1-b4b1-a95d43037988&quot;,&quot;caption&quot;:&quot;Stream the latest episode&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How Kent Beck shapes the software engineering industry&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:30107029,&quot;name&quot;:&quot;Gergely Orosz&quot;,&quot;bio&quot;:&quot;Big Tech and startups from the inside. Especially relevant for software engineers / AI engineers, useful for anyone working in tech.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58fed27c-f331-4ff3-ba47-135c5a0be0ba_400x400.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:10000}],&quot;post_date&quot;:&quot;2026-07-01T16:57:46.499Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/ddHQQtjIOpw&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://newsletter.pragmaticengineer.com/p/how-kent-beck-shapes-the-software&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:204178365,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:111,&quot;comment_count&quot;:1,&quot;publication_id&quot;:458709,&quot;publication_name&quot;:&quot;The Pragmatic Engineer&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!eod5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27076b05-e3f4-4d05-9621-3da4f7f189cd_300x300.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p><span>&#8226; Building Claude Code with Boris Cherny: </span><a href="https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny"><span>https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny</span></a></p><p><span>&#8226; How Claude Code is built: </span><a href="https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built"><span>https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built</span></a></p><p><span>&#8226; How AI is changing software engineering at Shopify with Farhan Thawar: </span><a href="https://newsletter.pragmaticengineer.com/p/how-ai-is-changing-software-engineering"><span>https://newsletter.pragmaticengineer.com/p/how-ai-is-changing-software-engineering</span></a></p><p><span>&#8226; Linear: </span><a href="https://linear.app\">https://linear.app</a></p><p><span>&#8226; Inside Linear&#8217;s Engineering Culture: </span><a href="https://newsletter.pragmaticengineer.com/p/linear"><span>https://newsletter.pragmaticengineer.com/p/linear</span></a></p><p><span>&#8226; Linear: move fast with little process (with first engineering manager Sabin Roman): </span><a href="https://newsletter.pragmaticengineer.com/p/linear-move-fast-with-little-process"><span>https://newsletter.pragmaticengineer.com/p/linear-move-fast-with-little-process</span></a></p><p><span>&#8226; Inside Meta&#8217;s Engineering Culture: Part 1: </span><a href="https://newsletter.pragmaticengineer.com/p/facebook"><span>https://newsletter.pragmaticengineer.com/p/facebook</span></a></p><p><span>&#8226; Inside Meta&#8217;s Engineering Culture: Part 2: </span><a href="https://newsletter.pragmaticengineer.com/p/facebook-2"><span>https://newsletter.pragmaticengineer.com/p/facebook-2</span></a></p><p><span>&#8226; Stacked diffs and tooling at Meta with Tomas Reimers: </span><a href="https://newsletter.pragmaticengineer.com/p/stacked-diffs-and-tooling-at-meta"><span>https://newsletter.pragmaticengineer.com/p/stacked-diffs-and-tooling-at-meta</span></a></p><p><span>&#8226; </span><em><span>Chaos Monkeys: Obscene Fortune and Random Failure in Silicon Valley</span></em><span>: </span><a href="https://www.amazon.com/dp/0062458191"><span>https://www.amazon.com/dp/0062458191</span></a></p><p><span>&#8226; Gemini: </span><a href="https://gemini.google.com/app"><span>https://gemini.google.com/app</span></a></p><p><span>&#8226; Ramp: </span><a href="https://ramp.com">https://ramp.com</a></p><p><span>&#8226; Intercom: </span><a href="https://www.intercom.com">https://www.intercom.com</a></p><p><span>&#8226; Block: </span><a href="https://block.xyz">https://block.xyz</a></p><p><span>&#8226; Coinbase: </span><a href="https://www.coinbase.com">https://www.coinbase.com</a></p><p><span>&#8226; Why Rust is different, with Alice Ryhl: </span><a href="https://newsletter.pragmaticengineer.com/p/why-rust-is-different-with-alice"><span>https://newsletter.pragmaticengineer.com/p/why-rust-is-different-with-alice</span></a></p><p><span>&#8226; Building a best-selling game with a tiny team &#8211; with Jonas Tyroller: </span><a href="https://newsletter.pragmaticengineer.com/p/thronefall"><span>https://newsletter.pragmaticengineer.com/p/thronefall</span></a></p><p><span>&#8226; Bunq: </span><a href="https://www.bunq.com">https://www.bunq.com</a></p><p><span>&#8226; Inside Pollen&#8217;s Collapse: &#8220;$200M Raised&#8221; but Staff Unpaid - Exclusive: </span><a href="https://blog.pragmaticengineer.com/pollen"><span>https://blog.pragmaticengineer.com/pollen</span></a></p><p><span>&#8226; </span><em><span>A Philosophy of Software Design</span></em><span>: </span><a href="https://www.amazon.com/dp/1732102201"><span>https://www.amazon.com/dp/1732102201</span></a></p><p><span>&#8226; </span><em><span>Tidy First?: A Personal Exercise in Empirical Software Design</span></em><span>:</span></p><p><a href="https://www.amazon.com/Tidy-First-Personal-Exercise-Empirical/dp/1098151240"><span>https://www.amazon.com/Tidy-First-Personal-Exercise-Empirical/dp/1098151240</span></a></p><p><span>&#8226; Granola: </span><a href="https://www.granola.ai">https://www.granola.ai</a></p><p><span>&#8226; Perplexity Deep Research: </span><a href="https://www.perplexity.ai/hub/blog/introducing-perplexity-deep-research"><span>https://www.perplexity.ai/hub/blog/introducing-perplexity-deep-research</span></a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[Tech jobs market in 2026, part 3: hiring managers & job seekers]]></title><description><![CDATA[The market where nobody finds each other, the hottest market for AI-related positions, tough for engineering leaders, and more. Based on details from 50+ hiring managers & job seekers]]></description><link>https://newsletter.pragmaticengineer.com/p/tech-jobs-market-in-2026-part-3-hiring</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/tech-jobs-market-in-2026-part-3-hiring</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 07 Jul 2026 17:25:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jug7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>What is the tech jobs market like for job seekers and hiring managers today? It&#8217;s a broad question for which one answer is that it&#8217;s a land of contrasts and confusion, and also some crossed wires. Experienced engineers and managers feel ghosted by employers and recruiters, who in turn have given up on inbound applications because their inboxes are full of AI slop, sometimes from bogus candidates. It&#8217;s rosier for those with </span><em><span>specific</span></em><span> skillsets, who are in strong demand &#8211; and personal networks help more than ever to land the right job.</span></p><p><span>For this final part of our series on the tech hiring market during the first half of 2026, I spoke with more than 50 hiring managers, software engineers, and engineering leaders. </span><em><span>Thank you to everyone who contributed!</span></em></p><p><span>For more on this topic, check out our analysis of what the data says about the market in </span><strong><a href="https://newsletter.pragmaticengineer.com/p/state-of-the-job-market-2026"><span>Part 1</span></a></strong><span> and </span><strong><a href="https://newsletter.pragmaticengineer.com/p/the-job-market-in-2026-part-2"><span>Part 2</span></a></strong><span> of this mini-series.</span></p><p><span>Overall, an appropriate description of the employment market as many folks experience it right now would be &#8220;weird&#8221;. This is a characteristic that&#8217;s not easy to see in the data, but is clear from talking to people and hearing their anecdotal, personal accounts of job hunting this year. I think the data in the first two articles of this series failed to capture just how unusual things are.</span><strong><span> </span></strong><span>So, in today&#8217;s issue, we attempt to shed some light on the weirdness, covering:</span></p><ol><li><p><strong><span>&#8220;Catch-22:&#8221; nobody finds each other. </span></strong><span>Hiring managers struggle to find experienced folks, who barely get any replies when applying for jobs. How&#8217;s that work?</span></p></li><li><p><strong><span>No trust. Is AI to blame? </span></strong><span>AI-enhanced resumes read as incredible, but hiring managers often face disappointment. Some places don&#8217;t bother reading inbound applications as a result.</span></p></li><li><p><strong><span>Hot market for some, but tough for most</span></strong><span>. For those in AI Engineering, ML, or </span><a href="https://newsletter.pragmaticengineer.com/p/forward-deployed-engineers"><span>FDE</span></a><span>, the market is incredible. For everyone else, it&#8217;s much less great.</span></p></li><li><p><strong><span>Higher hiring bar &amp; lower compensation &#8211; but not for everyone. </span></strong><span>Many candidates are unhappy with offers that are the lowest in years. This doesn&#8217;t apply to AI Engineering positions or at AI businesses, however.</span></p></li><li><p><strong><span>Engineering leader recruitment: also weird for senior ICs.</span></strong><span> Senior engineering leaders are struggling to find opportunities, or may turn them down in favor of fractional roles or to work on their own startup.</span></p></li><li><p><strong><span>US market trends. </span></strong><span>Folks experiencing the &#8220;best market ever&#8221; are likely in the US, where a talent shortage is a bigger complaint than it is elsewhere.</span></p></li><li><p><strong><span>Trends in the UK, EU, and rest of the world. </span></strong><span>&#8220;Ghosting&#8221; is more commonplace than in the US, &#8220;fake applicants&#8221; a bigger issue, remote roles are going extinct, and more.</span></p></li></ol><p>For more details on the hiring market, see also:</p><p><strong><a href="https://newsletter.pragmaticengineer.com/p/state-of-the-job-market-2026">Part 1: what the data says</a>:</strong></p><ul><li><p>Software engineering recruitment: trending up, mostly</p></li><li><p>Big Tech and publicly-traded companies</p></li><li><p>Who&#8217;s hiring the most software engineers?</p></li><li><p>AI engineering: explosive demand</p></li><li><p>Who&#8217;s hiring the most AI engineers?</p></li><li><p>Is AI engineering replacing software engineering hiring?</p></li></ul><p><strong><a href="https://newsletter.pragmaticengineer.com/p/the-job-market-in-2026-part-2">Part 2, what the data says, continuied:</a></strong></p><ul><li><p>Top AI labs are now more attractive than Big Tech</p></li><li><p>Harder for new grads &amp; interns to get hired</p></li><li><p>Mobile and frontend demand drops, AI &amp; FDE surges</p></li><li><p>AI engineering comp &gt; software engineering comp</p></li><li><p>Management&#8217;s &#8220;great flattening&#8221; continues</p></li><li><p>Big Tech seniority &amp; tenure keep rising</p></li><li><p>Interview preparation signups: what do they indicate?</p></li><li><p>Where engineers go after Big Tech</p></li></ul><h2><span>1. &#8220;Catch-22:&#8221; nobody finds each other</span></h2><p><span>The phrase &#8220;Catch 22&#8221; refers to a paradoxical problem, whose solution is blocked by the problem itself. The term originated in a famous World War II novel of the same name, and it also describes pretty accurately what I see in today&#8217;s tech job market. Hiring managers are saying that highly-skilled talent (typically senior+ engineers) is not available to be recruited, at the same time as experienced, proven professionals find their applications ignored by employers.</span></p><p><span>What seems paradoxical here is how both can be true. It&#8217;s as if recruiters and potential candidates aren&#8217;t hearing each other. Of course, there&#8217;s some nuance:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jug7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jug7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png 424w, https://substackcdn.com/image/fetch/$s_!jug7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png 848w, https://substackcdn.com/image/fetch/$s_!jug7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png 1272w, https://substackcdn.com/image/fetch/$s_!jug7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jug7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png" width="1182" height="704" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:704,&quot;width&quot;:1182,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jug7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png 424w, https://substackcdn.com/image/fetch/$s_!jug7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png 848w, https://substackcdn.com/image/fetch/$s_!jug7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png 1272w, https://substackcdn.com/image/fetch/$s_!jug7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16fca2a-ad43-4f69-9a9d-8dd72f2edda3_1182x704.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><a href="https://x.com/GergelyOrosz/status/2071105819089973716"><span>My take</span></a><span> on the hiring market</span></em></figcaption></figure></div><p><span>Mike Julian, CEO of DuckBill Group, which is </span><a href="https://www.duckbillhq.com/careers/?ashby_jid=1e7683e5-6c00-4525-8687-a056d57c3d45"><span>hiring software engineers</span></a><span>, replied to my post with this </span><a href="https://x.com/mikejulian/status/2071264541569388881?s=20"><span>observation</span></a><span>:</span></p><blockquote><p><span>&#8220;We get about 1,000 applications a day on inbound and maybe two of them are even relevant to the posting.<br><br>I mostly no longer look at inbound seriously because it&#8217;s so c***. I&#8217;d almost certainly miss a great inbound submission if it came in.</span></p><p><span>All of our recent hires have been via network and us reaching out to folk on LinkedIn. Biggest hurdle we have to outreach is thin LinkedIn profiles and little other online presence.&#8221;</span></p></blockquote><p>From the other hiring managers we talked with, more themes emerged:</p><h3><span>More inbounds than ever &amp; also more noise</span></h3><blockquote><p><span>&#8220;</span><strong><span>I&#8217;ve never seen so many inbounds and strong resumes.</span></strong><span> I&#8217;m hiring for lots of roles; for one software engineering position in Seattle, we have had 800 resumes inbound over a three-month period. I&#8217;ve never seen anything like this! These resumes are not low-quality either: they are people who have worked at MSFT, AWS, other large tech companies, and have solid skills.&#8221;</span><em><span> &#8211; Head of Engineering, Series B startup, Seattle, US</span></em></p><p><span>&#8220;It&#8217;s difficult to find good candidates among all the noise. Have had two open senior engineer positions for months, and the only good interviews or offers we&#8217;ve extended were in network.&#8221; </span><em><span>&#8211; Engineering Manager, late-stage startup, US</span></em></p><p><span>&#8220;</span><strong><span>A glut of vastly underqualified people completely drowning your hiring pipeline. </span></strong><span>This is what I&#8217;m seeing, and it&#8217;s making inbound a useless channel.&#8221;</span><em><span> &#8211; Engineering Director, Big Tech, US</span></em></p><p><span>&#8220;From what I hear from recruiters, every job posted has 1,000+ applicants, and 98% of them are considered unqualified.&#8221;</span><em><span> &#8211; fullstack engineer, Middle East</span></em></p><p><strong><span>&#8220;We are a small company and gave up on inbound hiring. </span></strong><span>We got too many AI applications. Much lower signal-to-noise compared to past experience.&#8221;</span><em><span> &#8211; Director of Engineering, Canada</span></em></p></blockquote><h3><span>Experienced engineers struggle to get interviews</span></h3><blockquote><p><strong><span>&#8220;Even when you&#8217;re good, it feels like there&#8217;s a LOT of noise to cut through to get noticed.</span></strong><span> I&#8217;m quietly looking for a new role in devtools, and fit that &#8216;product engineer&#8217; profile perfectly. I feel like the demand for great people is higher than ever, but I can&#8217;t figure out where on that bar I fall.&#8221;</span><em><span> &#8211; Tech lead, seed-stage startup, US<br></span></em><span><br>&#8220;As an experienced engineer &amp; successful-ish founder I have yet to get to a phone screening in this job market. There is clearly something amiss, just a wall of noise preventing any signal from getting through.&#8221;</span><em><span> &#8211; Software engineer + founder, 8 years experience, US</span></em></p></blockquote><p><span>A staff engineer at a late-stage startup in the US summed things up:</span></p><blockquote><p><span>&#8220;It feels like everyone who has a good job is holding onto it for dear life, and THOSE are the people we want to hire.&#8221;</span></p></blockquote><h3><span>&#8220;Tale of two cities:&#8221; in demand or not</span></h3><p><span>A director of engineering at a Big Tech in the US, identifies two distinct groups in the market:</span></p><blockquote><p><span>&#8220;</span><strong><span>If you are at the top of your game, have AI experience, and are senior enough, you can write your own ticket</span></strong><span>. If not, then the job market is tough! This job market is like the tale of these two very different cities.&#8221;</span></p></blockquote><p><span>Observations from some job seekers echo this: demand feels strong for &#8220;AI-adjacent&#8221; engineers (those building AI systems), especially in the US. Standout engineers with a strong network are still in demand, and we covered the story of one such person in </span><a href="https://newsletter.pragmaticengineer.com/p/how-to-be-a-10x-engineer-interview"><span>&#8220;How to be a 10x engineer&#8221; &#8211; interview with a standout dev</span></a><span>. For everyone else, it&#8217;s a struggle to get an interview!</span></p><h3><span>Referrals: more important than ever?</span></h3><p><span>Several experienced engineers currently on the job market say they only get interviews when they personally know someone at a company:</span></p><blockquote><p><span>&#8220;Larger companies have to have some serious AI going on to sift through resumes because they are being bombarded. It really is the case that you don&#8217;t get your resume seen unless you know people who can vouch for you.&#8221;</span><em><span> &#8211; Technical Program Manager, Big Tech, US</span></em></p><p><span>&#8220;</span><strong><span>Referrals are a lifeline. </span></strong><span>It&#8217;s impossible to get interviews for Staff or Principal Eng positions by cold applying. The only interviews I am getting from a cold-apply are Senior-level roles.&#8221; </span><em><span>&#8211; Principal Engineer, 10 YOE, US</span></em></p></blockquote><p><span>From a couple of hiring managers:</span></p><blockquote><p><span>&#8220;The only interviews or offers we&#8217;ve extended were to devs already in our network.&#8221; &#8211; </span><em><span>Software architect at a mid-sized company, US</span></em></p><p><span>&#8220;I filled an engineering manager position in record time thanks to a person in my network looking for this job. If it would not have been for my network I would probably have been looking for someone for a couple of months.&#8221;</span><em><span> &#8211; VP of Engineering, private equity-funded company, Germany</span></em></p></blockquote><h2><span>2. No trust. Is AI to blame?</span></h2><p><span>Hiring managers repeatedly tell us they no longer trust what they read in resumes, and that some candidates even turn out to be fake.</span></p><h3><span>Polished CVs, weak candidates</span></h3><p><span>A common gripe among hiring managers is that resumes are highly optimized by AI, but candidates turn out not to have the experience they claim:</span></p><blockquote><p><span>&#8220;</span><strong><span>CVs are high-quality, but the people behind them are not. </span></strong><span>Almost every resume looks impressive. However, the quality of the conversations does not match it at all.</span></p><p><span>One recent example: I interviewed a senior candidate who had spent five years at a US-based cloud consulting company, most recently as an architect. I asked which architectural principles or patterns he had used in his projects. His answer was: &#8220;Daily standup, sprint planning, and retrospective.&#8221; I clarified that I meant from a tech perspective, not process perspective. He confidently replied: &#8220;Yes, daily standup, sprint planning, and retrospective.&#8221; </span><em><span>&#8211; Engineering manager, large company, Berlin, Germany</span></em></p><p><span>&#8220;Ten years ago, we would have appreciated resumes tailored to a role that was posted, now it&#8217;s just lazily thrown together with AI.&#8221;</span><em><span> &#8211; Engineering Manager, mid-sized company, Canada</span></em></p></blockquote><p><strong><span>AI-keyword stuffing is rampant</span></strong><span>, according to one head of engineering in the UK:</span></p><blockquote><p><span>&#8220;Lots of people are rebranding themselves as senior AI Engineers and demanding much higher salaries. Their resumes now have lots of AI-related keywords mentioned, like RAG, evals, inference&#8230; but when digging deeper there is little substance. Many of them are seeking a senior level salary (&#163;90k&#8211;&#163;140k) when they are barely showcasing mid-level skills.&#8221;</span></p></blockquote><p><strong><span>Cover letters are as good as dead,</span></strong><span> several hiring managers tell us. The reason is that they&#8217;re always AI-generated, boring to read, and pointless. </span><em><span>More than 18 months ago, </span><a href="https://newsletter.pragmaticengineer.com/i/152518407/weaker-resumes-and-cover-letters"><span>we reported on</span></a><span> how cover letters were being made redundant by AI in </span><a href="https://newsletter.pragmaticengineer.com/p/how-genai-changes-tech-hiring"><span>How GenAI is reshaping tech hiring.</span></a></em></p><p><span>An engineering manager at a UK e-commerce agency summarizes what&#8217;s happening:</span></p><blockquote><p><span>&#8220;&#8217;Claude; write me a CV that matches this job spec, then auto send&#8217;. This seems like the name of the game for most applicants.&#8221;</span></p></blockquote><h3><span>Fake candidates</span></h3><p><span>Does anything encapsulate the challenges of today&#8217;s job market for recruiters more succinctly than candidates who do </span><em><span>not</span></em><span> exist, even when they appear to be sitting in an interview? A year ago, we covered an </span><a href="https://newsletter.pragmaticengineer.com/p/ai-fakers"><span>&#8220;AI faker&#8221; applicant caught by a security startup</span></a><span>, who was potentially a state agent from North Korea.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VHm_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VHm_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png 424w, https://substackcdn.com/image/fetch/$s_!VHm_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png 848w, https://substackcdn.com/image/fetch/$s_!VHm_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png 1272w, https://substackcdn.com/image/fetch/$s_!VHm_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VHm_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png" width="1456" height="682" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3f90867-6892-4edc-965d-e330905e3021_1456x682.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:682,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VHm_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png 424w, https://substackcdn.com/image/fetch/$s_!VHm_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png 848w, https://substackcdn.com/image/fetch/$s_!VHm_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png 1272w, https://substackcdn.com/image/fetch/$s_!VHm_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f90867-6892-4edc-965d-e330905e3021_1456x682.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Catching an imposter: candidate (left) refuses to place their hand in front of their face because it would blow their AI cover. (right) The interviewer illustrates the request. </span><a href="https://newsletter.pragmaticengineer.com/p/ai-fakers"><span>More in our deepdive</span></a></em></figcaption></figure></div><p><span>Such incidents are becoming more common at US, UK and EU companies which hire for remote roles:</span></p><ul><li><p><span>&#8220;There are a lot more fake candidates applying, leveraging AI for not just resumes, but also interviews. In extreme cases, the interviews are being outsourced so that a different person shows up for the interview. It feels a bit like playing captcha with them during interviews.&#8221;</span><em><span> &#8211; Senior EM, private-equity backed company, Bay Area, US</span></em></p></li><li><p><span>&#8220;The second person we interviewed was clearly a North Korean scammer, writing questions into an LLM, reading the response, easily tripped up, and other interviews were background noise in the room.&#8221;</span><em><span> &#8211; Staff Engineer, UK</span></em></p></li><li><p><span>&#8220;Many applicants that looked a good fit turned out to be someone else in the Asia Pacific region doing interviews with an AI in the background. It&#8217;s easy to spot because of the &#8216;lag&#8217; in a naturally flowing conversation.&#8221;</span><em><span> &#8211; head of engineering, mid-sized company, Germany</span></em></p></li></ul><p><span>Cheating in remote interviews by using AI is also commonplace. A software engineer based in Finland told us:</span></p><blockquote><p><span>&#8220;A couple of times we saw an applicant who was using AI to answer the questions, and this was sooo weird. I honestly didn&#8217;t know how to react, so we decided to cut the interview short. We then shared a note with the recruiters on how to spot this.&#8221;</span></p></blockquote><h2><span>3. Hot market for some, but tough for most</span></h2><p><span>The market appears sharply bifurcated: amazing for AI and a few specialist roles, and a major struggle for everyone else.</span><strong><span> </span></strong><span>Some accounts from folks benefitting in the current conditions:</span></p><blockquote><p><strong><span>&#8220;The market is really good as an (AI) engineer with the right experience. </span></strong><span>I&#8217;m not actively looking but get 2&#8211;3 messages a day. When I was hiring for AI engineers at my last AI startup, the market for these folks was terrible. It&#8217;s very hard to find good talent, and people that were great on paper did poorly in interviews.&#8221;</span><em><span> &#8211; AI Engineer, 5 YOE, New York, US</span></em></p><p><span>&#8220;It seems like demand for senior positions is still there, but only if your profile really matches what the company needs. For example, I&#8217;ve been working on different data pipelines for a while, and finding such a position is relatively simple. However, breaking into anything else is not! Every startup wants to hire only people experienced in that particular thing they need.&#8221;</span><em><span> &#8211; Software Engineer, 13 YOE, Big Tech, UK</span></em></p></blockquote><p><span>Here&#8217;s what two job seekers who are struggling at present say:</span></p><blockquote><p><strong><span>&#8220;I sent my handcrafted resume to 30&#8211;40 positions, and heard back from zero.</span></strong><span> Eventually, I got an interview after a recruiter reached out via LinkedIn; I don&#8217;t know how I would&#8217;ve found anything, if it was not for this!&#8221;</span><em><span> &#8211; Software engineer, 5 YOE, Amsterdam, Netherlands</span></em></p><p><span>&#8220;As a developer without a specific &#8220;specialization,&#8221; I&#8217;m struggling to get any interviews. I&#8217;ve spent a few years as frontend, then another few as backend, and most recently working on DevEx. In this market, I just don&#8217;t get any callbacks for interviews, not even a first round interview.&#8221;</span><em><span> &#8211; Software engineer, 6 YOE, London, UK</span></em></p></blockquote><h3><span>AI/ML/FDE market on fire</span></h3><p><span>We see in the data that </span><a href="https://newsletter.pragmaticengineer.com/i/199358573/4-ai-engineering-explosive-demand"><span>AI engineering is seeing explosive demand</span></a><span>, and that forward deployed engineers (FDEs) are also seeing </span><a href="https://newsletter.pragmaticengineer.com/i/201325168/3-mobile-and-frontend-demand-drops-ai-and-fde-surges"><span>a massive spike in demand</span></a><span>. </span><em><span>For more detail on this, check our deepdive on </span><a href="https://newsletter.pragmaticengineer.com/p/forward-deployed-engineers"><span>what FDEs are, and why they&#8217;re hot right now.</span></a></em></p><p><span>Anecdotal evidence from job seekers suggests that being in these fields means the market is as good as it gets, right now:</span></p><blockquote><p><strong><span>&#8220;It&#8217;s the greatest job market I&#8217;ve ever seen. </span></strong><span>I&#8217;m an L5 former FDE, now SWE, who has worked on LLM apps for ~2 years. The inbound top of the funnel is bonkers, and I find myself saying &#8220;no&#8221; to places that I would have once killed to work at.&#8221;</span><em><span> &#8211; AI Engineer at an AI decacorn, San Francisco, US</span></em></p><p><span>&#8220;I have seen huge interest in FDEs and AI Engineers as an engineer who&#8217;s been interviewing.&#8221;</span><em><span> &#8211; Software Engineer, 5 YOE, New York, US</span></em></p><p><span>&#8220;It&#8217;s not hard to get interviews as an ML/AI engineer. The technical bar is about the same as late 2022. If anything, onsites seem to be of fewer rounds for the same level. Companies seem to move fast to get candidates onsite.&#8221;</span><em><span> &#8211; ML engineer, ex-Meta, Bay Area, US</span></em></p></blockquote><p><span>An engineer at Apple is surprised by the demand for their skills from AI companies:</span></p><blockquote><p><span>&#8220;Got a lot of responses from cold applications for AI roles, and ended up with two offers at AI infra companies. I ended up getting a significant pay bump beyond what Apple offers for the same level!&#8221;</span></p></blockquote><p><span>A software engineer at well-known company in the Bay Area, also finds the job market is good:</span></p><blockquote><p><span>&#8220;I got offers for Senior SWE with Stripe and Rippling, was rejected from Snowflake&#8230; Anecdotally, the job market is better compared to 2025 for regular SWE positions in the Valley.&#8221;</span></p></blockquote><h3><span>EM and Staff+ profiles are near-impossible to fill</span></h3><p><span>A repeat complaint from hiring managers in the US is how challenging it is to recruit solid engineering managers and Staff+ engineers:</span></p><blockquote><p><strong><span>&#8220;It&#8217;s extremely difficult to hire EMs and Staff+ engineers.</span></strong><span> It&#8217;s much easier to hire folks with less than 10 years of experience. This is despite us offering 90th percentile comp via Pave, and having a hybrid and good culture.&#8221;</span><em><span> &#8211; Fractional VP of Engineering, Series B, New York, US</span></em></p><p><span>&#8220;My team has been looking for a new engineering manager for three months and we barely had any good applicants. It&#8217;s a super weird dynamic right now.&#8221; </span><em><span>&#8211; Senior Infrastructure Engineer, Series D Fintech, company with offices in the US and EU</span></em></p><p><strong><span>&#8220;The most desirable candidates right now are EM or staff-level folks who can keep up with uncertainty in the business.</span></strong><span> We are having trouble hiring folks who roll with the constant change that is now very typical at startups.&#8221;</span><em><span> &#8211; CTO at a San Francisco-based startup</span></em></p></blockquote><h3><span>&#8220;Specialist&#8221; profiles are hard to recruit</span></h3><p><span>A few examples:</span></p><ul><li><p><strong><span>Distributed systems engineers: &#8220;</span></strong><span>We can&#8217;t find enough qualified distributed systems engineers, cloud infra etc. I have 20 reqs [open positions] right now.&#8221;</span><em><span> &#8211; Recruiter at a hyperscaler, US</span></em></p></li><li><p><strong><span>Product engineers: </span></strong><span>&#8220;&#8216;Product engineer&#8217; has been a hard profile to find. It is also hard to find someone with a decent design eye who can also build full stack. The hardest thing to hire for has been taste + trust&#8230; I&#8217;d rather hire someone who is &#8216;behind&#8217; on AI, but has great taste/judgment than someone with complex agent setups and prompt libraries.&#8221;</span><em><span> &#8211; Tech Lead, seed-stage startup, Los Angeles, US</span></em></p></li><li><p><strong><span>Senior engineers, in general: </span></strong><span>&#8220;As a hiring manager trying to hire seniors right now, it has felt pretty difficult. Most applicants are totally unqualified, and the qualified ones do poorly in an interview.&#8221;</span><em><span> &#8211; Engineering manager, robotics company, Canada</span></em></p></li></ul><h3><span>Silence for many</span></h3><p><span>One in five respondents detail how difficult it has been to get responses from recruiters:</span></p><blockquote><p><span>&#8220;Things are looking bleak. Now, applications are going into a void. Recruiters aren&#8217;t reaching out immediately as before. Of 10 or so applications sent out, I&#8217;ve gotten one interview scheduled that was then rescinded because it looks like the team was laid off.&#8221;</span><em><span> &#8211; Frontend engineer, 10+ YOE, Southeast US</span></em></p><p><span>&#8220;The job market has been a desert. I&#8217;ve gotten back into applying, job agencies seem to have few roles they&#8217;re looking to fill. The companies I have applied to myself, never reply.&#8221;</span><em><span> &#8211; Software Engineer, 8 YOE, Southern California</span></em></p><p><span>&#8220;Recruiters are ghosting me! Every time when I respond to recruiter reachouts, they ALL ghosted me after a few messages and have similar stories from friends.&#8221;</span><em><span> &#8211; Software Engineer, 7 YOE, ex-Meta, Switzerland</span></em></p><p><span>&#8220;So far, I have a hard time even getting past the hiring manager and I&#8217;m rejected before I can do the proper technical assessment.&#8221;</span><em><span> &#8211; Software Engineer, 7 YOE, Helsinki, Finland</span></em></p></blockquote><p><span>Even folks at Big Tech face a lack of response. Here&#8217;s a Technical Program Manager currently at Meta who used to be very in-demand:</span></p><blockquote><p><span>&#8220;I put a few feelers out when Meta announced layoffs, and it&#8217;s just radio silence. I don&#8217;t want to sound cocky, but with my resume, you at least get a chat with a recruiter, usually right away. But Google and Anthropic just ghosted me.&#8221;</span></p></blockquote><h2><span>4. Higher hiring bar &amp; lower compensation &#8211; but not for everyone</span></h2><p><span>In a &#8220;normal&#8221; market, when the hiring bar goes up, so does compensation. But we heard anecdotes about the hiring bar going up, with the compensation on offer trending down!</span></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/tech-jobs-market-in-2026-part-3-hiring">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How Kent Beck shapes the software engineering industry]]></title><description><![CDATA[Kent Beck reflects on Agile, TDD, and why building trust&#8212;not just generating code&#8212;will define the future of software engineering in the AI era.]]></description><link>https://newsletter.pragmaticengineer.com/p/how-kent-beck-shapes-the-software</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/how-kent-beck-shapes-the-software</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 01 Jul 2026 16:57:46 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/204178365/e73bf6c8428193078b8b6c4aaedcbba6.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/ddHQQtjIOpw">YouTube</a>, <a href="https://open.spotify.com/episode/3M6hgR5zBT4699tAceSHaG">Spotify</a></strong>, <strong>and <a href="https://podcasts.apple.com/us/podcast/how-kent-beck-shapes-the-software-engineering-industry/id1769051199?i=1000775036869">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YCsL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YCsL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 424w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 848w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1272w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YCsL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png" width="1280" height="80" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:80,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YCsL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 424w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 848w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1272w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><strong><span>&#8226; </span><a href="https://antithesis.com/pragmatic"><span>Antithesis</span></a><span>.</span></strong><span> If you&#8217;re using agents to code, the problem isn&#8217;t writing the code but making sure that nothing broke. Antithesis runs your whole system in a hostile environment and identifies hard-to-find bugs before users hit them in production. Teams like Jane Street, Fly.io, and the etcd community use agents safely and ship better code, faster, with Antithesis. </span><a href="https://antithesis.com/pragmatic"><span>Learn more.<br><br></span></a><strong><span>&#8226; </span><a href="https://workos.com/"><span>WorkOS</span></a></strong><span> &#8211; make your app and agents Enterprise Ready, with SSO, SCIM, RBAC, and more. </span><a href="https://workos.com/"><span>Get started.<br></span></a><strong><a href="https://workos.com/"><span><br></span></a><span>&#8226; </span><a href="http://turbopuffer.com/pragmatic"><span>turbopuffer</span></a><span>.</span></strong><span> A vector and full-text search engine built on object storage. It&#8217;s fast, cheap, and extremely scalable. It&#8217;s never been better to try it out: last week, they dropped their base price from $64 per month to $16 per month. </span><a href="http://turbopuffer.com/pragmatic"><span>Give it a spin now</span></a><span>.</span></p><h3><strong>In this episode</strong></h3><p><span>Few have made as big an impact on software engineering as this week&#8217;s guest on the Pragmatic Engineer podcast, Kent Beck. He created Extreme Programming, pioneered test-driven development (TDD), co-created JUnit, and is one of the authors of the famous &#8216;Agile Manifesto&#8217;. But these days, he&#8217;s re-examining many ideas for the age of AI, and says we&#8217;re failing to accumulate trust during this new era at the same high rate as new code is being accumulated.</span></p><p><span>Longtime readers will remember how Kent and I bonded over our co-authored article in our&nbsp;</span><a href="https://newsletter.pragmaticengineer.com/p/measuring-developer-productivity">response to McKinsey on measuring engineering productivity</a><span>, and Kent was on the podcast a year ago, talking&nbsp;</span><a href="https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent">about TDD and AI.</a><span> </span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tWh5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tWh5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png 424w, https://substackcdn.com/image/fetch/$s_!tWh5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png 848w, https://substackcdn.com/image/fetch/$s_!tWh5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png 1272w, https://substackcdn.com/image/fetch/$s_!tWh5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tWh5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png" width="1456" height="959" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:959,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tWh5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png 424w, https://substackcdn.com/image/fetch/$s_!tWh5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png 848w, https://substackcdn.com/image/fetch/$s_!tWh5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png 1272w, https://substackcdn.com/image/fetch/$s_!tWh5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609eb4ad-7a79-4bdd-958b-a7e01d9a062f_2048x1349.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>With Kent Beck, in the studio</em></figcaption></figure></div><p><strong><span>Today&#8217;s episode is the previously untold story of Kent&#8217;s remarkable career and how he became the industry legend he is today. </span></strong><span>We start with Kent&#8217;s journey from discovering Smalltalk in the early days of personal computing, to helping define modern software engineering practices. We explore the origins of TDD, design patterns, Extreme Programming, and Agile &#8211; along with some lessons learned at Apple and Facebook.</span></p><p><span>Kent explains why he believes software engineering is about </span><em><span>far more</span></em><span> than writing code, why no one yet knows exactly how engineers should work alongside AI agents, and how his &#8220;explore, expand, extract&#8221; framework can help engineers navigate major technology shifts.</span></p><h3>Key observations from Kent</h3><div id="youtube2-ddHQQtjIOpw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ddHQQtjIOpw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ddHQQtjIOpw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><span>Here are 12 rarely-told stories and observations from Kent:</span></p><p><strong><span>1. Coding is only a small part of software engineering &#8211; the rest can&#8217;t be automated.</span></strong><span> Kent rebuts the claim that coding &#8211; and eventually the whole software engineering craft &#8211; will vanish. He believes coding is only part of what we do, and a small part of it, too. Through your work, you also build confidence, make connections with other people, and develop your personal understanding of the domain. This will remain important, even if we develop our skills in other areas than coding.</span></p><p><strong><span>2. Lesser-known story: fired by Apple. </span></strong><span>Kent joined the tech giant in 1987, drawn in by Smalltalk, whose language was taking off at the time. Xerox had handed the language to a few companies to see who could run with it, and Apple was one. But Apple&#8217;s customers wanted C and Pascal compilers instead, so the Smalltalk project went nowhere. Kent joined a team building a programming language for kids, but says he was eventually fired because he was in &#8220;punk mode&#8221; and wanted to do things his own way, instead of being a team player.</span></p><p><strong><span>3. Kent used to keep a thesaurus close at hand. </span></strong><span>When working at Tektronix in the late 1980s with </span><a href="https://en.wikipedia.org/wiki/Ward_Cunningham"><span>Ward Cunningham</span></a><span> (the creator of the first wiki, and a pioneer in design patterns), they built HotDraw, a graphical editor with a boxes-and-arrows model. For naming core abstractions, Beck chose &#8220;drawing object,&#8221; &#8220;drawing handle,&#8221; etc. But Ward cared intensely about nomenclature and hunted for better vocabulary, so they kept a physical thesaurus which was well thumbed. Beck recalls they became pretty obsessed about the names of things.</span></p><p><strong><span>4. TDD wasn&#8217;t &#8216;invented&#8217; so much as &#8216;rediscovered&#8217; by Kent.</span></strong><span> As a kid, Kent read one of his father&#8217;s programming books from the tape-to-tape era, when an input tape like time cards was fed through a payroll program to produce an output tape, such as one with checks. The book&#8217;s advice was to take a real input tape and manually type the expected output tape before writing the program. He read this, didn&#8217;t understand it, and forgot about it.</span></p><p><span>Years later, Kent built SUnit, a small testing framework, and randomly remembered the input-tape trick, so mapped it onto SUnit. If he followed the pattern, he&#8217;d write the test before the code. He laughed out loud at this because it seemed like such a stupid idea: why write a test that&#8217;s guaranteed to fail, when the classes and methods aren&#8217;t even defined yet? But when he did, he found his anxiety about programming vanished. This is when he became a TDD convert.</span></p><p><strong><span>5. Kent invented Extreme Programming (XP) while on the Chrysler payroll project. </span></strong><span>Kent threw away a codebase that didn&#8217;t work and restarted the project with a new methodology. He paired with others, and used his own ideas for testing. Later, he coined the new  methodology&#8217;s name by deliberately picking one that he knew would be unpopular with the tech establishment of the day: &#8220;extreme programming&#8221; was born.</span></p><p><strong><span>6. The Agile Manifesto came together in a messy way. </span></strong><span>In 2001, a loose group of folks who rejected waterfall development gathered at Snowbird, Utah, to rethink programming. Kent recalls this summit proceeded badly as everyone pushed contradictory ideas. During a break, Martin Fowler and Jim Highsmith stayed behind, and when the others returned, they found the values written on the whiteboard. Kent&#8217;s contribution was the word &#8220;daily&#8221;: &#8220;Business people and developers must work together daily throughout the project.&#8221;</span></p><p><strong><span>7. Calling it &#8220;agile&#8221; was an error. </span></strong><span>Kent objected to the word &#8220;agile&#8221; at the time, and still does today, since nobody claims they prefer &#8220;rigid&#8221; development, and everyone says they&#8217;re &#8220;agile&#8221;, even when they&#8217;re not. He would&#8217;ve preferred a less spacious term, like with &#8220;extreme programming&#8221;: after all, it&#8217;s hard to call yourself an &#8220;extreme programmer&#8221; without actually following that methodology.</span></p><p><strong><span>8. The Dotcom Bust hit very hard. </span></strong><span>The day before the 9/11 terror attack in 2001, Kent had eight months of consulting work booked at top rates and was finishing work on a house in rural Oregon. The next day, everything was canceled, just as big bills fell due. He burned out into depression and was left unable to program for years, in what was a &#8220;lost decade.&#8221;</span></p><p><strong><span>9. At 50, Kent joined Facebook and realized nobody cared about testing or TDD. </span></strong><span>At Facebook, Kent found a company that barely did any form of unit testing, while running a massive, stable, and fast-growing site. He signed up to teach a TDD class at a hackathon &#8212; he wrote the book, after all! The classes either side of his in the schedule both filled up, but the TDD class got zero signups, not even a pity one. He made the decision to forget everything he knew and to relearn software engineering as it was at Facebook. In the end, he stayed seven years.</span></p><p><strong><span>10. Building software products has three phases: explore, expand, extract</span></strong><span>. This is Kent&#8217;s &#8220;3X&#8221; model. &#8216;Explore&#8217; means trying many cheap uncorrelated experiments, &#8216;expand&#8217; involves focusing on the one thing that&#8217;s working and overcoming obstacle after obstacle, while &#8216;extract&#8217; is a repeatable playbook and economies of scale. How you code, hire, and organize differs across each phase.</span></p><p><strong><span>11. Kent has always been an anxious programmer.</span></strong><span> He describes himself as chronically anxious because the more complex the code is, the more he knows it could break. This was the fuel behind testing and TDD, which are approaches designed to soothe an anxious mind.</span></p><p><strong><span>12. Kent sees himself as a &#8220;tree shaker, not a jelly maker.&#8221;</span></strong><span> He starts things like patterns, SUnit, JUnit, TDD, XP, 3X, then pushes them until they take off, before moving on to the next thing. It&#8217;s his defining trait, and may explain his enormous output, and also why he abandoned TDD just as it peaked.</span></p><p><strong><span>+1:</span></strong><span> </span><strong><span>The human part is the most important one in software engineering. </span></strong><span>As Kent explained:</span></p><blockquote><p><span>&#8220;This is the biggest cosmic, practical joke ever. As young people, we were promised: &#8220;Okay, here&#8217;s this computer and once you&#8217;ve completely understand this computer, you&#8217;ll be fine. That&#8217;s all you need to do.&#8221;<br><br>So I set out the first part of my career just to become the best programmer that I could be because that&#8217;s what it would take to be successful. And then you realize: sorry, there&#8217;s this whole human side. Your ability to affect change in the world is gated by your ability to communicate with, to soothe, to understand other human beings. And those are exactly the skills that I thought I didn&#8217;t need to learn!<br><br>So I was promised: just understand the computer and you&#8217;ll be successful. And then someone went &#8220;just kidding, understand people!&#8221; And now I was in a position of being ten years behind.&#8221;</span></p></blockquote><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><ul><li><p><a href="https://newsletter.pragmaticengineer.com/p/measuring-developer-productivity"><span>Measuring developer productivity? A response to McKinsey</span></a><span> &#8211; co-written with Kent Beck</span></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent"><span>TDD, AI agents and coding with Kent Beck</span></a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/paying-down-tech-debt"><span>Paying down tech debt</span></a></p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/the-past-and-future-of-backend-practices"><span>The past and future of modern backend practices</span></a></p></li></ul><h3><strong>Timestamps</strong></h3><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw">00:00</a> Intro</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=227s">03:47</a> Human engineers aren&#8217;t going away</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=480s">08:00</a> Kent&#8217;s path into tech</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=830s">13:50</a> Undergraduate and graduate studies</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=1041s">17:21</a> Kent&#8217;s first programming job</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=1134s">18:54</a> The rise and fall of Smalltalk</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=1624s">27:04</a> Working with Ward Cunningham</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=2256s">37:36</a> Design patterns</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=2645s">44:05</a> Working at Apple</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=3068s">51:08</a> CRC Cards</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=3569s">59:29</a> Testing tools in the language</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=3862s">1:04:22</a> The C3 project with Martin Fowler</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=4194s">1:09:54</a> Extreme Programming</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=4585s">1:16:25</a> Developing TDD</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=5107s">1:25:07</a> Writing the Agile Manifesto</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=5400s">1:30:00</a> Agile&#8217;s impact</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=5560s">1:32:40</a> Agile&#8217;s downside</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=5852s">1:37:32</a> The Dotcom Bust</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=6270s">1:44:30</a> Lessons from working at Facebook</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=7184s">1:59:44</a> Kent&#8217;s &#8216;Good to Great&#8217; program at Facebook</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=7567s">2:06:07</a> Soft skills engineers need to learn</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=7770s">2:09:30</a> AI and the challenges of acceleration</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=8153s">2:15:53</a> Explore, expand, extract</p><p><a href="https://www.youtube.com/watch?v=ddHQQtjIOpw&amp;t=8553s">2:22:33</a> What Kent is excited about</p><h3><strong>References</strong></h3><p><strong><span>Where to find Kent Beck:</span></strong></p><p><span>&#8226; X: </span><a href="https://x.com/kentbeck"><span>https://x.com/kentbeck</span></a></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/kentbeck/"><span>https://www.linkedin.com/in/kentbeck</span></a></p><p><span>&#8226; Website: </span><a href="https://kentbeck.com">https://kentbeck.com</a></p><p><span>&#8226; GitHub: </span><a href="https://github.com/kentbeck"><span>https://github.com/kentbeck</span></a></p><p><span>&#8226;  Newsletter: </span></p><div class="embedded-publication-wrap" data-attrs="{&quot;id&quot;:256838,&quot;embedding_publication_id&quot;:null,&quot;name&quot;:&quot;Software Design: Tidy First?&quot;,&quot;logo_url&quot;:null,&quot;base_url&quot;:&quot;https://newsletter.kentbeck.com&quot;,&quot;hero_text&quot;:&quot;Software design is an exercise in human relationships. So are all the other techniques we use to develop software. How can we geeks get better at technique as one way of getting better at relationships?&quot;,&quot;author_name&quot;:&quot;Kent Beck&quot;,&quot;show_subscribe&quot;:true,&quot;logo_bg_color&quot;:&quot;#ffffff&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPublicationToDOMWithSubscribe"><div class="embedded-publication show-subscribe"><a class="embedded-publication-link-part" native="true" href="https://newsletter.kentbeck.com?utm_source=substack&amp;utm_campaign=publication_embed&amp;utm_medium=web"><span class="embedded-publication-name">Software Design: Tidy First?</span><div class="embedded-publication-hero-text">Software design is an exercise in human relationships. So are all the other techniques we use to develop software. How can we geeks get better at technique as one way of getting better at relationships?</div><div class="embedded-publication-author-name">By Kent Beck</div></a><form class="embedded-publication-subscribe" method="GET" action="https://newsletter.kentbeck.com/subscribe?"><input type="hidden" name="source" value="publication-embed"><input type="hidden" name="autoSubmit" value="true"><input type="email" class="email-input" name="email" placeholder="Type your email..."><input type="submit" class="button primary" value="Subscribe"></form></div></div><p><strong>Mentions during the episode:</strong></p><p><span>&#8226; TDD, AI agents and coding with Kent Beck:</span><a href="https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent"><span> https://newsletter.pragmaticengineer.com/p/tdd-ai-agents-and-coding-with-kent</span></a></p><p><span>&#8226; Anthropic CEO Predicts AI Will End Coding and Software Engineering:</span></p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/GergelyOrosz/status/2048454331645481034&quot;,&quot;full_text&quot;:&quot;The only people who believe any of this are non-coders.\n\nI tried to build a game (an area I&#8217;m an n00b in.) The results are amusingly disastrous - I never before coded a decent game.\n\nBut I&#8217;ll crack out backend services w AI rapidly - because I coded dozens of them before&#8230;&quot;,&quot;username&quot;:&quot;GergelyOrosz&quot;,&quot;name&quot;:&quot;Gergely Orosz&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/673095429748350976/ei5eeouV_normal.png&quot;,&quot;date&quot;:&quot;2026-04-26T17:29:05.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{&quot;full_text&quot;:&quot;Anthropic CEO (Dario Amodei):\n\n\&quot;Coding is going away first, then all of software engineering.\&quot;\n\nWhat do you think about this?&quot;,&quot;username&quot;:&quot;aiedge_&quot;,&quot;name&quot;:&quot;AI Edge&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1910271186442846208/vrYKSYRn_normal.jpg&quot;},&quot;reply_count&quot;:345,&quot;retweet_count&quot;:493,&quot;like_count&quot;:6714,&quot;impression_count&quot;:791521,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><span>&#8226; </span><em><span>Extreme Programming Explained: Embrace Change</span></em><span>:</span><a href="https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658"><span> https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658</span></a></p><p><span>&#8226; </span><em><span>Tidy First?: A Personal Exercise in Empirical Software Design</span></em><span>:</span><a href="https://www.amazon.com/Tidy-First-Personal-Exercise-Empirical/dp/1098151240"><span> https://www.amazon.com/Tidy-First-Personal-Exercise-Empirical/dp/1098151240</span></a></p><p><span>&#8226; </span><em><span>Test Driven Development: By Example</span></em><span>:</span><a href="https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530"><span> https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530</span></a></p><p><span>&#8226; Tektronics:</span> <a href="https://www.tek.com/">https://www.tek.com/</a></p><p><span>&#8226; Ward Cunningham on LinkedIn:</span><a href="https://www.linkedin.com/in/wardcunningham"><span> https://www.linkedin.com/in/wardcunningham</span></a></p><p><span>&#8226; Design Principles Behind Smalltalk:</span><a href="https://www.cs.virginia.edu/~evans/cs655/readings/smalltalk.html"><span> https://www.cs.virginia.edu/~evans/cs655/readings/smalltalk.html</span></a></p><p><span>&#8226; Kotlin: </span><a href="https://kotlinlang.org">https://kotlinlang.org</a></p><p><span>&#8226; Swift: </span><a href="https://www.swift.org">https://www.swift.org</a></p><p><span>&#8226; Prolog:</span><a href="https://en.wikipedia.org/wiki/Prolog"><span> https://en.wikipedia.org/wiki/Prolog</span></a></p><p><span>&#8226; The Timeless Way of Building:</span><a href="https://www.amazon.com/Timeless-Way-Building-Christopher-Alexander/dp/0195024028"><span> https://www.amazon.com/Timeless-Way-Building-Christopher-Alexander/dp/0195024028</span></a></p><p><span>&#8226; Notes on the Synthesis of Form:</span><a href="https://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbacks/dp/0674627512"><span> https://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbacks/dp/0674627512</span></a></p><p><span>&#8226; Larry Tesler:</span><a href="https://en.wikipedia.org/wiki/Larry_Tesler"><span> https://en.wikipedia.org/wiki/Larry_Tesler</span></a></p><p><span>&#8226; PARC:</span><a href="https://en.wikipedia.org/wiki/PARC_(company)"><span> https://en.wikipedia.org/wiki/PARC_(company)</span></a></p><p><span>&#8226; August 1981 issue of Byte featuring Smalltalk:</span><a href="https://vintageapple.org/byte/pdf/198108_Byte_Magazine_Vol_06-08_Smalltalk.pdf"><span> https://vintageapple.org/byte/pdf/198108_Byte_Magazine_Vol_06-08_Smalltalk.pdf</span></a></p><p><span>&#8226; Class-responsibility-collaboration (CRC) cards:</span><a href="https://en.wikipedia.org/wiki/Class-responsibility-collaboration_card"><span> https://en.wikipedia.org/wiki/Class-responsibility-collaboration_card</span></a></p><p><span>&#8226; MasPar:</span><a href="https://en.wikipedia.org/wiki/MasPar"><span> https://en.wikipedia.org/wiki/MasPar</span></a></p><p><span>&#8226; Cray:</span><a href="https://en.wikipedia.org/wiki/Cray"><span> https://en.wikipedia.org/wiki/Cray</span></a></p><p><span>&#8226; JUnit:</span><a href="https://en.wikipedia.org/wiki/JUnit"><span> https://en.wikipedia.org/wiki/JUnit</span></a></p><p><span>&#8226; Erich Gamma:</span><a href="https://en.wikipedia.org/wiki/Erich_Gamma"><span> https://en.wikipedia.org/wiki/Erich_Gamma</span></a></p><p><span>&#8226; OOPSLA:</span><a href="https://en.wikipedia.org/wiki/OOPSLA"><span> https://en.wikipedia.org/wiki/OOPSLA</span></a></p><p><span>&#8226; C3:</span><a href="https://www.martinfowler.com/bliki/C3.html"><span> https://www.martinfowler.com/bliki/C3.html</span></a></p><p><span>&#8226; How AI will change software engineering &#8211; with Martin Fowler:</span><a href="https://newsletter.pragmaticengineer.com/p/martin-fowler"><span> https://newsletter.pragmaticengineer.com/p/martin-fowler</span></a></p><p><span>&#8226; Cycles of disruption in the tech industry: with software pioneers Kent Beck &amp; Martin Fowler:</span><a href="https://newsletter.pragmaticengineer.com/p/cycles-of-disruption-in-the-tech"><span> https://newsletter.pragmaticengineer.com/p/cycles-of-disruption-in-the-tech</span></a></p><p><span>&#8226; The third golden age of software engineering &#8211; thanks to AI, with Grady Booch:</span><a href="https://newsletter.pragmaticengineer.com/p/the-third-golden-age-of-software"><span> https://newsletter.pragmaticengineer.com/p/the-third-golden-age-of-software</span></a></p><p><span>&#8226; Ivar Jacobson&#8217;s website: </span><a href="https://www.ivarjacobson.com">https://www.ivarjacobson.com</a></p><p><span>&#8226; James Rumbaugh:</span><a href="https://en.wikipedia.org/wiki/James_Rumbaugh"><span> https://en.wikipedia.org/wiki/James_Rumbaugh</span></a></p><p><span>&#8226; Ron Jeffries&#8217; website: </span><a href="https://ronjeffries.com">https://ronjeffries.com</a></p><p><span>&#8226; The Agile Manifesto:</span><a href="https://agilealliance.org/agile101/the-agile-manifesto"><span> https://agilealliance.org/agile101/the-agile-manifesto</span></a></p><p><span>&#8226; Jim Highsmith on LinkedIn:</span><a href="https://www.linkedin.com/in/jhighsmith"><span> https://www.linkedin.com/in/jhighsmith</span></a></p><p><span>&#8226; Gusto: </span><a href="https://gusto.com">https://gusto.com</a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[Impressions from visiting OpenAI, Anthropic, & Cursor]]></title><description><![CDATA[A peek into where software engineering is headed from inside the sector&#8217;s leading AI labs. Agents running in the cloud are a major trend, while coding harnesses are spreading beyond the craft]]></description><link>https://newsletter.pragmaticengineer.com/p/impressions-from-visiting-openai</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/impressions-from-visiting-openai</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 30 Jun 2026 17:21:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JLz_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>Scheduling note: this week, I&#8217;m in San Francisco at the </span><a href="https://www.ai.engineer/worldsfair/2026"><span>AI Engineer&#8217;s World Fair</span></a><span>, so there won&#8217;t be an edition of The Pulse on Thursday. However, tomorrow (Wednesday) there will be a special podcast episode &#8211; the lengthiest, most detailed one yet &#8211; with software engineering legend, Kent Beck.</span></em></p><p><span>In recent days, I&#8217;ve visited the offices of OpenAI, Anthropic, and Cursor, in San Francisco. Onsite, I talked with software folks working on the model side to learn more about how their way of building software is changing. This article is based on observations from those visits, including some new developments that I reckon may be adopted industry-wide.</span></p><p><span>We cover:</span></p><ol><li><p><strong><span>Next mega-trend? Agents running in the cloud to go mainstream. </span></strong><span>OpenAI, Anthropic, and Cursor are all-in on cloud agents and expect demand for them to increase massively.</span></p></li><li><p><strong><span>Mass adoption of coding harnesses by non-developers.</span></strong><span> At OpenAI, more than 95% of non-engineers use Codex, not ChatGPT. Is it a sign of things to come across tech?</span></p></li><li><p><strong><span>Will the main task of engineers be to make agents more efficient? </span></strong><span>Ever more engineering work is about building environments for agents to execute more efficiently at Anthropic and Cursor.</span></p></li><li><p><strong><span>Next trend? Companies aggressively optimize spend-per-token. </span></strong><span>AI spending by software engineers is so high that it makes sense for platform teams to slash per-token cost. A case study from Coinbase.</span></p></li></ol><h2><span>1. Next mega-trend? Agents running in the cloud to go mainstream</span></h2><p><span>Last week, Andrej Karpathy employed the phrase &#8220;new paradigm&#8221; to describe using Claude Tag &#8211; a way to mention Claude in Slack and have it kick off tasks &#8211; to work with AI:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3smK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3smK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png 424w, https://substackcdn.com/image/fetch/$s_!3smK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png 848w, https://substackcdn.com/image/fetch/$s_!3smK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png 1272w, https://substackcdn.com/image/fetch/$s_!3smK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3smK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png" width="1180" height="1044" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1044,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3smK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png 424w, https://substackcdn.com/image/fetch/$s_!3smK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png 848w, https://substackcdn.com/image/fetch/$s_!3smK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png 1272w, https://substackcdn.com/image/fetch/$s_!3smK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6848d9d-a3c8-4486-8d7d-9d2ee55edd85_1180x1044.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Andrej Karpathy </span><a href="https://x.com/karpathy/status/2069547676849557725?s=20"><span>on X</span></a></em></figcaption></figure></div><p><span>There was plenty of pushback against this claim on social media; after all, it&#8217;s </span><em><span>just</span></em><span> a Slack integration with Claude, right? I also thought this until I asked </span><a href="https://www.linkedin.com/in/david-hershey/"><span>David Hershey</span></a><span> at Anthropic&#8217;s Applied AI unit about it while visiting the company&#8217;s offices. He explained in detail what makes this particular Slack integration different from using something like Claude Code:</span></p><ul><li><p><strong><span>No additional setup. </span></strong><span>For Claude Code to work well, it should be connected to internal MCP servers, with the right </span><a href="https://code.claude.com/docs/en/skills"><span>skills</span></a><span> on your local machine. Of course, at larger companies this setup is at least partially automated, but devs often need to do tweaking.</span></p></li><li><p><strong><span>No &#8220;tool context-switching.</span></strong><span>&#8221; Just mention it in Slack! Of course, opening Claude Code is not a big effort, but it&#8217;s still more work than just typing it out in Slack, and kicking off work.</span></p></li><li><p><strong><span>Routine work made easier.</span></strong><span> David has &#8220;Claude playing Pok&#233;mon&#8221; as his side project. Every time a new model comes out, he kicks off a run of his script on it. Previously, this took a few minutes to set up every time, and then it ran on his machine for hours. With this new Slack integration, it&#8217;s just one command.</span></p></li></ul><p><span>My sense is that the excitement here is less about the Slack integration itself, and more to do with the fact that it&#8217;s easy to kick off one or more AIs that no longer run on a local machine. You can skip the setup entirely.</span></p><p><strong><span>&#8216;Claude Managed Agents&#8217; is a big focus at Anthropic.</span></strong><span> While there, I met Katelyn Lesse, head of engineering for Claude Platform, who explained that </span><a href="https://www.anthropic.com/engineering/managed-agents"><span>Claude Managed Agents</span></a><span> is a large, complex project which her team built over a six-month period. It&#8217;s a hosted service to execute long-running agents on various cloud providers.</span></p><h3><span>Cloud agents are the &#8220;big deal&#8221;, not the Slack integration</span></h3><p><span>Also last week, I had the opportunity to attend a private AI builders event, where Peter Steinberger discussed his workflow.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JLz_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JLz_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JLz_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JLz_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JLz_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JLz_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JLz_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JLz_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JLz_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JLz_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17f00be6-8fd8-474c-9e1f-9dab109ef86f_2048x1536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Peter Steinberger covers how he uses AI coding agents</figcaption></figure></div><p><span>He talked about how he has gotten really tired of having several OpenClaw agents running on his local machine, which heat up the CPU and slow down his whole system. So, he built </span><a href="https://crabbox.sh/"><span>Crabbox</span></a><span> as a way to run OpenClaw agents in the cloud:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bJdZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bJdZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png 424w, https://substackcdn.com/image/fetch/$s_!bJdZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png 848w, https://substackcdn.com/image/fetch/$s_!bJdZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!bJdZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bJdZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png" width="1456" height="1045" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1045,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bJdZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png 424w, https://substackcdn.com/image/fetch/$s_!bJdZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png 848w, https://substackcdn.com/image/fetch/$s_!bJdZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!bJdZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8899addf-5c9d-4382-a501-8b27fe4e20e1_2048x1470.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Crabbox: remote agents for OpenClaw</span></em></figcaption></figure></div><p><span>Suddenly, the same solution of cloud agents has emerged in separate places &#8211; at Anthropic and with Peter&#8217;s OpenClaw &#8211; in response to issues caused by locally-running agents. I also learned that cloud agents are becoming a big deal at OpenAI and Cursor, too.</span></p><h3><span>OpenAI bets big on Cloud Agents</span></h3><p><span>OpenAI acquired Ona, (formerly Gitpod), the leader in cloud development environments (CDEs). Back in 2021, CDEs were built for developers to develop software faster, and they also happen to be the perfect primitive for agents to run in a sandboxed cloud environment. From the </span><a href="https://openai.com/index/openai-to-acquire-ona/"><span>acquisition announcement by OpenAI</span></a><span> (emphasis mine):</span></p><blockquote><p><span>&#8220;As Codex becomes more capable, its most valuable work is unfolding over hours or days, rather than minutes. </span><strong><span>We believe people should be able to delegate more ambitious work without remaining tied to the machine where it began. </span></strong><span>The work should continue beyond the initial session, with Codex making it possible to stay connected and check progress, provide direction, make decisions, and review results from anywhere.</span></p><p><span>Ona will help us do that. Its technology provides secure, persistent environments where agents can access the tools, systems, and context they need to make progress over time.</span></p><p><span>By bringing Ona to OpenAI, we will expand Codex beyond work tied to a single device or active session and help more organizations deploy agents securely in production.&#8220;</span></p></blockquote><p><span>At OpenAI&#8217;s offices, I asked engineers there if their focus is shifting to cloud-based agents. Their answer: it very much is. This is a fairly recent development and they&#8217;re hiring engineers for the Cloud Agents team. Here&#8217;s </span><a href="https://openai.com/careers/software-engineer-cloud-agents-san-francisco/"><span>one job ad</span></a><span> that&#8217;s currently live:</span></p><blockquote><p><span>&#8220;We are looking for an experienced software engineer to help build and scale our cloud agent platform. You will design and operate systems for orchestrating agents at scale. You will work closely with product engineers on ChatGPT, API, and Codex to define the right abstractions and enable them to ship products quickly. Strong backend or infrastructure experience is important; experience with Python, Rust, distributed systems, cloud infrastructure, or product platforms is especially helpful.&#8221;</span></p></blockquote><h3><span>Cursor: running agents in the cloud is the future</span></h3><p><span>At Cursor, I spent an hour with cofounder Sualeh Asif (formerly the CTO, now Chief Product Officer). Cursor </span><a href="https://cursor.com/docs/cloud-agent"><span>released Cloud Agents</span></a><span> at the end of last year, and is starting to focus a lot more on this area. Sualeh revealed some interesting details about working with cloud agents:</span></p><ul><li><p><strong><span>Agents in the cloud don&#8217;t have a way to &#8220;complain.&#8221; </span></strong><span>With running an agent locally, when it gets warnings or errors, it surfaces them to a human in its response, who instructs it to do X or Y. However, there&#8217;s no such loop for a long-running task on the cloud! Cursor came up with the idea for the model &#8220;confess&#8221; in regular interviews, and the &#8220;confessions&#8221; are shared with the infra team to improve the agents&#8217; environment.</span></p></li><li><p><strong><span>Long-running agents have their own challenges. </span></strong><span>What happens when a node terminates, midway through; how do you move agent execution from one node to the other? There are new, nontrivial engineering challenges the team needs to solve.</span></p></li></ul><p><span>Only yesterday, (Monday, 29 June), Cursor </span><a href="https://cursor.com/blog/ios-mobile-app#handoff-between-local-and-cloud"><span>launched</span></a><span> its iOS app that enables the building of software from anywhere.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4sZw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4sZw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png 424w, https://substackcdn.com/image/fetch/$s_!4sZw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png 848w, https://substackcdn.com/image/fetch/$s_!4sZw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png 1272w, https://substackcdn.com/image/fetch/$s_!4sZw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4sZw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png" width="930" height="588" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:588,&quot;width&quot;:930,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4sZw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png 424w, https://substackcdn.com/image/fetch/$s_!4sZw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png 848w, https://substackcdn.com/image/fetch/$s_!4sZw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png 1272w, https://substackcdn.com/image/fetch/$s_!4sZw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa37878e-12ce-4277-bca0-47eb6afd9fe6_930x588.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Building software on a smartphone needs cloud agents. Source: </span><a href="https://cursor.com/blog/ios-mobile-app"><span>Cursor</span></a></em></figcaption></figure></div><p><span>This product is built on top of cloud agents to allow for long-running tasks, the company said:</span></p><blockquote><p><span>&#8220;Cloud agents run in isolated virtual machines with full development environments to test, verify, and demo work. Since they operate asynchronously with their own tools and resources, cloud agents can run for longer and iterate toward merge-ready PRs without intervention.</span></p><p><span>To take advantage of these capabilities, send a local plan to a cloud agent or move active agents to the cloud to keep running. You can move the cloud session back to your computer to test changes locally before merging&#8221;.</span></p></blockquote><h3><span>Why are cloud agents suddenly a thing?</span></h3><p><span>It figures that running AI agents in the cloud is practical: there&#8217;s less setup involved, several can run in parallel, and the cloud is a better, more convenient place for long-running agents than a personal laptop is; i.e., having to keep the lid open even when walking around the office.</span></p><p><span>But why is this happening now? My hypothesis is that a mix of factors are at play:</span></p><ul><li><p><strong><span>Coding models got &#8216;good enough&#8217;. </span></strong><span>Before Opus 4.5 / GPT-5.4, AI models could not really code autonomously, so running them for long tasks was pointless!</span></p></li><li><p><strong><span>Infra for AI coding agents has matured. </span></strong><span>Ways of giving more context to agents have improved: things like MCP and skills became mainstream and better understood.</span></p></li><li><p><strong><span>The context window is bigger.</span></strong><span> Today&#8217;s models have context windows of up to 1 million tokens, meaning that more complex instructions, code, and context can be passed in. It&#8217;s hard to have agents run for a longer time without access to a large context window.</span></p></li><li><p><strong><span>Cloud providers have much more GPU capacity. </span></strong><span>Every cloud provider has been building GPU clusters in the last few years, and now there&#8217;s enough that these AI agents can make use of this infra.</span></p></li></ul><h2><span>2. Mass adoption of coding harnesses by non-developers?</span></h2><p><span>At OpenAI, I also met </span><a href="https://x.com/ajambrosino"><span>Andrew Ambrosino</span></a><span>, who was the first engineer on the Codex team. Our time together got off to an ideal start, with Andrew saying he needed to show me something incredible:</span></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/impressions-from-visiting-openai">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Tech interviews with NeetCode]]></title><description><![CDATA[NeetCode shares his journey from Amazon and Google to building a startup, and why deep expertise still matters in the age of AI.]]></description><link>https://newsletter.pragmaticengineer.com/p/tech-interviews-with-neetcode</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/tech-interviews-with-neetcode</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 24 Jun 2026 17:32:34 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/203299374/cca1f76cadc9b2226221a725cb53ec03.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/xafwfGVBxos">YouTube</a>, <a href="https://open.spotify.com/episode/7rZyX6V3Fc3U4nKe8J0Jih">Spotify</a></strong>, <strong>and <a href="https://podcasts.apple.com/us/podcast/tech-interviews-with-neetcode/id1769051199?i=1000774074969">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n08S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n08S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png 424w, https://substackcdn.com/image/fetch/$s_!n08S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png 848w, https://substackcdn.com/image/fetch/$s_!n08S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png 1272w, https://substackcdn.com/image/fetch/$s_!n08S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n08S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png" width="1456" height="127" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4aa00181-983e-4747-8240-67654eae98f4_1600x140.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:127,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32913,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/203299374?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n08S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png 424w, https://substackcdn.com/image/fetch/$s_!n08S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png 848w, https://substackcdn.com/image/fetch/$s_!n08S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png 1272w, https://substackcdn.com/image/fetch/$s_!n08S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa00181-983e-4747-8240-67654eae98f4_1600x140.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><strong><span>&#8226; </span><a href="https://antithesis.com/pragmatic"><span>Antithesis</span></a></strong><span> &#8211; If you&#8217;re using agents to code, the problem isn&#8217;t writing the code but making sure it didn&#8217;t break anything. Antithesis runs your whole system in a hostile environment and identifies hard-to-find bugs before users hit them in production. With Antithesis, teams like Jane Street, Fly.io, and the etcd community use agents safely and ship better code, faster. </span><a href="https://antithesis.com/pragmatic"><span>Learn more.</span></a></p><p><strong><span>&#8226; </span><a href="http://sentry.io/pragmatic"><span>Sentry</span></a></strong><span> &#8211; application monitoring software built by developers, for developers. Sentry&#8217;s </span><a href="https://sentry.io/lp/seer/utm_source=pragmatic&amp;utm_medium=paid-community&amp;utm_campaign=ai-fy27q1-seerlaunch&amp;utm_content=recording-coreread-freetrial&amp;code=pragmatic"><span>Seer AI agent</span></a><span> is growing on me, as a way to debug errors faster. Same with Sentry&#8217;s MCP server. </span><a href="http://sentry.io/pragmatic"><span>Check out Sentry</span></a><span>.</span></p><p><strong><span>&#8226; </span><a href="https://cloud.google.com/run?e=48754805&amp;utm_source=&amp;utm_medium=&amp;utm_campaign=the_pragmatic_engineer"><span>Google Cloud Run</span></a></strong><span> &#8211; a fully managed platform that runs your code directly on top of Google&#8217;s scalable infrastructure. Run frontend and backend services, batch jobs, host LLMs, and agents without managing infrastructure. Oh, it has automatic zonal failover out of the box &#8211; something that Coinbase </span><a href="https://blog.pragmaticengineer.com/coinbase-fail/"><span>could have used</span></a><span> a few weeks back! </span><a href="https://cloud.google.com/run?e=48754805&amp;utm_source=&amp;utm_medium=&amp;utm_campaign=the_pragmatic_engineer"><span>Get started</span></a><span>.</span></p><h3><strong>In this episode</strong></h3><p><span>Navdeep Singh &#8211; oftentimes better known as NeetCode &#8211; is the creator of NeetCode.io, one of the most popular coding interview preparation platforms and YouTube channels for software engineers. Before building NeetCode full-time, he worked as a software engineer at Amazon and Google.</span></p><p><span>In this episode of The Pragmatic Engineer, I sit down with Navi to discuss his path from Amazon and Google to building his own startup, why he left Amazon after just two months, what he learned at Google, and the decision to leave a stable engineering career to bet on himself. We also discuss what coding interview preparation teaches beyond passing interviews, the value of going deep on difficult problems, and why systems thinking and domain expertise remain essential engineering skills in the age of AI.</span></p><p><span>Throughout the conversation, NeetCode makes the case that learning hard things is one of the </span><em><span>single best </span></em><span>investments an engineer can make, helping build the judgment and expertise that remain valuable no matter how the tools change.</span></p><h3>Key observations from Navi</h3><p><span>Here are 10 interesting takeaways from our chat:</span></p><div id="youtube2-xafwfGVBxos" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xafwfGVBxos&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xafwfGVBxos?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong><span>1. Companies have no real method for evaluating engineers &#8211; and likely never did</span></strong><span>. </span>Navi<span> believes the leetcode-style interview process has persisted because it scales well at large tech companies that need to train hundreds or thousands of interviewers, not because it predicts job performance well.</span></p><p><strong><span>2. The CAP theorem&#8217;s &#8220;two-out-of-three&#8221; framing is widely taught, but technically shaky.</span></strong><span> </span>Navi<span> believes this theory of distributed data systems is incomplete, and says he felt validated when researcher and author Martin Kleppmann </span><a href="https://martin.kleppmann.com/2015/09/17/critique-of-the-cap-theorem.html"><span>criticized it</span></a><span>. It&#8217;s a reminder to think independently and not accept theories without understanding them.</span></p><p><strong><span>3. Amazon&#8217;s intense culture left </span>Navi<span> reluctant to ask questions &#8211; which paradoxically, helped at Google.</span></strong><span> In </span>Navi&#8217;s<span> first job, he got used to working alone and not seeking help when needed, and continued this working style at Google. His manager there interpreted that behavior as independence, and as a result, he won rapid promotion from L3 to L4 (mid-level engineering role).</span></p><p><strong><span>4. The </span><a href="https://www.youtube.com/c/neetcode"><span>NeetCode</span></a><span> YouTube channel took off after he said he&#8217;d have to post less. </span></strong><span>Before viewers knew </span>Navi<span> had got a software engineering job at Google, his audience was small. But it turned out that announcing he&#8217;d have to post less for this reason boosted his channel! Suddenly, lots of people wanted to know how he&#8217;d landed the role.</span></p><p><strong><span>5. Cheating tools are helping to resurrect in-person, whiteboard interviews at Google. </span>Navi</strong><span> notes Google has restarted onsite coding interviews because it&#8217;s the only way interviewers can be sure that candidates aren&#8217;t using AI-powered cheating tools which make data structure and algorithms (DSA) interviews easy to pass.</span></p><p><strong><span>6. </span>Navi<span> finds AI most valuable as a tech debt and refactoring assistant. </span></strong><span>He&#8217;s using AI to clean up years&#8217; worth of low-quality code on NeetCode&#8217;s backend, which also validates the decision to take shortcuts in the knowledge they can be corrected later.</span></p><p><strong><span>7. &#8216;Effort&#8217; is becoming the differentiator as AI makes everything else cheap.</span></strong><span> </span>Navi<span> says how you can prompt almost anything, but the capacity to be engaged with and care about your work, and to defend decisions you make, cannot be prompted by an AI tool. These depend on personal qualities like effort and dedication.</span></p><p><strong><span>8. Announcements of the death of coding are exaggerated. </span></strong><span>Despite dramatic improvements in the performance of AI models, </span>Navi<span> does not foresee the majority of engineers being laid off. In fact, he sees the opposite: devs are busier than ever.</span></p><p><strong><span>9. Humans are likely to remain better at weighing up tradeoffs than LLMs are. </span></strong><span>It&#8217;s a fact that LLMs have become a lot better at coding, but </span>Navi<span> doubts they will be much help in decisions involving judgments about tradeoffs.</span></p><p><strong><span>10. When hiring for NeetCode, personality traits and motivation matter more than coding skill. </span></strong>Navi&#8217;s<span> best recent hire is still an undergrad with little coding experience, but does exceptionally well thanks to possessing high agency. </span>Navi<span> says: &#8220;even if they have no idea how to start it, by a week later, they&#8217;ll have learned everything about it.&#8221;</span></p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/learnings-from-conducting-1000-interviews"><span>Learnings from conducting ~1,000 interviews at Amazon</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/how-to-get-unstuck-during-coding-interviews"><span>How experienced engineers get unstuck in coding interviews</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/the-reality-of-tech-interviews"><span>The Reality of Tech Interviews in 2025</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/tech-hiring-inflection-point"><span>Tech hiring: is this an inflection point?</span></a></p><p><span>&#8226; </span><a href="https://newsletter.pragmaticengineer.com/p/ai-fakers"><span>AI fakers exposed in tech dev recruitment: postmortem</span></a></p><h3><strong>Timestamps</strong></h3><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos">00:00</a> Intro</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=177s">02:57</a> Navi&#8217;s take on coding interviews</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=401s">06:41</a> Getting into tech</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=536s">08:56</a> Why Navi isn&#8217;t a fan of the CAP theorem</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=792s">13:12</a> Quitting Amazon after two months</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=1102s">18:22</a> Google vs Amazon</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=1346s">22:26</a> The origins of NeetCode</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=1527s">25:27</a> Leaving Google to go all in on NeetCode</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=1922s">32:02</a> Why Navi doesn&#8217;t fix every bug</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=2366s">39:26</a> The value of coding interview prep</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=2577s">42:57</a> Systems thinking and domain expertise</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=2848s">47:28</a> Hiring at Big Tech</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=3135s">52:15</a> Tech stack at Neetcode</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=3477s">57:57</a> The NeetCode redesign contest</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=3706s">1:01:46</a> The future of software engineers</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=4144s">1:09:04</a> Hot takes: AGI, AI skill erosion, personality traits</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=4969s">1:22:49</a> &#8220;Maybe some people should just give up&#8221;</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=5079s">1:24:39</a> How to be a standout engineer</p><p><a href="https://www.youtube.com/watch?v=xafwfGVBxos&amp;t=5275s">1:27:55</a> Book recommendation</p><h3><strong>References</strong></h3><p><strong><span>Where to find Navdeep Singh (NeetCode):</span></strong></p><p><span>&#8226; X: </span><a href="https://x.com/neetcode1"><span>https://x.com/neetcode1</span></a></p><p><span>&#8226; LinkedIn: </span><a href="https://www.linkedin.com/in/navdeep-singh-3aaa14161"><span>https://www.linkedin.com/in/navdeep-singh-3aaa14161</span></a></p><p><span>&#8226; YouTube: </span><a href="https://www.youtube.com/c/neetcode"><span>https://www.youtube.com/c/neetcode</span></a></p><p><span>&#8226; Website: </span><a href="https://neetcode.io">https://neetcode.io</a></p><p><strong>Mentions during the episode:</strong></p><p><span>&#8226; A critique of the CAP theorem: </span><a href="https://martin.kleppmann.com/2015/09/17/critique-of-the-cap-theorem.html"><span>https://martin.kleppmann.com/2015/09/17/critique-of-the-cap-theorem.html</span></a></p><p><span>&#8226; Designing Data-intensive Applications with Martin Kleppmann: </span><a href="https://newsletter.pragmaticengineer.com/p/designing-data-intensive-applications"><span>https://newsletter.pragmaticengineer.com/p/designing-data-intensive-applications</span></a></p><p><span>&#8226; PACELC design principle: </span><a href="https://en.wikipedia.org/wiki/PACELC_design_principle"><span>https://en.wikipedia.org/wiki/PACELC_design_principle</span></a></p><p><span>&#8226; Amazon Chime: </span><a href="https://aws.amazon.com/chime/getting-started"><span>https://aws.amazon.com/chime/getting-started</span></a></p><p><span>&#8226; Musk&#8217;s 5 Step Design Process: </span><a href="https://modelthinkers.com/mental-model/musks-5-step-design-process"><span>https://modelthinkers.com/mental-model/musks-5-step-design-process</span></a></p><p><span>&#8226; AI Engineering with Chip Huyen: </span><a href="https://newsletter.pragmaticengineer.com/p/ai-engineering-with-chip-huyen"><span>https://newsletter.pragmaticengineer.com/p/ai-engineering-with-chip-huyen</span></a></p><p><span>&#8226; Angular: </span><a href="https://angular.dev">https://angular.dev</a></p><p><span>&#8226; Firebase: </span><a href="https://firebase.google.com">https://firebase.google.com</a></p><p><span>&#8226; TypeScript: </span><a href="https://www.typescriptlang.org">https://www.typescriptlang.org</a></p><p><span>&#8226; An update on recent Claude Code quality reports: </span><a href="https://www.anthropic.com/engineering/april-23-postmortem"><span>https://www.anthropic.com/engineering/april-23-postmortem</span></a></p><p><span>&#8226; Building Claude Code with Boris Cherny: </span><a href="https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny"><span>https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny</span></a></p><p><span>&#8226; Sora: </span><a href="https://en.wikipedia.org/wiki/Sora_(text-to-video_model)"><span>https://en.wikipedia.org/wiki/Sora_(text-to-video_model)</span></a></p><p><span>&#8226; Attention is all you need: </span><a href="https://arxiv.org/abs/1706.03762"><span>https://arxiv.org/abs/1706.03762</span></a></p><p><span>&#8226; The End of Programming as We Know It: </span><a href="https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it"><span>https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it</span></a></p><p><span>&#8226; Satya Nadella on X: </span><a href="https://x.com/satyanadella"><span>https://x.com/satyanadella</span></a></p><p><span>&#8226; Replit: </span><a href="https://replit.com">https://replit.com</a></p><p><span>&#8226; Lovable: </span><a href="https://lovable.dev">https://lovable.dev</a></p><p><span>&#8226; 37signals: </span><a href="https://37signals.com">https://37signals.com</a></p><p><span>&#8226; DHH&#8217;s new way of writing code: </span><a href="https://newsletter.pragmaticengineer.com/p/dhhs-new-way-of-writing-code"><span>https://newsletter.pragmaticengineer.com/p/dhhs-new-way-of-writing-code</span></a></p><p><span>&#8226; MongoDB: </span><a href="https://www.mongodb.com">https://www.mongodb.com</a></p><p><span>&#8226; Maybe some people should just give up: </span></p><div id="youtube2-rsoEipuwXiI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;rsoEipuwXiI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/rsoEipuwXiI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[Slow down to speed up: so much has changed in 6 months’ time]]></title><description><![CDATA[An overview of what&#8217;s changed in engineering during the last six months, how various tech companies are changing how they work, and why slowing down could be a sensible strategy]]></description><link>https://newsletter.pragmaticengineer.com/p/slow-down-to-speed-up</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/slow-down-to-speed-up</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 23 Jun 2026 15:30:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/5wks1W-auKY" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>Scheduling note: there will be no edition of The Pulse on Thursday as I&#8217;m in San Francisco for the next week and a half, visiting AI labs and startups, and attending the </span><a href="https://www.ai.engineer/worldsfair/2026"><span>AI Engineer World Fair</span></a><span> from next Monday. For the podcast and Tuesday articles, it&#8217;s business as usual.</span></em></p><p><span>Three weeks ago, at </span><a href="https://craft-conf.com/"><span>Craft Conference</span></a><span>, in Budapest, Hungary, I opened the event with a keynote titled &#8216;Slow Down to Speed Up&#8217;.</span></p><p><span>As with most of my talks, it came together in stages, including with some input from full subscribers to the Pragmatic Engineer, with whom I shared my thinking in advance, in &#8216;</span><a href="https://newsletter.pragmaticengineer.com/p/ideas-slow-down-to-speed-up-when"><span>Ideas: slow down to speed up when working with AI agents</span></a><span>&#8217;. </span><em><span>Thank you for all the comments!</span></em></p><p><span>As fate would have it, just two days beforehand, social media giant Meta appositely provided a real-world case study for my talk, with its </span><a href="https://newsletter.pragmaticengineer.com/i/202307236/4-most-embarrassing-ever-outage"><span>most embarrassing outage of all time</span></a><span>: users could simply ask the Meta AI to change the email of any account, and the bot happily complied &#8211; even if the account belonged to someone else entirely &#8211; including a former US president. It was a timely example to kick off the talk with.</span><em><span> Check out the full keynote that&#8217;s available to </span><a href="https://youtu.be/5wks1W-auKY"><span>view on YouTube</span></a><span>:</span></em></p><div id="youtube2-5wks1W-auKY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;5wks1W-auKY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/5wks1W-auKY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youtu.be/5wks1W-auKY&quot;,&quot;text&quot;:&quot;Watch the keynote video&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/5wks1W-auKY"><span>Watch the keynote video</span></a></p><p><span>In this article, I summarize the key parts of my Craft Conference keynote in detail, and some responses received at the event. Full subscribers also have access to the slides, </span><a href="https://newsletter.pragmaticengineer.com/i/40654455/reports-and-slides"><span>here</span></a><span>, and at the foot of this article.</span></p><p><span>We cover:</span></p><ol><li><p><strong><span>Meta: &#8220;AI psychosis&#8221; in effect? </span></strong><span>Meta has been destroying its engineering org, and an obsessive focus on AI seems to be one reason for it. For more on this question, check out this </span><a href="https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering"><span>deep dive</span></a><span>.</span></p></li><li><p><strong><span>Everything&#8217;s changed in six months.</span></strong><span> From around November last year, things changed with a more capable generation of AI agents like Opus 4.5 and GPT-5.4.</span></p></li><li><p><strong><span>How are tech companies changing how they work?</span></strong><span> Anthropic, OpenAI, Google, Uber, startups, and traditional companies.</span></p></li><li><p><strong><span>Trends</span></strong><span>. Individual productivity is up, but team productivity&#8217;s flat, tokenmaxxing and tooling adoption, vanishing middle management, CEOs and CTOs back to coding, and more.</span></p></li><li><p><strong><span>Trends across software. </span></strong><span>Falling software quality, GitHub&#8217;s constant reliability woes, AI slop overwhelming devs who care about quality, and more.</span></p></li><li><p><strong><span>Advice for software engineers and engineering leaders. </span></strong><span>Suggestions to help future-proof a career.</span></p></li><li><p><strong><span>Feedback. </span></strong><span>&#8220;It&#8217;s happening here too!&#8221; is a common theme, and relief for some that it&#8217;s not unique to their own workplace.</span></p></li></ol><h2><span>1. Meta: &#8220;AI psychosis&#8221; in effect?</span></h2><p><span>I thought it was a made-up story when I read that Meta had enabled account takeovers via a &#8220;zero auth&#8221; policy; i.e., simply asking the Meta AI bot was sufficient to change any account&#8217;s email address. After all, shipping such a regression would fly in the face of security measures, code reviews, automated testing, and metrics. Plus, the company has dedicated Integrity teams whose mission statement is to ensure something like this never happens&#8230; And yet, this bug shipped.</span></p><p><span>It went undetected by anyone at Meta, and high-profile accounts like that of former US president, Barack Obama, were taken over as a result. Instagram&#8217;s dedicated Integrity team seems to have discovered the embarrassing issue via the news.</span></p><p><span>As mentioned, it was two days before the Craft keynote, so there was enough time to ask around at Instagram and Meta. Engineers at the company there told me this disaster was caused by AI-generated, AI-reviewed code, along with layoffs, and by forced reassignments from Integrity teams and elsewhere onto AI labeling and related duties.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zjyL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zjyL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zjyL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zjyL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zjyL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59abcfc-a72d-4957-b4e0-9fd6bde46c98_2048x1365.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Talking Meta at Craft Conference</span></em></figcaption></figure></div><p><span>The problem at Meta seems to be that leadership is aggressively pushing AI, while withdrawing resources and headcount from areas responsible for security, quality, and reliability. Since last week&#8217;s </span><a href="https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering"><span>deepdive</span></a><span> into what&#8217;s been happening behind the scenes was published, I&#8217;ve learned further details:</span></p><ul><li><p><span>Integrity teams at WhatsApp </span><a href="https://newsletter.pragmaticengineer.com/i/202609979/orgs-hit-hard-by-layoffs"><span>have been hit hard by layoffs</span></a><span> and enforced data-labeling reassignments</span></p></li><li><p><span>Instagram&#8217;s design team suffered a 44% cut in headcount during layoffs</span></p></li><li><p><span>The Developer Documentation and Support team had a full 95% headcount reduction during layoffs</span></p></li><li><p><span>Data labeling at the ADO group </span><a href="https://newsletter.pragmaticengineer.com/i/202609979/1-meta-follow-up"><span>goes beyond</span></a><span> &#8220;just&#8221; labeling; there are many AI training tasks to do.  But these are repetitive, unless you get really creative.</span></p></li></ul><p><span>Based on everything I heard from talking with Meta folks, AI-induced behavior was indeed at the heart of this outage. AI-generated, AI-reviewed code, and security teams being gutted, were also factors in the beyond-embarrassing incident. As reported in last week&#8217;s deepdive:</span></p><ul><li><p><span>Instagram&#8217;s Trust and Safety Team lost around 50% of its staff to data labeling and layoffs. Some of the most senior folks were drafted onto AI training tasks.</span></p></li><li><p><span>AI-generated changes with zero human input, with just an additional AI code review, have been very common in recent months across the codebase. The change that caused this outage looked like one of these</span></p></li><li><p><span>Normally, the Trust and Safety team would be on top of monitoring and alerting of security breaches, but it is currently in full disarray due to rapid, internal disorganization&#8221;.</span></p></li></ul><p><span>If major changes like data labeling assignments and staff tracking are undone, then perhaps things at Meta could return to normal. But so far, the most being done is that leadership has boosted budgets for snacks, travel, and events. Hardly the change needed to restore morale and the former culture!</span></p><p><span>The comparison to the Lumon corporation in the hit show, Severance, was duly made:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1pjG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1pjG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 424w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 848w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 1272w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1pjG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png" width="1186" height="1528" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1528,&quot;width&quot;:1186,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1pjG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 424w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 848w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 1272w, https://substackcdn.com/image/fetch/$s_!1pjG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951c023-462a-48cb-aa5e-53e0545828d7_1186x1528.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Source: </span><a href="https://x.com/secondfret/status/2067348925858934999?s=20"><span>Josh Johnson</span></a></em></figcaption></figure></div><p><strong><span>Meta&#8217;s worst-ever outage can be interpreted as a warning</span></strong><span> about what happens when there&#8217;s so much focus on AI that the basic health of a company&#8217;s main &#8211; money-spinning &#8211; products is neglected. Instagram, WhatsApp, and Facebook generate the bulk of revenue for Meta, but the company is reallocating more engineers to training the coding model, and aggressively cutting the headcounts of vital orgs to do so &#8211; up to the point of not having oncall coverage for key services, and security teams being too stretched to do their jobs.</span></p><p><span>Am I missing some insight about why it&#8217;s more important to build a state-of-the-art, likely-closed AI model that&#8217;s good at coding, than it is to keep operating revenue-generating businesses with stable infra?</span></p><h2><span>2. Everything&#8217;s changed in six months</span></h2><p><span>Independent, experienced software engineers with zero affiliation to AI labs have been saying for a few months that how we do software engineering has been transformed.</span></p><p><span>David Heinemeier Hansson (DHH), creator of Ruby on Rails </span><a href="https://x.com/dhh/status/2007504187568074843?s=20"><span>in January</span></a><span>:</span></p><blockquote><p><span>&#8221;Just [in] summer 2025, I spoke with Lex Fridman about not letting AI write any code directly, but it turns out part of this resistance was simply based on the models not being good enough at the time! I spent more time rewriting what it wrote, than if I&#8217;d done it from scratch. That has now flipped.&#8221;</span></p></blockquote><p><span>Simon Willison, creator of Django, </span><a href="https://simonw.substack.com/p/i-think-anthropic-and-openai-have"><span>in May</span></a><span> pinpointed the start of the change to late last year:</span></p><blockquote><p><span>&#8220;</span><strong><span>The models released in November 2025 elevated agents to being genuinely useful.</span></strong><span> We&#8217;ve had six months to get used to that idea now; it&#8217;s no wonder companies are beginning to spend real money on this technology.&#8221;</span></p></blockquote><p><strong><span>Teams using agents now ship 5x as many pull requests as two years ago.</span></strong><span> Here&#8217;s data from Linear:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CCFv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CCFv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 424w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 848w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 1272w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CCFv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png" width="1456" height="643" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:643,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Screenshot 2026-06-04 at 00.07.06.png&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Screenshot 2026-06-04 at 00.07.06.png" srcset="https://substackcdn.com/image/fetch/$s_!CCFv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 424w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 848w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 1272w, https://substackcdn.com/image/fetch/$s_!CCFv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcee67b29-e96c-4ec4-ac45-c9a0c018feb8_1780x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Comparing numbers of pull requests for teams that use AI agents with Linear, vs those that don&#8217;t. Source: Linear</figcaption></figure></div><p><strong><span>Devs using AI harnesses are producing 2.5x as much code versus 18 months ago. </span></strong><span>Data from Cursor shows that their users, on average, went from adding 3,500 lines of code in January 2025 to 8,600 today:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wn0P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wn0P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 424w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 848w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 1272w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77326a72-5765-4ca0-8938-25366d60e467_1462x764.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Screenshot 2026-06-04 at 00.12.01.png&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Screenshot 2026-06-04 at 00.12.01.png" srcset="https://substackcdn.com/image/fetch/$s_!Wn0P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 424w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 848w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 1272w, https://substackcdn.com/image/fetch/$s_!Wn0P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77326a72-5765-4ca0-8938-25366d60e467_1462x764.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Source: </span><a href="https://cursor.com/insights"><span>Cursor</span></a></em></figcaption></figure></div><p><strong><span>The size of pull requests is up 3x versus 18 months ago</span></strong><span>. Also from Cursor:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VaTO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VaTO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 424w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 848w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 1272w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VaTO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Screenshot 2026-06-04 at 00.14.27.png&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Screenshot 2026-06-04 at 00.14.27.png" srcset="https://substackcdn.com/image/fetch/$s_!VaTO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 424w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 848w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 1272w, https://substackcdn.com/image/fetch/$s_!VaTO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373d75b5-dc2e-4ee7-b487-f867c235b7af_1504x820.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Line goes up: more lines per PR than ever, today. Source: </span><a href="https://cursor.com/insights"><span>Cursor</span></a></em></figcaption></figure></div><p><strong><span>More AI changes are accepted without human review. </span></strong><span>Data from Cursor shows a big jump in changes being accepted without human review from around February this year, when Opus 4.7 and GPT 5.5 launched:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g3dj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g3dj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g3dj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g3dj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g3dj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feef9732b-9411-445b-af5d-64f8bb026d7a_2048x1365.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Less human input than ever, as outlined at the Craft Conference. Source: </span><a href="https://cursor.com/insights"><span>Cursor</span></a></em></figcaption></figure></div><p><strong><span>We&#8217;re seeing a </span></strong><em><strong><span>lot</span></strong></em><strong><span> more code generated, and less of it than ever being reviewed by devs. </span></strong><span>In the relatively short time since AI agents became </span><em><span>really</span></em><span> good last November, there are more pull requests generated by devs, those pull requests are getting better, and code reviews are harder to keep up with. And so, reviews are less stringent and more changes are shipped to production sans human review! </span><em><span>As per my discussions with Meta engineers, these kinds of AI-generated, AI-reviewed pull requests [at Meta, they&#8217;re called diffs] are what caused the most recent, embarrassing outage at Instagram.</span></em></p><h2><span>3. How are tech companies changing how they work?</span></h2><p><span>Details from a few larger tech companies:</span></p><p><strong><span>Anthropic: all-in on AI agents. </span></strong><span>In March, Boris Cherny, creator of Claude Code, </span><a href="https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny"><span>was on the Pragmatic Engineer podcast</span></a><span> and shared some details:</span></p><ul><li><p><span>He personally runs ~5x agents parallel, and ships 20&#8211;30 PRs/day</span></p></li><li><p><span>Product requirement documents (PRDs) are dead &amp; prototypes have replaced them inside Anthropic</span></p></li><li><p><span>~100% of Claude Code was generated by Claude in March</span></p></li><li><p><span>~70-90% of code inside Anthropic was generated by Claude</span></p></li><li><p><span>Claude Cowork &#8211; another billion-dollar product in terms of revenue potential &#8211; was built in just 10 days</span></p></li></ul><p><span>Since then, Boris has </span><a href="https://x.com/rohanpaul_ai/status/2063347508831764647?s=20"><span>shared</span></a><span> that his workflow has changed to setting up loops to run agents.</span></p><p><strong><span>OpenAI: moving much faster with AI agents. </span></strong><span>OpenAI&#8217;s Codex team was </span><a href="https://www.youtube.com/watch?v=Bo6Gtq3nMXc"><span>on the main stage</span></a><span> at The Pragmatic Summit in February. Tibo Sottiaux (head of engineering, Codex, OpenAI) shared interesting details on how software development is done in the Codex team:</span></p><ul><li><p><span>There&#8217;s a &#8220;fix this&#8221; button integrated into the internal OpenAI mobile app. It makes one-shot fixes to bug reports, which devs review and can merge</span></p></li><li><p><span>AI code review for all code changes. With a tiered approach, some changes can be merged with just AI review, and more important ones need an extra human review</span></p></li><li><p><span>Most devs run several agents in parallel, often walking around with their laptop lids open, so the machine doesn&#8217;t enter sleep mode and suspend agents</span></p></li><li><p><span>Code isn&#8217;t really written by hand anymore on the Codex team, and is also less common on other teams too</span></p></li><li><p><span>&#8220;Taste&#8221; is becoming a core skill for working at the company</span></p></li><li><p><span>Codex improves itself: it runs its own test suite, runs improvement tasks overnight, and during team meetings it takes actions on topics discussed</span></p></li></ul><p><strong><span>Google: AI widespread. </span></strong><span>Gemini is not as capable at coding as Claude or Codex, as acknowledged by Google&#8217;s CEO, but it&#8217;s widely used companywide. The less capable coding model could be hurting AI adoption compared to other companies.</span></p><p><strong><span>Uber: in-house AI infra. </span></strong><span>We covered in-depth </span><a href="https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development"><span>how Uber uses AI for development</span></a><span>, touching on internal systems like:</span></p><p><span>Uber&#8217;s MCP Gateway:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!86xc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!86xc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 424w, https://substackcdn.com/image/fetch/$s_!86xc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 848w, https://substackcdn.com/image/fetch/$s_!86xc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 1272w, https://substackcdn.com/image/fetch/$s_!86xc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!86xc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png" width="1342" height="1050" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1050,&quot;width&quot;:1342,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!86xc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 424w, https://substackcdn.com/image/fetch/$s_!86xc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 848w, https://substackcdn.com/image/fetch/$s_!86xc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 1272w, https://substackcdn.com/image/fetch/$s_!86xc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdfadc9-6d82-4960-a524-68f652453116_1342x1050.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Uber&#8217;s MCP Gateway</span></em></figcaption></figure></div><p>Uber Agent Builder:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lJ3T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lJ3T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 424w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 848w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png" width="1374" height="1400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1400,&quot;width&quot;:1374,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lJ3T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 424w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 848w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!lJ3T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7b50b1-2fbe-4fbe-8175-1fd78742b9dc_1374x1400.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Uber&#8217;s Agent Builder: a no-code experience to build agents</figcaption></figure></div><p>The AIFX command line interface:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tRVQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tRVQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 424w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 848w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png" width="1456" height="835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:835,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:932547,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/203257304?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tRVQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 424w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 848w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!tRVQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ad64cc-74f4-45e4-be0d-110cbfa09122_1980x1136.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Uber&#8217;s AIFX command line tool</figcaption></figure></div><p>Minion: background agents</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bCSQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bCSQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 424w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 848w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 1272w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png" width="1351" height="737" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:737,&quot;width&quot;:1351,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bCSQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 424w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 848w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 1272w, https://substackcdn.com/image/fetch/$s_!bCSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddffc676-68f3-42b1-8380-b6f2091580c2_1351x737.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Uber&#8217;s Minion system: web interface&#8217;s appearance</span></em></figcaption></figure></div><p>Code Inbox:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!58dy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!58dy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 424w, https://substackcdn.com/image/fetch/$s_!58dy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 848w, https://substackcdn.com/image/fetch/$s_!58dy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 1272w, https://substackcdn.com/image/fetch/$s_!58dy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!58dy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png" width="1456" height="901" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:901,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!58dy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 424w, https://substackcdn.com/image/fetch/$s_!58dy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 848w, https://substackcdn.com/image/fetch/$s_!58dy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 1272w, https://substackcdn.com/image/fetch/$s_!58dy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90fea6f1-4615-484a-a93e-589a6ad921b7_1456x901.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Uber&#8217;s Code Inbox</span></em></figcaption></figure></div><p><span>Smart Assignments as a neat feature of Code Inbox:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mJYV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mJYV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 424w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 848w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 1272w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mJYV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png" width="956" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:956,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mJYV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 424w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 848w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 1272w, https://substackcdn.com/image/fetch/$s_!mJYV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61073e2b-f26c-4421-8d3d-60c381c1b492_956x692.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><span>Smart assignment settings for Code Inbox</span></em></figcaption></figure></div><p>Risk Profiles: another smart feature inside Code Inbox:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dbo4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dbo4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 424w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 848w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 1272w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dbo4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png" width="996" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:996,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dbo4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 424w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 848w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 1272w, https://substackcdn.com/image/fetch/$s_!dbo4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F411ad35f-d8ea-470f-b480-82fc0bcce7bc_996x812.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Code Inbox estimates the riskiness of a code change, and brings attention to it</figcaption></figure></div><p>uReview, Uber&#8217;s AI code review tool:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4R6L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4R6L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 424w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 848w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 1272w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4R6L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png" width="1456" height="1007" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1007,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4R6L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 424w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 848w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 1272w, https://substackcdn.com/image/fetch/$s_!4R6L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb907a1b0-8a71-4baa-a9e2-0b895d82cc06_1456x1007.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI&#8217;s comments can be rated by usefulness</figcaption></figure></div><p>Autocover and Shepherd for large-scale migrations:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DvQf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DvQf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 424w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 848w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DvQf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png" width="1456" height="1352" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1352,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DvQf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 424w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 848w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!DvQf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6bee21-20ea-476f-a2f7-6705c8cd8a12_1456x1352.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Shepherd generates a pull request using a Minion AI agent. Part 2 of the diff (pull request) generated, with code changes</figcaption></figure></div><p><strong><span>Uber is a good case for learning how much of internal developer infra needs to be rebuilt in order to work well with AI agents.</span></strong><span> Uber built all the tools above because they needed new, better ways to integrate AI agents into the developer workflow, but couldn&#8217;t find anything that worked up to requirements. I&#8217;d also point out how much time and effort Uber invested in making code review more efficient. Devs are, indeed, getting overloaded with AI code reviews and Uber&#8217;s Code Inbox tries to separate the </span><em><span>important</span></em><span> pieces of code to review from </span><em><span>unimportant</span></em><span> ones.</span></p><p><strong><span>Startups are jumping into using AI agents, although their integrations are more basic. </span></strong><span>In preparation for the keynote, I talked with several startups about their AI usage. Harnesses like Claude Code, Codex, Cursor, OpenCode and others are popular, and I also noticed most startups are heavily integrating AI agents into Slack, so devs can kick off bugfixes or small feature requests straight from the chat tool.</span></p><p><span>I observed startups being the most likely to experiment with new AI dev tools; from code review, all the way to AI incident management tools.</span></p><p><strong><span>&#8220;Traditional&#8221; companies are also heavily investing in AI dev tools. </span></strong><span>At the recent Pragmatic Summit in San Francisco, Laura Tacho </span><a href="https://newsletter.pragmaticengineer.com/i/188235220/2-data-vs-hype-how-orgs-actually-win-with-ai"><span>shared</span></a><span> interesting details:</span></p><ul><li><p><span>In February, 18,000 Cisco developers used Codex for complex migrations, code review, and refactoring. This was </span><em><span>very</span></em><span> early &#8211; Codex was just starting to gain industry-wide adoption!</span></p></li><li><p><span>JP Morgan Chase built a multi-agent framework for annotation, using multiple specialized agents to label customer interaction data, and judge agents to aggregate and rank results. These are pretty advanced use cases!</span></p></li></ul><p><span>In general, &#8220;traditional&#8221; companies do not seem to be lagging behind in using, paying for, and adopting AI agents and AI developer tools.</span></p><h2><span>4. Industry trends</span></h2><p><span>There are trends I&#8217;ve observed around the adoption of AI dev tools:</span></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/slow-down-to-speed-up">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Pulse: Big implications of US banning Anthropic’s new model, Fable]]></title><description><![CDATA[Also: a follow-up on Meta destroying its own engineering culture, the SpaceX IPO, SpaceX buys Cursor, Cursor&#8217;s GitHub competitor, and more.]]></description><link>https://newsletter.pragmaticengineer.com/p/the-pulse-big-implications-of-us</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/the-pulse-big-implications-of-us</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 18 Jun 2026 17:11:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SNKX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F744904b3-18f6-46e7-a260-659673fed299_1186x1528.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</em></p><p>Today, we cover:</p><ol><li><p><strong>Meta follow-up. </strong>A follow-up on Tuesday&#8217;s deepdive into Meta&#8217;s ongoing demolition of its own engineering org. Non-engineering teams lost more than 10% of their staff, while Integrity teams were already stretched before the cuts and reallocation.</p></li><li><p><strong>Big implications of the US banning Anthropic&#8217;s new model, Fable. </strong>The US government wants only US citizens to be able to use Fable. That could make China more influential as other countries and non-US companies look to capable open models &#8211; most of which come from China.</p></li><li><p><strong>SpaceX, Cursor, Continue. </strong>Elon Musk became a trillionaire with SpaceX&#8217;s IPO, while SpaceX acquired Cursor, and Cursor acquired Continue. SpaceX looks like it wants to go head-on against Anthropic and OpenAI.</p></li><li><p><strong>Industry Pulse. </strong>Gemini lead quits for OpenAI, Epic Games&#8217; new open source version control system, Microsoft considers dropping OpenAI for DeepSeek, research confirms LLMs amplify existing expertise, and more. </p></li></ol><h2><span>1. Meta follow-up</span></h2><p><span>Tuesday&#8217;s article </span><a href="https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering"><span>about Meta destroying its engineering culture</span></a><span> made quite the splash in terms of comments and debate online. From inside Meta, there was positive feedback on the accuracy of the deepdive into the situation, and there were also a few helpful clarifications and new information which I&#8217;m happy to publish here:</span></p>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-big-implications-of-us">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[CI/CD with Robert Erez]]></title><description><![CDATA[Robert Erez of Octopus Deploy joins me to discuss Kubernetes, GitOps, progressive delivery, AI in CI/CD, and the evolving practices behind modern software delivery.]]></description><link>https://newsletter.pragmaticengineer.com/p/cicd-with-robert-erez</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/cicd-with-robert-erez</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Wed, 17 Jun 2026 16:41:01 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/202192974/853dbd59a9e16209cab02390aedb8a33.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h3>Stream the latest episode</h3><p><strong>Listen and watch now on <a href="https://youtu.be/2x0eq5oDOJY">YouTube</a>, <a href="https://open.spotify.com/episode/0U7CodzNgOe0PxLHmRYfmo">Spotify</a>, and <a href="https://podcasts.apple.com/us/podcast/ci-cd-with-robert-erez/id1769051199?i=1000773146557">Apple</a>.</strong> See the episode transcript at the top of this page, and timestamps for the episode at the bottom.</p><h3><strong>Brought to You by</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YCsL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YCsL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 424w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 848w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1272w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YCsL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png" width="1280" height="80" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:80,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33236,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/197401883?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YCsL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 424w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 848w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1272w, https://substackcdn.com/image/fetch/$s_!YCsL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39bdfbb4-fb73-41d8-83cb-0ca4832aed49_1280x80.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><strong>&#8226; <a href="https://antithesis.com/pragmatic">Antithesis</a></strong> &#8211; <span>if you're using agents to code, the problem isn't writing the code but making sure it didn't break anything. Antithesis goes beyond code review and runs your whole system in faster than real-time and identifies hard to find bugs before your users hit them in production. Antithesis enables teams like Jane Street, Fly.io,  and the etcd community to use agents safely and ship better code, faster. </span><a href="https://antithesis.com/pragmatic"><span>Learn more</span></a></p><p><strong>&#8226; <a href="https://workos.com/">WorkOS</a></strong> &#8211; make your app and agents Enterprise Ready, with SSO, SCIM, RBAC, and more. <a href="https://workos.com/">Get started.</a></p><p><strong>&#8226; <a href="https://turbopuffer.com/pragmatic">turbopuffer</a></strong> &#8211; a vector and full-text search engine built on object storage. It&#8217;s fast, cheap, and extremely scalable. The teams building the smartest AI products out there &#8212; Cursor, Notion, Cognition, Anthropic &#8212; they <a href="https://turbopuffer.com/pragmatic">all run on turbopuffer</a>.</p><h3><strong>In this episode</strong></h3><p>Robert Erez is a principal engineer at Octopus Deploy, and a longtime expert in CI/CD, deployment systems, and software delivery. Rob and I were also once colleagues on the Skype web team, working on large-scale deployments and release processes.</p><p>In this episode of<em> The</em> <em>Pragmatic Engineer</em>, I sit down with Rob to discuss how teams deploy software safely and efficiently at scale. We cover Kubernetes, GitOps, platform engineering, progressive delivery, feature flags, cloud development environments, and the growing role of AI in CI/CD workflows. We also get into the tradeoffs in different deployment approaches, why self-hosted software still matters for some organizations, and the recent evolution of software delivery practices.</p><h3>Key observations on deployments and CI/CD from the conversation with Rob</h3><p>Here are 10 interesting takeaways from our chat:</p><div id="youtube2-2x0eq5oDOJY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2x0eq5oDOJY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/2x0eq5oDOJY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>1. Roll forward, never backwards. </strong>When a system has state &#8211; which typically means it uses databases &#8211; then doing a rollback can leave the code talking to a schema that&#8217;s no longer in sync. Rob&#8217;s advice is to not treat a failure in v2 as a trip back to v1, but rather as a push to v3 with the fix in it.</p><p><strong>2. GitOps isn&#8217;t actually about Git.</strong> None of the four pillars of GitOps &#8211; 1) declarative, 2) versioned and immutable, 3) pulled, not pushed, 4) continuously reconciled  &#8211; require Git, although Git can work under these constraints. Yet, the term  &#8216;GitOps&#8217; has made the industry dogmatic about cramming <em>everything</em> into a repo &#8211; even things like secrets that absolutely shouldn&#8217;t be there!</p><p><strong>3. Continuous deployment can be overkill; continuous delivery is more practical. </strong>Shipping every single change to prod (continuous deployment) is not as necessary as many people think, Rob says, and there&#8217;s often more value in continuous delivery, where changes flow through testing and the deployment process itself is validated. With continuous delivery, you can decide whether to push to production automatically, or click a button once a week.</p><p><strong>4. Feature toggles are a better safety net than rollbacks.</strong> When something breaks in production, reaching for a toggle to switch a feature off enables you to &#8220;stop the bleeding&#8221; and then calmly diagnose an issue. Rolling back a feature flag is less nerve-jangling than scrambling to force a redeployment in the middle of the night!</p><p><strong>5. One problem with feature flags is that they&#8217;re addictive.</strong> On the other hand, the ease with which feature flags are added can create a hygiene crisis if they&#8217;re continuously added, but not removed. Treat feature-toggle cleanups like a form of gardening and &#8220;weed&#8221; rolled-out toggles from the codebase.</p><p><strong>6. A Git repo can be a bottleneck at scale.</strong> Rob mentions that some companies run thousands of independent Kubernetes clusters that pull state from a Git repository. But such clusters can get throttled by the repo, forcing them into workarounds. Pull-based GitOps doesn&#8217;t scale infinitely for free.</p><p><strong>7. A sizable number of major institutions remain on-prem &#8211; and this won&#8217;t change. </strong>Banks, other financial bodies, and governments, demand full control over their hardware, upgrades, and downtime. That&#8217;s why Rob expects this segment won&#8217;t move to cloud-based SaaS.</p><p><strong>8. Platform teams work at larger companies. </strong>These teams earn their keep in big organizations with multiple teams and projects because they offer ways of bringing sanity and focus.</p><p><strong>9. There&#8217;s a trend of ephemeral environments replacing test/staging environments. </strong>Companies used to have a few testers fighting over a handful of static test environments, but today, it&#8217;s trivial to spin up a full environment, per-feature branch, pre-merge. This is an &#8220;ephemeral&#8221; environment for evaluating that things work, which is then torn down once something is merged. It helps speed up the feedback process.</p><p><strong>10. AI shifts the CI/CD calculus from speed to risk.</strong> Today, shaving ten minutes off the CI build-time matters because a long-running build blocks human devs. But this time saving will be insignificant when an AI agent writes most of the code and &#8220;babysits&#8221; a slow pipeline without context switching. Then, the new priority will be to reduce the risk of an AI agent shipping a bug to production, so it will make much more sense to run extra, more thorough, tests &#8211; and also even slower ones.</p><h3><strong>The Pragmatic Engineer deepdives relevant for this episode</strong></h3><p><strong>&#8226; </strong><a href="https://newsletter.pragmaticengineer.com/p/kubernetes-and-retiring-at-the-top">Kubernetes and retiring at the top</a> with Kelsey Hightower</p><p><strong>&#8226; </strong><a href="https://newsletter.pragmaticengineer.com/p/the-past-and-future-of-backend-practices">The past and future of modern backend practices</a></p><p><strong>&#8226; </strong><a href="https://newsletter.pragmaticengineer.com/p/microsoft-ai-dev-tools">Microsoft is dogfooding AI dev tools&#8217; future</a></p><p><strong>&#8226; </strong><a href="https://newsletter.pragmaticengineer.com/p/how-kubernetes-is-built-with-kat">How Kubernetes is built</a> with Kat Cosgrove</p><p><strong>&#8226; </strong><a href="https://newsletter.pragmaticengineer.com/p/how-linux-is-built-with-greg-kroah">How Linux is built</a><strong> </strong>with Greg KH</p><h3><strong>Timestamps</strong></h3><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY">00:00</a> Intro</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=129s">02:09</a> Canary deployments at Skype</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=301s">05:01</a> Joining at Octopus Deploy</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=375s">06:15</a> Continuous deployment</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=626s">10:26</a> Why Kubernetes won</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=951s">15:51</a> Kubernetes on-prem</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=1130s">18:50</a> How GitOps works</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=1500s">25:00</a> The uses and limitations of GitOps</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=1864s">31:04</a> The rise of platform teams</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=2151s">35:51</a> How AI is changing CI/CD</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=2389s">39:49</a> Progressive delivery explained</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=2851s">47:31</a> Rollbacks and roll-forwards</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=3014s">50:14</a> Feature flags</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=3272s">54:32</a> How development environments are evolving</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=3460s">57:40</a> Cloud development environments (CDEs)</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=3825s">1:03:45</a> Self-hosting CI/CD</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=4165s">1:09:25</a> Getting started with progressive delivery</p><p><a href="https://www.youtube.com/watch?v=2x0eq5oDOJY&amp;t=4275s">1:11:15</a> Book recommendations</p><h3><strong>References</strong></h3><p><strong>Where to find Robert Erez:</strong></p><p>&#8226; X: <a href="https://x.com/no_erez">https://x.com/no_erez</a></p><p>&#8226; LinkedIn: <a href="https://www.linkedin.com/in/roberterez">https://www.linkedin.com/in/roberterez</a></p><p><strong>Mentions during the episode:</strong></p><p>&#8226; Skype: <a href="https://en.wikipedia.org/wiki/Skype">https://en.wikipedia.org/wiki/Skype</a></p><p>&#8226; Canary deployments: <a href="https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/canary-deployments.html">https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/canary-deployments.html</a></p><p>&#8226; Octopus Deploy: <a href="https://octopus.com">https://octopus.com</a></p><p>&#8226; Paul Stovell on LinkedIn: <a href="http://linkedin.com/in/paulstovell">linkedin.com/in/paulstovell</a></p><p>&#8226; Kubernetes: <a href="https://kubernetes.io">https://kubernetes.io</a></p><p>&#8226; How Kubernetes is Built with Kat Cosgrove: <a href="https://newsletter.pragmaticengineer.com/p/how-kubernetes-is-built-with-kat">https://newsletter.pragmaticengineer.com/p/how-kubernetes-is-built-with-kat</a></p><p>&#8226; Kubernetes and retiring at the top with Kelsey Hightower: <a href="https://newsletter.pragmaticengineer.com/p/kubernetes-and-retiring-at-the-top">https://newsletter.pragmaticengineer.com/p/kubernetes-and-retiring-at-the-top</a></p><p>&#8226; Docker: <a href="https://www.docker.com">https://www.docker.com</a></p><p>&#8226; HashiCorp: <a href="https://www.hashicorp.com">https://www.hashicorp.com</a></p><p>&#8226; Mitchell Hashimoto&#8217;s new way of writing code: <a href="https://newsletter.pragmaticengineer.com/p/mitchell-hashimoto">https://newsletter.pragmaticengineer.com/p/mitchell-hashimoto</a></p><p>&#8226; Terraform: <a href="https://developer.hashicorp.com/terraform">https://developer.hashicorp.com/terraform</a></p><p>&#8226; GitOps: <a href="https://about.gitlab.com/topics/gitops/">https://about.gitlab.com/topics/gitops/</a></p><p>&#8226; Cursor: <a href="https://cursor.com">https://cursor.com</a></p><p>&#8226; <em>The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win</em>: <a href="https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/0988262592">https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/0988262592</a></p><p>&#8226; <em>Radical Candor: Be a Kick-Ass Boss Without Losing Your Humanity</em>: <a href="https://www.amazon.com/Radical-Candor-Kick-Ass-Without-Humanity/dp/1250103509">https://www.amazon.com/Radical-Candor-Kick-Ass-Without-Humanity/dp/1250103509</a></p><p>&#8226; <em>Diaspora</em>: <a href="https://www.amazon.com/Diaspora-Novel-Greg-Egan/dp/1597805424">https://www.amazon.com/Diaspora-Novel-Greg-Egan/dp/1597805424</a></p><p>&#8226; <em>Schild&#8217;s Ladder</em>: <a href="https://www.amazon.com/Schilds-Ladder-Novel-Greg-Egan/dp/1597805440">https://www.amazon.com/Schilds-Ladder-Novel-Greg-Egan/dp/1597805440</a></p><p>&#8226; <em>The Clockwork Rocket: Orthogonal Book One</em>: <a href="https://www.amazon.com/Clockwork-Rocket-Orthogonal-Book-One/dp/0575095148">https://www.amazon.com/Clockwork-Rocket-Orthogonal-Book-One/dp/0575095148</a></p><p>&#8212;</p><p>Production and marketing by <a href="https://penname.co/">Pen Name</a>. </p><p></p>]]></content:encoded></item><item><title><![CDATA[Why is Meta destroying its engineering organization?]]></title><description><![CDATA[Leadership at the social media giant has been on an AI-fueled rampage through its engineering org. We report what&#8217;s happened]]></description><link>https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/why-is-meta-destroying-its-engineering</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Tue, 16 Jun 2026 16:27:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/eabe4407-76aa-47a3-a8cb-1d955c05bf03_1972x1072.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hi &#8211; this is Gergely with a free issue of the Pragmatic Engineer Newsletter. In every issue, I cover challenges at Big Tech and startups through the lens of senior engineers and engineering leaders. Subscribe to get deepdives like this in your inbox, weekly:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.pragmaticengineer.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.pragmaticengineer.com/subscribe?"><span>Subscribe now</span></a></p><p><em>Many subscribers expense this newsletter to their learning and development budget. If you have such a budget, here&#8217;s<a href="https://blog.pragmaticengineer.com/request-to-expense-the-pragmatic-engineer-newsletter/"> an email you could send to your manager</a>.</em></p><div><hr></div><p>For two decades, Meta had a unique, high-performance engineering org; right up until around April of this year. For the first 20 years of the company&#8217;s existence, it had a &#8220;move-fast-and-break-things&#8221; culture, and in the early 2020s this shifted to a &#8220;move-fast-with-stable-infra&#8221; one. Engineers I know at the company were empowered to do good work, focus on impact, and to balance business interests with solid engineering.</p><p>But in the past few weeks, all that has changed, as if the leadership has been following detailed blueprints on how to demolish a proven, successful engineering culture in the most ruthlessly efficient way possible.</p><p>For the past few weeks, I&#8217;ve been <a href="https://newsletter.pragmaticengineer.com/i/196795826/3-meta-forcefully-assigns-engineers-to-data-labelling-pre-layoff">sharing</a> how bad things are inside the social media company for engineers in one of Silicon Valley&#8217;s most prestigious workplaces. In this article, we walk through what&#8217;s happened, and ask what&#8217;s going through the minds of leadership who are reducing software engineering there from <a href="https://newsletter.pragmaticengineer.com/p/profit-centers-cost-centers">the profit center</a> that it was between 2004 until very recently, to the disdained cost center that it has become in just a few weeks.</p><p>We cover:</p><ol><li><p>Meta&#8217;s pre-AI engineering culture</p></li><li><p>Investing in AI and pressing engineers to always use it</p></li><li><p>Core engineering folks feel treated like trash</p></li><li><p>Most embarrassing-ever outage</p></li><li><p>Internal mess</p></li><li><p>Self-inflicted wounds</p></li><li><p>Is &#8220;AI psychosis&#8221; just a Meta issue?</p></li></ol><h2>1. Meta&#8217;s pre-AI engineering culture</h2><p>I&#8217;d split Meta&#8217;s engineering culture into two eras: &#8220;move fast and break things&#8221;, and then &#8220;move fast with stable infra.&#8221;</p><h3>&#8220;Move fast and break things&#8221;</h3><p>In the 2010s, Facebook&#8217;s unconventional engineering culture had grown somewhat legendary in the tech industry, as the company went against conventional best practices and succeeded massively.</p><p>In 2012, when Facebook hit the billion-users landmark, the company produced a small physical book about its culture which was placed on employees&#8217; desks. Presented with retro propaganda design, it was dubbed the &#8220;little red book&#8221;, co-opting the name of a famous volume of the thoughts of Chairman Mao, (1964).</p><p>At around 70 pages long, Facebook&#8217;s version codified its engineering culture: speed, fearlessness, taking ownership, and thinking outside of the box.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4O-q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4O-q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 424w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 848w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 1272w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4O-q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png" width="1456" height="1123" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1123,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4O-q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 424w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 848w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 1272w, https://substackcdn.com/image/fetch/$s_!4O-q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe21ca23a-f069-489a-9bf0-fa882e94b9b6_1968x1518.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>From the Little Red Book. Source: <a href="https://v1.benbarry.com/project/facebooks-book">Ben Barry</a></em></figcaption></figure></div><p>Back then, mantras in Facebook&#8217;s little red book were also in print across campus, and included:</p><ul><li><p>Move Fast and Break Things</p></li><li><p>Done is Better Than Perfect</p></li><li><p>Fail Harder</p></li><li><p>What Would You Do If You Weren&#8217;t Afraid?</p></li><li><p>Every Day Feels Like a Week</p></li><li><p>The Wright Brothers Did Not Have Pilot Licenses</p></li><li><p>The Foolish Wait</p></li><li><p>Fortune Favors the Bold</p></li></ul><p>There was genuine focus on building good products. Also from the book:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4-Pa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4-Pa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 424w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 848w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 1272w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png" width="1456" height="1082" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1082,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4-Pa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 424w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 848w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 1272w, https://substackcdn.com/image/fetch/$s_!4-Pa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc1bcd4-cad8-4d13-882a-b9e9bbd8ff55_2048x1522.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>More from Facebook&#8217;s Little Red Book</em></figcaption></figure></div><h3>&#8220;Move fast with stable infra&#8221; culture</h3><p>In 2022, I did what is one of the longest deepdives we&#8217;ve published on the topic of <a href="https://newsletter.pragmaticengineer.com/p/facebook">Meta&#8217;s engineering culture</a>. By then, things had evolved, and much of any former recklessness was gone, replaced by the principle of moving fast, but with stable infra. Here&#8217;s how I described Meta&#8217;s engineering culture then:</p><blockquote><p>&#8220;<strong>The culture is incredibly engineering-centric: much more than most of Big Tech. </strong>This might come from Mark Zuckerberg being an engineer himself, or because much of the innovation in the early days of Facebook came from engineers.</p><p><strong>Focus on individual impact.</strong> Impact has been the bread and butter of the focus at Facebook. This is very true since the early days, and the focus on generating impact remains.</p><p>One detail in common with most Big Tech firms is that both the engineering culture and general culture focus so much on individual impact. This results in some people focusing on short-term, measurable wins and assuming that teamwork and split wins between groups might be less rewarded.</p><p><strong>The lack of rigid processes.</strong> Facebook seems to have the least amount of processes or standardization across all of Big Tech. Don&#8217;t even try to compare it to<a href="https://newsletter.pragmaticengineer.com/p/amazon?s=w"> Amazon&#8217;s engineering culture</a> and the countless formal processes there. But even compared to companies like Google, Microsoft or Uber, Facebook&#8217;s processes are much looser. Most of this comes from the engineering-centric nature of the company and engineers disliking processes.</p><p><strong>Surprisingly little emphasis on testing, documentation or code comments.</strong> You&#8217;ll find shockingly little automated testing and documentation at Facebook, compared to the rest of Big Tech. Inline code comments are also very rare.</p><p><strong>A founder-engineer driven company. </strong>Facebook is one of the few Big Tech firms whose founder is an engineer, and still is the CEO. Netflix is the other one where founder and co-CEO Reed Hastings was also a software engineer before starting the company. Amazon was the other example of this until recently, but it&#8217;s not the case at Google or Apple. There are good examples of smaller companies like Cloudflare, but they&#8217;re all younger than Facebook.</p><p><strong>Bootcamp</strong>. A unique onboarding process, unlike what any other Big Tech firms offer. We cover this more in the<a href="https://newsletter.pragmaticengineer.com/i/55330545/bootcamp-and-onboarding"> Bootcamp &amp; onboarding section.</a>&#8221;</p></blockquote><p>Also, Facebook, as a product, has one of the <a href="https://newsletter.pragmaticengineer.com/p/shipping-to-production">most sophisticated auto rollout systems</a> in the industry. Instagram has a battle-tested infrastructure where it was almost trivial <a href="https://newsletter.pragmaticengineer.com/p/building-the-threads-app">to launch a new social network (Threads)</a> with 100 million users served in its first week.</p><p>Engineers whom I knew inside the company are capable, motivated, and product-minded, and their work was appreciated. CEO, Mark Zuckerberg, was influential: he personally coded the first version of Facebook, had stayed close to engineering, and valued software engineers very much. Engineers there felt they were working inside a profit center.</p><h2>2. Investing in AI and pressing engineers to always use it</h2><p>Meta has been the only company among the big five of Apple, Microsoft, Amazon, Google, and itself not to own a hardware platform or operating system. Apple has the iPhone, iPad and Macs, Google has Android, ChromeOS and Pixel phones, Microsoft has Windows, and Amazon has the Kindle.</p><p>Stepping back, it looks as though the Mark Zuckerberg of today has resolved not to miss a platform opportunity, after the company failed to build its own mobile OS or mobile phone during the 2010s.</p><p>This is one reason for investing so much in virtual reality (VR) with Oculus, and in augmented reality with the Meta Glasses. Facebook changed its name to Meta in 2021, back when it looked like VR &#8211; and the metaverse &#8211; could be massive. Billions was spent on ensuring Meta would be the market leader in this space. But once again, VR didn&#8217;t go mainstream; since the end of the pandemic, popular interest in the segment has died down considerably.</p><p>When it became clear that AI would become a mega-trend in 2022, Zuckerberg didn&#8217;t miss it: he assembled the internal FAIR group (Fundamental AI Research team) as well as a GenAI product organization and released a series of open-weight AI models:</p><ul><li><p><strong>Llama 1</strong>: released in Feb 2023, three months after ChatGPT, built by FAIR</p></li><li><p><strong>Llama 2</strong>: in June 2023, built by the GenAI product organization (as well as all subsequent Llama models)</p></li><li><p><strong>Llama 3</strong>: in April 2024. This model was Meta&#8217;s most competitive LLM of all, and gained momentum in adoption across the industry</p></li><li><p><strong>Llama 4</strong>: in April 2025. This model was <a href="https://newsletter.pragmaticengineer.com/i/161033486/metas-latest-llama-release-disappoints">deeply disappointing</a></p></li></ul><p><strong>In June that year, Meta acquired a 49% stake in Scale AI to reboot its AI efforts </strong>for a whopping $14.8B, and brought in Scale AI&#8217;s CEO, Alexandr Wang to take over Meta&#8217;s AI strategy. The acquisition of Chinese startup Manus AI for $2B is currently in question after China <a href="https://newsletter.pragmaticengineer.com/i/196004322/china-blocks-meta-from-buying-manus">blocked</a> the deal from being completed.</p><p>Based on the investment made into Scale AI and Wang, it&#8217;s pretty clear that Meta &#8211; and Zuckerberg &#8211; is determined to build a state-of-the-art LLM that can be competitive with the latest versions of Claude and ChatGPT. But Meta has to start pretty much from scratch, and it&#8217;s up to Alexandr Wang to deliver.</p><p>Scale AI brings in a very specific kind of expertise to Meta, as one of the best in the industry in:</p><ul><li><p><strong>Training data and labeling: </strong>Scale started, and is still best known, as a provider of high-quality labeled datasets for machine learning and AI training, including code, text, image, video, etc.</p></li><li><p><strong>RLHF and fine-tuning: </strong>A RLHF (reinforcement learning from human feedback) flow which Scale runs, where people give feedback for foundation models, as a &#8220;human in the loop&#8221; data engine that many leading AI labs use to create better LLMs.</p></li></ul><p>Wang seems to have a very broad reign to do what he has been an expert in: creating training data, doing data labeling and RLHF. This is being pulled off with the labor of Meta&#8217;s engineering workforce, and by surveilling it.</p><p><strong>Problem #1: Tracking keystrokes and mouse clicks, with no option to opt out. </strong>In late April, Meta told engineers they were being enrolled into a system that tracks every keystroke and click, to produce training data for Meta&#8217;s new AI. There&#8217;s no way to opt out.</p><p>Needless to say, this is invasive and raises privacy questions: If you log into your personal bank account, does the tool track you? What about when you&#8217;re writing a personal email, or responding to a personal call? Meta held no consultation and there are no workarounds; just a top-down decision being pushed through.</p><p>This month, Reuters <a href="https://www.reuters.com/world/meta-scales-back-ai-mouse-clicks-tool-citing-employee-concerns-2026-06-02/">reported</a> that people&#8217;s concerns there are finally being heard:</p><blockquote><p>&#8220;Meta is dialing back elements of its plan to collect employee mouse movements, keystrokes and other actions for use as AI &#8203;training data, it said in an internal memo on Tuesday, following weeks &#8203;of angry pushback from staffers.</p><p>New controls will allow employees to pause &#8288;the data collection for up to 30 minutes at a time and &#8203;request exemptions from the initiative, according to the memo, authored by Stephane Kasriel, &#8203;a vice president in Meta&#8217;s AI model-building Superintelligence Labs unit.&#8221;</p></blockquote><p>From talking with current Meta engineers, I understand the logging system has not been rolled out in the UK due to data protection regulation.</p><p><strong>Problem #2: 30-50% of engineers on core teams have been forcefully reassigned to data labeling </strong>and RLHF, upsetting folks even more.<strong> </strong>Also starting in late April, product engineering teams received a mandate from above, whereby 30-50% of engineers were to leave the team and join the ADO org (Agent Data Optimisation).</p><p><strong>&#8220;Forceful&#8221; reassignment is very relevant here because of Meta&#8217;s traditional engineering culture. </strong>Between its founding in 2004 and until last year, Meta gave engineers autonomy to choose where they work and what they work on. This was structural to how the company worked:</p><ul><li><p>Engineers were not hired for a specific team (save for at the Staff+, levels, in some cases). They were hired to the company</p></li><li><p>During a 6-week bootcamp, new hires got familiar with Meta&#8217;s engineering culture and chose a team</p></li><li><p>Team matching meant talking with multiple teams who had headcount, doing small work with them, and finding a match</p></li><li><p>Internal transfers were easy, and often initiated by engineers</p></li></ul><p>Team selection via bootcamp started to die down in around 2024, but any Meta engineer with at least two years&#8217; tenure knows that previously they chose what to work on, and of course, could pick the most impactful thing to work on. And then, out of the blue, they&#8217;re assigned to a division where the impact is not clear, the work is menial, and doing it too long will surely hurt their career prospects.</p><p><strong>&#8220;Data labeling&#8221; is more involved work, even though a bit repetitive.</strong> There are labeling tasks, where you create a website, then look at it and decide if it looks good or not, and give this feedback: this is the &#8220;typical&#8221; data labeling. But this is the less frequent type of work. But then there are more involved AI training tasks, which looks like this:</p><ul><li><p>Come up with a task that the AI should do</p></li><li><p>Then write the tests that confirm the result</p></li><li><p>Package all of this up into a Docker container, using <a href="https://github.com/harbor-framework/harbor">Harbor framework</a></p></li><li><p>Then read the code that the AI writes - often doing this based on feedback from several models, and give it feedback</p></li></ul><p>This work is not easy to do &#8212; and you can see why you need good software engineers to do it! &#8212; but it gets repetitive really quickly. Most engineers who I talked to said that they found it hard to do this work motivated day-in, day-out. Then again, I did talk with an engineer inside the org who said that by varying the technologies they use, and challenging themselves, they found this work motivating and interesting! This engineer expects there to be more software engineering work coming up, after the phase of training passes. <em>There&#8217;s a lesson here: when life gives you lemons, you can either complain about it, or you can make lemonade, like this dev has done so.</em></p><p>This training work is secretive across the AI industry, and vendors are offering $100+ per hour for devs to do this type of work. There are rumors across the industry that OpenAI and Anthropic spends more on these training environments (to make the models great at coding) than the model training run itself!</p><p><strong>Infrastructure and security teams were hit especially hard by reassignments. </strong>I talked with several engineers in infra orgs, who had 30-50% of their teams drafted into the ADO org. And in some cases, it was the best engineers who left.</p><p>One engineer told me that the whole situation feels like the movie, The Hunger Games, when tributes are randomly selected and then removed from their environment, to something completely different. Except, at Meta, many more folks are being affected, with between three and five from a 10-person team going from building products used by hundreds of millions, to giving human feedback on AI-generated GitHub repos, over and over. So, a wider impact than in the Hunger Games, but with less drastic consequences.</p><p><strong>Around 6,500 people are in the ADO org, more than at OpenAI and Anthropic. </strong>Roughly four to five thousand of these are software engineers. Meta has around 25,000 engineers, meaning that one in every 5-6 software engineers may now find themselves doing data labeling full time.</p><p>As you can imagine, people are actively open to new positions, and nobody is updating their job title on LinkedIn and elsewhere to &#8220;data labeling at Meta.&#8221;</p><p>I&#8217;ve spoken with people in this role and they don&#8217;t like doing it, and feel upset about the top-down decision making. The silver lining is that they still have a job, have retained their salary, and were not part of layoffs. They still have time to leave Meta for something that pays comparably and is not a data labeling job.</p><h2>3. Core engineering folks feel treated like trash</h2><p><strong>Problem #3: a month-long waiting game, stoking fear across the company. </strong>On 20 April, Reuters <a href="https://www.reuters.com/world/meta-targets-may-20-first-wave-layoffs-additional-cuts-later-2026-2026-04-17/">reported</a> that Meta planned to lay off 10% of staff in a month&#8217;s time, and Meta confirmed the news, meaning there was a period of four weeks when everyone knew that they could be unemployed very soon.</p><p>Forced reassignments to data labeling started to happen. As I covered <a href="https://newsletter.pragmaticengineer.com/i/196795826/3-meta-forcefully-assigns-engineers-to-data-labelling-pre-layoff">at the time:</a></p><blockquote><p>&#8220;Understandably, there are mixed feelings about this redeployment [to data labeling], with layoffs coming soon. On Wednesday, 20 May, Meta will announce layoffs. Perhaps those moved to do data labeling could actually be &#8220;safer&#8221; than colleagues on product teams. Of course, this is speculation, but it would be cruel if Meta cut devs reassigned to data labeling.&#8221;</p></blockquote><p><strong>Problem #4: Performance review is hyper-aggressive at Meta, so devs optimize all metrics. </strong>The internal performance review process, PSC (Performance Summary Cycle), is very stringent, compared to Google and Apple, I&#8217;ve learned. Managers inside Meta &#8220;fight&#8221; over the pay packets of their employees, which involves &#8220;knocking down&#8221; the packet of engineers on other teams, so their direct reports are ranked higher. It&#8217;s common to weaponize metrics in this process &#8211; be that business impact, the number of code reviews, number of lines of code written, pre-AI (see <a href="https://newsletter.pragmaticengineer.com/p/the-coding-machine-at-meta">our Coding Machine archetype podcast</a> on this.)</p><p>Quotas are handed down to managers for the splits of the workforce to be put in each &#8216;bucket&#8217;, and the internal politics gets heated as managers try to get their reports into higher buckets.</p><p>After a few years, engineers at Meta learn that the best way to not get a bad PSC rating is to have all metrics &#8211; impact, code committed, and other numbers &#8211; higher than their peers&#8217; are. <em>Learn more about <a href="https://newsletter.pragmaticengineer.com/p/performance-calibrations">the internal politics of performance calibrations.</a></em></p><p><strong>Problem #5: tokens are measured as part of perf, so devs aggressively optimize for it. </strong>When layoffs were confirmed, engineers also learned that managers shall inspect token count during perf reviews. This raised worries that those with low token counts might be marked as underperformers and dismissed.</p><p>So, what is the natural reaction to this as an engineer at Meta? They started using AI tools for the sake of generating more tokens. This happened while Meta had an internal token leaderboard, encouraging tokenmaxxing. As I wrote <a href="https://newsletter.pragmaticengineer.com/i/194426825/1-tokenmaxxing-weird-new-trend">on 16 April:</a></p><blockquote><p>&#8220;As per The Information, Meta employees <a href="http://reported">used</a> a total of 60.2 trillion AI tokens (!!) in 30 days. If this was charged at Anthropic&#8217;s API prices, it would cost $900M. Of course, Meta is likely purchasing tokens at a discount, but that could still come in at $100M+ &#8211; in large part from senseless &#8220;tokenmaxxing&#8221;.&#8221;</p></blockquote><p><strong>The biggest problem: people stop caring about real work and focus on performative work. </strong>Let&#8217;s check the four ingredients that Meta&#8217;s leadership has decided to introduce to their workplace:</p><ol><li><p>Tracking the keyboards and mouse clicks of all engineers, where legally possible</p></li><li><p>Reassign a good chunk of engineers to fulltime data labeling</p></li><li><p>Let staff know that 10% of them will be laid off</p></li><li><p>Have a culture where devs optimize for any and all metrics measured during PSC</p></li><li><p>Measure token usage as part of PSC</p></li></ol><p>Shake this mix up well, and what do you get? Two things:</p><ol><li><p><strong>Everyone overuses AI to boost their personal stats. </strong>An engineering workforce that pretends to work with as much AI, and as little human input, as possible. It&#8217;s a strange incentive where an outage caused by a failure to review code properly is not grounds for dismissal, but writing code by hand &#8211; instead of having an AI agent write it &#8211; could cost you your job</p></li><li><p><strong>Every longer-tenured engineer is seeking a new job, or at least considering it.</strong> Those who have been around at Meta longer term have seen enough. Let me describe this visually:</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rXjq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rXjq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 424w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 848w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 1272w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rXjq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png" width="1456" height="983" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:983,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rXjq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 424w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 848w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 1272w, https://substackcdn.com/image/fetch/$s_!rXjq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a19e01d-9126-456c-8369-f2663ff69cdc_1590x1074.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Why pretty much every engineer at Meta is looking for a way out, visualised</figcaption></figure></div><p>Fresh data seems to confirm that starting in May, a <em>lot</em> more engineers at Meta are looking for an &#8220;out.&#8221; Here&#8217;s how signups to leading Big Tech interview preparation service <a href="http://interviewing.io">interviewing.io</a> from Meta have changed over the last year and a half: we can see a massive jump in May vs the year before, as shared by founder and CEO <a href="https://x.com/alinelernerLLC">Aliner Lerner </a>with us:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fEQS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fEQS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 424w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 848w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 1272w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fEQS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png" width="1456" height="1046" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1046,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187267,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/202307236?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fEQS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 424w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 848w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 1272w, https://substackcdn.com/image/fetch/$s_!fEQS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ad3ffe5-21c8-4052-bf15-50c7e286e550_1614x1160.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><span>Signups to interviewing.io&#8217;s interview prep service from Meta. Source: </span><a href="http://interviewing.io"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">interviewing.io</span></a><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">.</span></figcaption></figure></div><p><em>(We covered more data from interviewing.io and other interesting data sources in the  deepdive <a href="https://newsletter.pragmaticengineer.com/p/the-job-market-in-2026-part-2">State of the software engineering job market in 2026</a>)</em></p><p>To its credit, Meta has given out generous retention equity packages to several engineers considered key on the remaining teams. These packages make it harder to get matching compensation elsewhere. Still, I talked to one engineer who got an equity top-up, and said that this approach helped him decide to leave as soon as possible because he feels bitter about the lack of autonomy and having no control over things.</p><h2>4. Most embarrassing-ever outage</h2><p>Meta&#8217;s core infra and security teams have suddenly found themselves severely understaffed. Most folks are pushing AI-generated code merged with AI-only reviews, without paying much attention to quality. After all, they&#8217;re dealing with the possibility of unemployment, while firefighting to operate a team without its best engineers whose headcount has been cut in half, all with the knowledge that AI usage could affect their own job security.</p><p><strong>Two weeks ago, on 30 May, the most embarrassing outage in Meta&#8217;s history happened. </strong>Here&#8217;s software engineer Siddharth Sundharam&#8217;s <a href="https://www.0xsid.com/blog/meta-account-takeover-fiasco">summary</a> (emphasis mine):</p><blockquote><p>&#8220;Yesterday, a slew of Instagram accounts, including some high profile ones like the Obama White House account, seemingly got hacked.</p><p>Look, I&#8217;m no spring chicken. I&#8217;ve spent almost a decade and a half identifying vulnerabilities and exploits at unicorn scale, but this is hands down the most unserious, &#8220;almost too stupid to be true&#8221; of them all.</p><p>The Takeover Flow:</p><p>Step 01: Faking the Location &amp; Initiating Support. All the attacker needs to kick this off is your account username. Then, they hop on a VPN or proxy close to your city so Instagram&#8217;s security algorithms don&#8217;t suspect a thing. (You can quite easily get this from your public profile or &#8220;About&#8221; section or a hundred other ways.) Once it looks like the request is coming from the correct region, they tell the Meta support AI that the account is hacked and ask it to send the verification codes to an arbitrary email address they control.</p><p>Step 02: That&#8217;s It. Really, that&#8217;s it.</p><p><strong>The first proper zero auth password reset I&#8217;ve seen in production.</strong> There appears to be no additional check as to whether the email being given is actually something the user has used before. Once the AI sends the security code to the attacker&#8217;s email, the attacker passes it right back to complete the verification. The platform hands over a fresh password reset link, granting full ownership to the attacker.&#8221;</p></blockquote><p>This is a security breach in which Meta left its extra-secure, reinforced front door unlocked, so that anyone could come in, and there was no alarm to notify anybody when it happened! It seemed Meta only noticed when users started reporting it on social media!</p><p><strong>From talking with folks inside Meta, I&#8217;ve learned that AI was at the heart of this outage. </strong>AI-generated, AI-reviewed code, and security teams being gutted were together the cause of this beyond-embarrassing incident. I poked around, and here&#8217;s what I gathered:</p><ul><li><p>Instagram&#8217;s Trust and Safety Team lost around 50% of its staff to data labeling and layoffs. Some of the most senior folks were drafted onto AI training tasks.</p></li><li><p>AI-generated changes that saw no human input, just another AI code review, were very common during the last two months, across the codebase. The change that caused this outage looked like one of these</p></li><li><p>Normally, the Trust and Safety team would be on top of monitoring and alerting of security breaches,  but it is currently in full disarray due to rapid, internal disorganization.</p></li></ul><p><strong>Meta&#8217;s Chief Security Officer resigned the very next day. </strong>The outage was resolved on Monday, 1 June, and an investigation started as part of the SEV process. On Tuesday, Meta&#8217;s Chief Information and Security Officer (CISO), Guy Rosen, <a href="https://www.bloomberg.com/news/articles/2026-06-02/meta-s-rosen-former-head-of-election-integrity-to-depart">announced</a> his departure.</p><p>Coincidence? I suspect not: the CISO might have stepped down if they warned against the Security org being gutted but were then ignored, and so no longer trusts leadership. I also imagine the CISO didn&#8217;t have the idea to move a good half of Instagram&#8217;s security team over to data labeling.</p><p><em>As a note, the previously worst outage was all Meta services going down for seven hours <a href="https://en.wikipedia.org/wiki/2021_Facebook_outage">in 2021</a>, due to a DNS / BGP configuration issue. It was a bad outage, but Meta handled the follow up well, in my opinion. After that 2021 outage, Meta <a href="https://engineering.fb.com/2021/10/04/networking-traffic/outage/">shared a postmortem and apology</a>. It has not done so for the latest Instagram account takeover outage.</em></p><h2>5. Internal mess</h2><p>Wired <a href="https://www.wired.com/story/mark-zuckerberg-meta-employee-meeting-interrupt-ai/?_sp=2e37591b-dcf6-4632-bbf6-bc7c570a4b65.1781609124066">shares more details</a> on just how bad the situation is inside Meta, right now:</p><blockquote><p>&#8220;Someone interrupted a livestreamed, employee-only presentation at Meta earlier this week with an expletive-filled outburst about &#8220;being the company&#8217;s bitch,&#8221; according to a recording heard by WIRED. The individual then asked the people leading the call to write to a specific Meta AI executive and &#8220;tell him that he&#8217;s a piece of shit.&#8221;</p><p>The incident, which took place on a call open to thousands of employees, reflects growing frustration inside the company&#8217;s Applied AI team, which was formed in March to support the work of AI researchers at Meta Superintelligence Labs. Three current employees tell WIRED there is widespread dissatisfaction with how Meta assembled the unit of about 6,500 engineers and product managers and the drudgework they allege they have been assigned to improve AI models.</p><p>&#8220;It&#8217;s literally the gulag,&#8221; one of the employees claims. &#8220;You have zero purpose in life all of a sudden, you barely interact with anyone, you just have these tasks every week.&#8221;</p></blockquote><p>There&#8217;s more: Meta&#8217;s Chief Product Officer, Chris Cox, reportedly admitted to staff that Meta&#8217;s upper leadership (the folks above him, meaning the C-level at Meta) created the mess. Also from Wired:</p><blockquote><p>During a meeting this week open to all employees at Instagram, Meta chief product officer Chris Cox addressed the &#8220;difficult&#8221; and &#8220;brutal&#8221; environment created by the &#8220;insanity of this company&#8221; in the past few months, according to a recording heard by WIRED. Cox applauded Instagram employees for launching features and serving around 2 billion users amid what he compared to &#8220;running a marathon in the middle of a hailstorm and then, like, your teammate gets replaced and then we&#8217;re recording you.&#8221;</p><p>&#8220;It&#8217;s like what the fuck,&#8221; he said, drawing laughs, before repeating himself. &#8220;It is like what the fuck.&#8221;</p></blockquote><h2>6. Self-inflicted wounds</h2><p>So, is there an ultimate source of the &#8220;insanity of this company&#8221;, as CPO Chris Cox put it? Engineers whom I talked to point the finger at two individuals: Mark Zuckerberg and Alexandr Wang. Zuckerberg has full control over the business, and has made the decisions to reallocate a good part of engineering folks to data labeling, to roll out tracking software, and to lay off 10% of staff when Meta achieved record revenue and profits. As the CEO, the buck clearly stops with him.</p><p>But it&#8217;s hard to unsee that &#8211; outside of layoffs &#8211; everything that Meta is doing is taken from the Scale AI playbook, and that surely comes from Wang:</p><ul><li><p>Mandatory keystroke and mouse tracking to generate training data</p></li><li><p>Forced data labeling with 4,500+ engineers is to generate high-quality RLHF, surely for Meta&#8217;s under-construction coding LLM</p></li><li><p>Taking away the best engineers from the heart of the business is surely signed off by Mark Zuckerberg, believing that it is more important for Meta to train a coding AI than it is to operate its core business like Instagram, Facebook or Messenger reliably. Oh, did I mention that on Saturday (12 June) Facebook and Instagram <a href="https://www.tomsguide.com/news/live/meta-instagram-facebook-messenger-down-6-12-2026-live-updates">had another SEV0</a>, that is, a full-on outage?</p></li></ul><p>Before all this happened, Meta <a href="https://newsletter.pragmaticengineer.com/i/195258143/3-morale-at-meta-hits-all-time-low">was on track</a> to overtake Google as the world&#8217;s #1 ads business by the end of the year. But for some reason, Mark Zuckerberg decided that building a coding LLM is more important.</p><p><strong>Meta&#8217;s leadership is now trying to undo all the damage they have done. </strong>Wired reports that Meta CTO, Andrew Bosworth, <a href="https://www.wired.com/story/andrew-bosworth-meta-employees-unrest/">admitted</a> to staff that the AI reorg was atrocious and committed to better communication in the future.</p><p>To me, it looks obvious that Zuckerberg doesn&#8217;t care how engineers feel about the massive changes, and that Bosworth likely ignored the chaos, all while engineers know for a fact that the next AI model matters more than they do to the business. Bosworth also said that employees will have access to AI coaching tools.<em> Very considerate, given the situation!</em></p><p>Based on all I&#8217;ve learned, Meta&#8217;s engineering culture is dead because leadership has made it clear that engineering at the company is <a href="https://newsletter.pragmaticengineer.com/p/profit-centers-cost-centers">a cost center</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uzPs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uzPs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 424w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 848w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 1272w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uzPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png" width="1456" height="948" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:948,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2270482,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.pragmaticengineer.com/i/202307236?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uzPs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 424w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 848w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 1272w, https://substackcdn.com/image/fetch/$s_!uzPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F220f78ee-73a9-4d1a-bfbd-371f36315d97_1678x1092.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Nice while it lasted</em></figcaption></figure></div><p>Needless to say, I hope my assessment is way off, but I&#8217;ve seen nothing yet from Mark Zuckerberg and Alexandr Wang &#8211; the two executives creating this current mess &#8211; to suggest it is.<em> There may be a short time period where, if major changes like data labeling assignments and staff tracking are undone, then things at Meta could return to normal. The longer the current conditions persist, the more tenured engineers will surely leave.</em></p><h2>7. Is &#8220;AI psychosis&#8221; just a Meta issue?</h2><p>It&#8217;s tragic to see a technical founder at Meta so focused on AI that he neglects the engineers who built the heart of his company. But is Meta a one-off exception?</p><p>Mitchell Hashimoto (creator of Ghostty, founder of HashiCorp) <a href="https://x.com/mitchellh/status/2055380239711457578?s=20">says</a> he is seeing similar behavior by other founders (emphasis mine:)</p><blockquote><p>&#8220;<strong>I strongly believe there are entire companies right now under heavy &#8220;AI psychosis&#8221; and it&#8217;s impossible to have rational conversations about it with them.</strong> I can&#8217;t name any specific people because they include personal friends I deeply respect, but I worry about how this plays out.</p><p>I lived through the great MTBF vs MTTR (mean-time-between-failure vs. mean-time-to-recovery) reckoning of infrastructure during the transition to cloud and cloud automation. All those arguments are rearing their ugly heads again but now it&#8217;s... the whole software development industry (maybe the whole world, really).</p><p>It&#8217;s frightening, because &#8216;psychosis folks&#8217; operate under an almost absolute &#8220;MTTR is all you need&#8221; mentality: &#8220;it&#8217;s fine to ship bugs because the agents will fix them so quickly and at a scale humans can&#8217;t do!&#8221; We learned in infrastructure that MTTR is great but you can&#8217;t yeet resilient systems entirely.</p><p>The main issue is I don&#8217;t even know how to bring this up to people I know personally, because bringing this topic up leads to immediate dismissals like &#8220;no no, it has full test coverage&#8221;, or &#8220;bug reports are going down&#8221; or something, which just don&#8217;t paint the whole picture.</p><p>We already learned this lesson once in infrastructure: you can automate yourself into a very resilient catastrophe machine. Systems can appear healthy by local metrics while globally becoming incomprehensible. Bug reports can go down while latent risk explodes. Test coverage can rise while semantic understanding falls. Changes happen so fast that nobody notices the underlying architecture decaying.</p><p>I worry.&#8221;</p></blockquote><p>The takeover outage at Instagram was exactly like this: the engineering team dropped the quality bar for AI-generated and AI-reviewed code, probably expecting that they could recover quickly from failures. And they did indeed recover&#8230; after the damage was done, high-profile Instagram accounts were hacked, and the system was compromised, all very publicly.</p><p>Mitchell highlights the specific concern of founders over-estimating the capabilities of AI, and consequently casting aside sensible safeguards when shipping code to production.</p><h2>Takeaways</h2><p>Most of us probably have something to learn from the disastrous events at Meta caused by hyper-focus on AI to the exclusion of people who are the lifeblood of that company.<strong> </strong>In some good news, I&#8217;m hearing that in the UK, some of the 10% layoffs have suddenly been cancelled: at the end of the mandatory consultation period, several infra and security teams are learning that no engineers on their team will be let go, as originally expected.</p><p>Meta has a booming business, and is already a beneficiary of AI via increased ads revenue. Meanwhile, my Facebook feed is filled with fake, AI-generated videos, with hundreds of comments from bots and people who seemingly don&#8217;t realize it&#8217;s AI. It all seems like just more content for Meta to show ads next to.</p><p>And yet, despite business booming, Meta&#8217;s leadership has gone on a crusade to inflict the most damage possible on its engineering org. Apparently, they&#8217;re now learning that most of it was pointless.</p><p><strong>If you&#8217;re in a leadership position and feeling the temptation to make drastic org changes for AI-related reasons, take a deep breath and see where it left Meta. </strong>Meanwhile, If you&#8217;re an engineer at a company whose leadership is over-indexing on AI, consider forwarding this article as additional context.</p><p>If you&#8217;re hiring standout engineers who are extremely hands-on with AI, then it&#8217;s never been easier to get talent from Meta, than right now. Every engineer I know at the company is an extremely early adopter of AI, and knows how to build products and AI infra. These folks have soured on the company and its leadership. Meta&#8217;s loss of talent will be the gain of other startups and the rest of Big Tech; it&#8217;s one benefit of AI that&#8217;s probably a bit unexpected &#8211; not least of all by Meta!</p><p>It seems like the old mantra of &#8220;move fast and break things&#8221; has now extended to Meta&#8217;s engineering org itself, with the company&#8217;s rush to over-invest in AI, so it will avoid missing the latest mega-trend in the tech industry.</p>]]></content:encoded></item><item><title><![CDATA[The Pulse: Did Anthropic’s new model just boost rival Codex’s market share?]]></title><description><![CDATA[Anthropic&#8217;s new model, Fable, has restrictions many users find unacceptable. Also: a new trend of smart model routing, Coinbase&#8217;s core service has no automatic cross-zone failover, and more.]]></description><link>https://newsletter.pragmaticengineer.com/p/did-anthropics-new-model-just-boost</link><guid isPermaLink="false">https://newsletter.pragmaticengineer.com/p/did-anthropics-new-model-just-boost</guid><dc:creator><![CDATA[Gergely Orosz]]></dc:creator><pubDate>Thu, 11 Jun 2026 16:26:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TeI_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0e46905-09eb-42df-ba51-722c91d4fb63_1316x1018.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The Pulse is a series covering events, insights, and trends within Big Tech and startups. Notice an interesting event or trend? Hit reply and share it with me.</em></p><p>Today, we cover:</p><ol><li><p><strong>Anthropic alienates customers with Fable&#8217;s data retention and nerf policies. </strong>Anthropic&#8217;s latest mode, Fable, stores customer prompts and data for 30+ days and performs worse if Anthropic thinks devs&#8217; usage could potentially pose a commercial threat. The launch is an urgent reminder to have an off-ramp from Claude if you want to be able to vote with your feet.</p></li><li><p><strong>New trend: smart model routing. </strong>Are there any &#8216;intelligent&#8217; router solutions out there which select the right model for the right task? I looked into it, and there are a few options. More suggestions welcome!</p></li><li><p><strong>Reliability fail: No automated zone failover for Coinbase&#8217;s global trading service. </strong>Back in 2016, Uber had a cross-region failover for its core business. Ten years later, Coinbase does not, so it&#8217;s little wonder the platform suffered an embarrassing 10-hour outage. The big mess is a head scratcher.</p></li><li><p><strong>Industry pulse. </strong>Anthropic and OpenAI file for IPOs, open source project quits GitHub after maintainer banned without appeal, Opendoor &#8220;reshores&#8221; jobs from India to the US with AI-native engineers, and more.</p></li><li><p><strong>Are LLMs eroding software engineering skills? </strong>A software engineer admits they feel increasingly useless due to how capable LLMs are, in an article that has resonated with lots of folks. My sense is that we give too much credit to LLMs, while underestimating our own capabilities and understanding.</p></li></ol><h2>1. Anthropic&#8217;s new model release is a reminder to have an off-ramp plan from Claude</h2>
      <p>
          <a href="https://newsletter.pragmaticengineer.com/p/did-anthropics-new-model-just-boost">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>