<?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[Grokking the Tech Career]]></title><description><![CDATA[Interview prep & career advice for devs. Tips & takeaways from 15+ years in tech]]></description><link>https://grokkingtechcareer.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!OjJk!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba5a5ea-c5d1-4d3c-8f38-d184957668ab_256x256.png</url><title>Grokking the Tech Career</title><link>https://grokkingtechcareer.substack.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 11 May 2026 11:06:08 GMT</lastBuildDate><atom:link href="https://grokkingtechcareer.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Fahim ul Haq]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[grokkingtechcareer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[grokkingtechcareer@substack.com]]></itunes:email><itunes:name><![CDATA[Fahim ul Haq]]></itunes:name></itunes:owner><itunes:author><![CDATA[Fahim ul Haq]]></itunes:author><googleplay:owner><![CDATA[grokkingtechcareer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[grokkingtechcareer@substack.com]]></googleplay:email><googleplay:author><![CDATA[Fahim ul Haq]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Generative system design]]></title><description><![CDATA[Traditional systems execute instructions while generative systems produce possibilities.]]></description><link>https://grokkingtechcareer.substack.com/p/generative-system-design</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/generative-system-design</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Mon, 11 May 2026 07:25:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!l55e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For most of software history, systems were designed around a relatively stable assumption: software executes instructions deterministically. Engineers wrote logic, systems processed inputs, and outputs followed predictable paths through carefully controlled workflows. Even highly <a href="https://www.educative.io/courses/distributed-systems-practitionershttps://www.educative.io/courses/grokking-the-system-design-interview?aff=xjW0">distributed systems</a> ultimately behaved like enormous deterministic machines. The complexity came from scale, coordination, latency, and infrastructure management, not from the system independently generating variable outcomes. If something behaved unexpectedly, engineers assumed there was a bug somewhere in the code, the network, or the infrastructure stack.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l55e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l55e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!l55e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!l55e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!l55e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l55e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1933927,&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://grokkingtechcareer.substack.com/i/197178866?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.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_!l55e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!l55e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!l55e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!l55e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa90402f-e490-4205-bf56-866761ff5f7e_1536x1024.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 role="img" 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><title></title><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><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Generative systems changed that assumption quietly at first, and then all at once. <a href="https://www.educative.io/courses/generative-ai-system-design?aff=xjW0">Generative system design</a> no longer simply execute instructions in predictable ways. They generate outputs probabilistically. They synthesize responses dynamically based on context, retrieval pipelines, memory systems, and continuously evolving inputs. The same prompt can produce different results under slightly different conditions. The architecture no longer revolves entirely around deterministic execution paths because the central computational layer itself behaves probabilistically.</p><blockquote><p>Traditional systems execute instructions. Generative systems produce possibilities.</p></blockquote><p>That shift matters more than many architectural discussions currently acknowledge. Much of modern AI discourse still treats <a href="https://www.educative.io/courses/essentials-of-large-language-models-a-beginners-journey?aff=xjW0">large language models</a> as interchangeable API layers that can simply be inserted into existing application stacks. But production generative systems behave differently enough from traditional software that they force engineers to rethink assumptions around reliability, observability, orchestration, failure handling, and even ownership of system behavior itself. The challenge is not simply adding AI to software. The challenge is designing infrastructure around systems whose behavior cannot be fully predicted ahead of time.</p><h2><strong>Why generative systems feel fundamentally different</strong></h2><p>Traditional software systems are built around explicit logic. Engineers define workflows, conditionals, execution paths, and state transitions directly. Even when systems become extremely complicated operationally, the architecture still reflects intentional deterministic behavior. The software does exactly what it was programmed to do, even if the resulting complexity becomes difficult to manage at scale. Failures usually emerge from identifiable causes because the system itself is fundamentally rule-based.</p><p>Generative systems operate differently because the central computation layer introduces probabilistic behavior directly into the architecture. Outputs emerge statistically rather than deterministically. Responses depend not only on the immediate input, but also on context windows, retrieval quality, prompt structure, model state, token constraints, and external orchestration layers. Two seemingly identical requests can produce subtly different outcomes because the system is synthesizing responses dynamically rather than retrieving predefined outputs.</p><p>This changes how engineers reason about reliability itself. Reliability in traditional systems usually means reproducibility. Given the same inputs, the system should behave consistently. In generative systems, reproducibility becomes less absolute. Engineers increasingly evaluate systems probabilistically rather than deterministically. The architecture shifts from guaranteeing exact behavior toward constraining ranges of acceptable behavior. That is a significant conceptual change for software engineering because software infrastructure historically optimized around predictability above almost everything else.</p><p>The psychological effect on engineering teams is subtle but important. Traditional systems fail in ways engineers can usually explain. Generative systems occasionally fail in ways that sound philosophical. Outputs drift semantically. Context influences behavior unexpectedly. Retrieval pipelines surface misleading information. Somewhere along the way, debugging started involving psychology.</p><h2><strong>The shift from workflows to orchestration</strong></h2><p>One of the biggest architectural changes introduced by generative systems is that orchestration became more important than isolated computation. Modern AI applications rarely consist of a single model responding independently to user requests. Instead, production systems increasingly coordinate multiple interacting components simultaneously: language models, retrieval systems, vector databases, memory layers, external APIs, evaluation pipelines, moderation systems, and policy engines.</p><p>The system no longer behaves like a traditional request-response application. It behaves more like an orchestrated environment where different subsystems continuously exchange context and influence outcomes dynamically. The architecture increasingly revolves around managing interactions between probabilistic components rather than simply scaling deterministic services.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9avF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9avF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9avF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9avF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9avF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9avF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1849802,&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://grokkingtechcareer.substack.com/i/197178866?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.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_!9avF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9avF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9avF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9avF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b945137-2db5-4f40-aae4-83db9d153d97_1536x1024.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 role="img" 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><title></title><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>This shift explains why many early AI demos felt deceptively simple compared to production deployments. Demos often isolate the model itself while hiding the surrounding orchestration complexity entirely. In production environments, however, the orchestration layer frequently dominates the actual engineering effort. Engineers spend enormous amounts of time coordinating retrieval behavior, context assembly, fallback handling, observability instrumentation, rate limiting, evaluation pipelines, and policy enforcement systems. The model becomes only one component inside a much larger operational ecosystem.</p><p>What makes this operationally difficult is that orchestration itself becomes partially dynamic. Retrieval pipelines adapt based on context. Tool invocation varies between requests. Memory systems alter future behavior gradually over time. The architecture stops behaving like a static workflow graph and starts behaving more like an adaptive coordination system. And adaptive systems are always harder to reason about than deterministic workflows.</p><h2><strong>Context becomes infrastructure</strong></h2><p>In traditional software systems, context was usually treated as application state. In generative systems, context increasingly behaves like infrastructure itself. The quality, structure, availability, and management of context directly shape system behavior in ways that are operationally significant.</p><p>Context windows, retrieval pipelines, conversation memory, embeddings, and vector search layers now determine how generative systems reason, respond, and adapt over time. Engineers are no longer simply managing infrastructure around computation. They are managing infrastructure around understanding itself.</p><ul><li><p>Context affects output quality</p></li><li><p>Retrieval affects system reliability</p></li><li><p>Memory changes system behavior over time</p></li></ul><p>This introduces architectural concerns that traditional software systems rarely faced directly. Longer context windows improve coherence but increase latency and cost. Retrieval pipelines improve factual grounding but introduce dependency complexity and ranking uncertainty. Persistent memory improves continuity while simultaneously increasing behavioral unpredictability over time.</p><p>What makes context especially important is that it influences outputs indirectly rather than deterministically. The same retrieval set can lead to different responses depending on prompt structure, token allocation, model interpretation, or surrounding conversational state. Engineers increasingly optimize systems not around exact execution paths, but around probabilistic behavioral shaping.</p><p>That changes how infrastructure decisions are made. Retrieval latency becomes part of response quality. Embedding freshness becomes operationally meaningful. Context assembly pipelines influence hallucination rates. Architectural concerns that once belonged primarily to application logic now sit directly inside infrastructure conversations.</p><h2><strong>Retrieval systems quietly became part of the stack</strong></h2><p>One of the more important shifts in modern AI infrastructure is that retrieval systems moved from optional enhancement to foundational architecture. Generative systems increasingly depend on dynamically retrieved external knowledge because models alone cannot reliably encode all required information operationally.</p><p>Retrieval-augmented generation systems fundamentally change software assumptions because the system&#8217;s knowledge state becomes partially externalized. Instead of relying entirely on model weights, systems continuously fetch relevant information dynamically from vector databases, search indexes, internal documentation systems, APIs, or structured knowledge sources. The model becomes less of a standalone intelligence layer and more of a reasoning engine operating across external information environments.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-64r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-64r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!-64r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!-64r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!-64r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-64r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1851208,&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://grokkingtechcareer.substack.com/i/197178866?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.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_!-64r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!-64r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!-64r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!-64r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33c468c2-07f4-482e-8e7e-5bd3e7de7c06_1536x1024.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 role="img" 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><title></title><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>This changes infrastructure priorities significantly. Retrieval quality now directly affects system correctness. Latency budgets must include embedding generation, vector search, ranking pipelines, and context injection overhead. Knowledge freshness becomes operationally important because outdated retrieval data degrades outputs even when the model itself remains unchanged.</p><p>The result is that generative systems increasingly resemble distributed knowledge orchestration systems rather than standalone applications. Models reason across dynamically assembled information rather than static internal representations alone. That creates architectures whose behavior depends heavily on retrieval consistency, ranking quality, indexing strategies, and contextual assembly pipelines.</p><p>And importantly, retrieval introduces new failure modes. The system may retrieve technically relevant but semantically misleading information. Context ranking errors can distort reasoning subtly without producing obvious infrastructure failures. The architecture becomes increasingly dependent on systems whose correctness is contextual rather than absolute.</p><h2><strong>The operational problem nobody expected</strong></h2><p>The operational complexity of production generative systems is still widely underestimated because demos hide most of the difficult parts. Demo environments isolate models from operational reality. Production systems inherit all the complexity of distributed systems plus entirely new categories of probabilistic behavior.</p><p>Latency becomes unpredictable because inference workloads fluctuate dynamically based on context length, retrieval depth, orchestration complexity, and model routing decisions. Costs become difficult to stabilize because token consumption scales nonlinearly across workloads. Outputs vary semantically even when infrastructure remains healthy. Monitoring becomes harder because failures increasingly emerge behaviorally rather than technically.</p><blockquote><p>Generative systems don&#8217;t just introduce new infrastructure problems. They introduce systems that behave differently every time you look at them.</p></blockquote><p>This unpredictability creates unusual operational stress for engineering organizations. Traditional observability tooling assumes relatively stable behavioral expectations. Generative systems violate those assumptions constantly. Metrics may appear healthy while outputs degrade semantically. Infrastructure can remain fully operational while hallucination rates quietly increase due to subtle retrieval shifts or context fragmentation.</p><p>Production environments expose how much AI infrastructure revolves around behavioral management rather than raw computation. Engineers increasingly spend time evaluating outputs qualitatively, monitoring drift probabilistically, and constructing feedback systems capable of detecting semantic degradation before users notice it operationally.</p><p>The demos rarely mention any of this because operational reality is much harder to present elegantly than model capability itself.</p><h2><strong>Human oversight returns to the center</strong></h2><p>One of the more surprising consequences of generative systems is that human oversight became more important, not less. Early AI narratives often implied that increasingly capable systems would gradually reduce the need for human intervention. Operational reality moved in the opposite direction.</p><p>As generative systems became more autonomous, organizations discovered that unrestricted autonomy creates substantial reliability, legal, and trust risks. Hallucinations, reasoning inconsistencies, unsafe outputs, policy violations, and retrieval errors all introduce operational uncertainty that many environments cannot tolerate fully unattended.</p><p>As a result, modern generative architectures increasingly revolve around layered oversight mechanisms. Moderation systems filter outputs. Evaluation pipelines validate behavior. Human approval layers remain embedded inside high-risk workflows. Policy enforcement systems constrain model behavior dynamically. Observability tooling monitors semantic degradation continuously.</p><p>This is not because the models are &#8220;bad.&#8221; It is because probabilistic systems operating in real-world environments create unavoidable uncertainty. And uncertainty changes how organizations think about operational authority.</p><p>The deeper shift here is architectural. Human intervention is no longer treated merely as customer support or operational exception handling. It increasingly becomes part of the infrastructure design itself. Engineers now design systems assuming that human judgment remains necessary at specific points inside probabilistic workflows.</p><p>That represents a meaningful reversal from earlier automation narratives.</p><h2><strong>Why scaling generative systems is not just a compute problem</strong></h2><p>One misconception that still dominates AI conversations is the assumption that scaling generative systems primarily means adding more compute. Compute matters enormously, obviously, but operational scaling increasingly depends on orchestration complexity, retrieval performance, context management, caching strategies, observability systems, and cost control mechanisms.</p><p>Generative workloads scale differently from traditional software systems because inference cost grows directly with usage intensity. Every additional user may increase computational demand substantially. Longer context windows increase latency and token consumption simultaneously. Better outputs often require more retrieval depth, more orchestration layers, or more expensive reasoning pathways.</p><ul><li><p>More users increase inference cost directly</p></li><li><p>Longer context increases latency</p></li><li><p>Better outputs often require more orchestration</p></li></ul><p>Caching becomes complicated because outputs are probabilistic rather than deterministic. Observability becomes expensive because evaluating semantic quality requires richer instrumentation than traditional metrics systems provide. Routing decisions become operationally important because organizations increasingly optimize workloads across multiple models dynamically based on cost, latency, and reasoning quality.</p><p>Scaling generative systems therefore becomes less about pure horizontal infrastructure expansion and more about managing probabilistic coordination efficiently across interacting subsystems.</p><h2>Traditional systems vs generative systems</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!89G4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!89G4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png 424w, https://substackcdn.com/image/fetch/$s_!89G4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png 848w, https://substackcdn.com/image/fetch/$s_!89G4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png 1272w, https://substackcdn.com/image/fetch/$s_!89G4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!89G4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png" width="1096" height="656" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:656,&quot;width&quot;:1096,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:311121,&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://grokkingtechcareer.substack.com/i/197178866?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.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_!89G4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png 424w, https://substackcdn.com/image/fetch/$s_!89G4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png 848w, https://substackcdn.com/image/fetch/$s_!89G4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.png 1272w, https://substackcdn.com/image/fetch/$s_!89G4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a748408-2207-488e-b064-12f1c9c1fee8_1096x656.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 role="img" 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><title></title><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>What this comparison reveals is that generative systems are not simply &#8220;traditional software plus AI.&#8221; They represent a deeper architectural transition toward systems whose behavior emerges dynamically rather than deterministically. Engineers increasingly design environments that shape probabilistic outcomes instead of controlling exact execution paths directly.</p><p>That requires a different mindset operationally. Reliability becomes probabilistic. Observability becomes semantic. Infrastructure becomes partially behavioral. Traditional software abstractions still matter enormously, but they no longer fully describe how these systems behave under real-world conditions.</p><h2><strong>Failure becomes harder to classify</strong></h2><p>Failure in generative systems is fundamentally more difficult to categorize than failure in traditional software. In deterministic systems, failures usually emerge from identifiable code paths, infrastructure outages, or implementation bugs. Generative systems often fail through interactions between components rather than explicit technical breakdowns.</p><p>Hallucinations emerge probabilistically. Retrieval pipelines surface misleading context. Memory systems influence future behavior unexpectedly. Reasoning quality degrades gradually across conversational state transitions. Context leakage introduces subtle inconsistencies that may not appear in infrastructure metrics at all.</p><blockquote><p>In traditional systems, bugs usually come from code paths. In generative systems, failures increasingly emerge from interactions.</p></blockquote><p>This changes debugging itself. Engineers increasingly investigate behavioral patterns rather than isolated implementation faults. Root causes may involve retrieval ranking, prompt structure, memory contamination, orchestration timing, token allocation, or contextual interactions across multiple systems simultaneously.</p><p>The architecture becomes harder to reason about because no single subsystem fully determines outputs independently anymore. Behavior emerges collectively across interacting probabilistic layers.</p><p>And collective behavior is always harder to constrain operationally.</p><h2><strong>The changing role of software engineers</strong></h2><p>As generative systems evolve, the role of software engineers shifts gradually alongside them. Engineers increasingly spend less time encoding explicit behavior directly and more time orchestrating environments where behavior emerges dynamically through models, retrieval systems, policies, memory layers, and evaluation pipelines.</p><p>The work becomes more about coordination than direct control.</p><p>Observability systems grow more important because engineers need visibility into semantic degradation and behavioral drift. Policy layers become architectural concerns rather than compliance afterthoughts. Evaluation infrastructure expands because testing probabilistic systems requires continuous behavioral assessment rather than static correctness verification alone.</p><p>Engineering in 2026 feels different partly because software itself behaves differently. Systems increasingly adapt, generate, retrieve, and reason rather than merely execute instructions deterministically. That changes how engineers think about ownership, reliability, debugging, and operational governance.</p><p>The architecture becomes less mechanical and more ecological.</p><h2><strong>Misconceptions about generative system design</strong></h2><p>Several misconceptions continue distorting discussions around generative systems. One is the belief that better models automatically solve infrastructure problems. In reality, stronger models often increase orchestration complexity, observability requirements, and operational cost simultaneously.</p><p>Another misconception is that generative systems are &#8220;just APIs with prompts.&#8221; Production systems increasingly involve sophisticated retrieval pipelines, memory architectures, policy enforcement layers, routing systems, evaluation infrastructure, and coordination frameworks far beyond isolated prompt interactions.</p><p>There is also a persistent belief that more autonomy automatically improves systems. Operational reality often suggests the opposite. Greater autonomy increases flexibility while simultaneously increasing unpredictability, governance complexity, and trust challenges.</p><p>And perhaps most importantly, many organizations still underestimate how much traditional systems engineering remains necessary. Generative systems do not replace architecture. They make architecture more important because probabilistic systems require stronger orchestration, observability, and coordination infrastructure around them.</p><h2><strong>What generative systems reveal about the future of software</strong></h2><p>Generative systems reveal something larger about where software itself is heading. Software is gradually shifting from deterministic execution environments toward adaptive systems capable of probabilistic reasoning, contextual behavior, and dynamic orchestration.</p><p>That shift changes engineering culture fundamentally. Reliability becomes less absolute. Ownership becomes more distributed across interacting systems. Observability expands beyond infrastructure health into behavioral monitoring. Human oversight becomes infrastructural rather than exceptional.</p><p>The future of software likely involves systems that remain partially unpredictable operationally even when functioning correctly. Engineers increasingly design architectures not around eliminating uncertainty entirely, but around constraining and managing uncertainty intelligently.</p><p>That is a very different philosophy from traditional software engineering.</p><p>And honestly, the industry still has not fully absorbed what that means yet.</p><h2><strong>Conclusion: architecture in a world of probabilistic systems</strong></h2><p>Generative systems represent a deeper architectural shift than most discussions currently acknowledge. They are not simply new interfaces layered on top of existing software patterns. They change foundational assumptions about predictability, orchestration, reliability, observability, and system behavior itself.</p><p>Engineers are increasingly designing systems whose outputs cannot be fully predicted ahead of time. The architecture revolves less around deterministic execution and more around shaping probabilistic behavior through orchestration, retrieval, context management, policy enforcement, and human oversight.</p><p>That does not make traditional software engineering obsolete. Distributed systems, scalability, infrastructure reliability, and operational discipline still matter enormously. But they now coexist with systems whose behavior emerges dynamically rather than mechanically.</p><blockquote><p>The hardest part of generative systems isn&#8217;t making them intelligent. It&#8217;s building systems around intelligence that behaves unpredictably.</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Agentic System Design]]></title><description><![CDATA[There was a time when software systems mostly waited.]]></description><link>https://grokkingtechcareer.substack.com/p/agentic-system-design</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/agentic-system-design</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Sun, 10 May 2026 14:59:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5WX-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There was a time when software systems mostly waited.</p><p>They waited for requests, waited for inputs, waited for explicit instructions written by engineers who already knew the sequence of actions the system was supposed to execute. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Even large-scale distributed systems largely operated under this assumption. Complexity came from scale, concurrency, and coordination&#8212;not from the system independently deciding what it should do next.</p><p>That assumption is starting to break.</p><p><a href="https://www.educative.io/courses/agentic-ai-systems?aff=xjW0">Agentic system design</a> represents something meaningfully different from earlier generations of software architecture because they shift systems away from rigid workflow execution and toward goal-oriented behavior. Instead of following fixed sequences of operations, these systems increasingly evaluate context, select actions dynamically, coordinate tools, maintain memory across interactions, and adapt behavior based on evolving objectives.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5WX-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5WX-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!5WX-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!5WX-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!5WX-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5WX-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1455420,&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://grokkingtechcareer.substack.com/i/196882328?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.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_!5WX-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!5WX-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!5WX-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!5WX-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7d8c7c-3308-4ecc-bcfc-cbfd49629cdd_1024x1536.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 role="img" 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><title></title><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>And once systems begin making decisions instead of simply executing instructions, many traditional assumptions in <a href="https://www.educative.io/courses/grokking-the-system-design-interview?aff=xjW0">System Design</a> become unstable.</p><blockquote><p>Traditional systems execute workflows. Agentic systems pursue goals.</p></blockquote><p>That sounds like a subtle distinction at first. In practice, it changes almost everything about how engineers reason about architecture, reliability, coordination, observability, and operational control.</p><p>Because workflows are predictable.</p><p>Goals are not.</p><h2>The limits of traditional System Design assumptions</h2><p>Most classic System Design principles emerged from environments where system behavior was largely deterministic. Services communicated through explicit contracts. APIs produced predictable outputs given known inputs. Orchestration layers followed predefined sequences. Failures were generally traceable to implementation bugs, infrastructure outages, or scaling bottlenecks.</p><p>Even when systems became highly distributed, the architecture itself remained intentionally constrained. Engineers designed workflows carefully because predictability was considered a feature, not a limitation. The more controlled the execution path, the easier the system became to reason about operationally.</p><p>This is why traditional <a href="https://www.educative.io/courses/distributed-systems-practitioners?aff=xjW0">distributed systems</a> engineering placed enormous emphasis on consistency guarantees, reproducibility, observability, and deterministic debugging workflows. The assumption underneath all of it was that the system should behave in understandable ways if engineered correctly.</p><p>Agentic systems challenge that assumption directly.</p><p>Once systems begin dynamically selecting tools, generating plans, revising strategies, or coordinating actions autonomously, behavior becomes partially emergent rather than fully predefined. The architecture no longer represents a fixed execution graph. It becomes a decision-making environment.</p><p>That distinction matters because emergent systems are harder to predict, harder to debug, and harder to constrain operationally.</p><p>And yet modern AI infrastructure increasingly pushes directly in that direction.</p><h2>What makes a system &#8220;agentic&#8221;</h2><p>The term &#8220;agentic&#8221; gets used somewhat loosely now, often attached to any application involving large language models. But not every LLM-powered application is actually agentic in a meaningful architectural sense.</p><p>An agentic system is not simply generating responses. It is operating toward objectives.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MlkZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MlkZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!MlkZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!MlkZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!MlkZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MlkZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1479366,&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://grokkingtechcareer.substack.com/i/196882328?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.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_!MlkZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!MlkZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!MlkZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!MlkZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb880afa-2f30-4552-a476-dc2728b76f35_1024x1536.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 role="img" 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><title></title><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>The defining characteristic is not conversation&#8212;it is autonomous decision-making within bounded environments. These systems evaluate goals, reason about possible actions, select tools dynamically, maintain contextual memory, and adjust behavior based on evolving state.</p><p>Importantly, the sequence of operations is not always predetermined by the engineer ahead of time.</p><ul><li><p>The system decides what actions to take</p></li><li><p>The sequence of actions is not always predefined</p></li><li><p>Outcomes emerge dynamically from context and goals</p></li></ul><p>This introduces a very different architectural model from traditional software systems. Instead of workflows being fully encoded into application logic, workflows become partially generated at runtime through reasoning processes.</p><p>That shift sounds abstract until you look at what modern agentic systems are actually doing operationally: retrieving context dynamically, invoking APIs autonomously, orchestrating multi-step workflows, coordinating between tools, maintaining long-term memory, and adapting behavior based on prior interactions.</p><p>The system stops behaving like a static application and starts behaving more like an adaptive operator moving through an environment.</p><p>And environments are inherently harder to control than workflows.</p><h2>Why AI agents changed architectural thinking in 2026</h2><p>The rise of large language models between 2023 and 2026 accelerated this shift dramatically because LLMs introduced a general-purpose reasoning interface flexible enough to coordinate actions dynamically across tools and systems.</p><p>Initially, most organizations used LLMs primarily for generation tasks&#8212;summarization, content creation, conversational interfaces, retrieval augmentation. But once models became capable of planning multi-step workflows and interacting reliably with external systems, architectural thinking started changing quickly.</p><p>The system was no longer simply responding.</p><p>It was acting.</p><p>That distinction triggered a major shift in infrastructure expectations. Suddenly engineers were not just building applications around inference APIs. They were designing environments where models could make operational decisions autonomously.</p><p>This introduced entirely new categories of architectural concerns:</p><ul><li><p>Tool orchestration</p></li><li><p>Long-term memory management</p></li><li><p>Multi-agent coordination</p></li><li><p>Policy enforcement layers</p></li><li><p>Behavioral observability</p></li><li><p>Human intervention mechanisms</p></li></ul><p>Traditional application infrastructure was never really designed for systems capable of adaptive planning behavior. It assumed deterministic orchestration controlled explicitly by developers.</p><p>Agentic architectures destabilize that assumption because orchestration itself becomes partially dynamic.</p><h2>Coordination becomes the real problem</h2><p>One of the most interesting things about agentic systems is that intelligence itself often turns out to be less operationally difficult than coordination.</p><p>Single-agent systems are already complicated enough. But once multiple autonomous agents begin interacting, familiar distributed systems problems start reappearing in new forms.</p><p>Shared state becomes complicated. Context synchronization becomes fragile. Decision conflicts emerge. Communication overhead increases. Cascading actions become harder to predict. Tool access requires coordination policies. Memory consistency starts mattering operationally.</p><p>In many ways, agentic systems quietly reintroduce distributed systems complexity through a completely different interface.</p><blockquote><p>The hardest part of agentic systems isn&#8217;t intelligence. It&#8217;s coordination.</p></blockquote><p>This becomes especially obvious in multi-agent orchestration environments where agents specialize around tasks but must still cooperate toward larger objectives. Suddenly engineers are reasoning not only about distributed services, but about distributed decision-making behavior.</p><p>And distributed decision-making systems are notoriously difficult to constrain.</p><p>Coordination complexity grows nonlinearly because agents are not simply executing static operations&#8212;they are adapting behavior dynamically while interacting with evolving context.</p><p>The architecture starts behaving less like software and more like an organizational structure. That creates fascinating possibilities operationally. It also creates extraordinary uncertainty.</p><h2>Predictability vs autonomy</h2><p>The central tension inside agentic system design is straightforward to describe and extremely difficult to resolve:</p><p>The more autonomy you give the system, the less predictable it becomes.</p><p>Traditional software engineering optimized heavily around predictability because predictability enables reliability, observability, debugging, and operational trust. Agentic systems intentionally loosen some of those constraints in exchange for adaptability and dynamic behavior.</p><p>That trade-off changes how engineers think about architecture fundamentally.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ro1k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ro1k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ro1k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ro1k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ro1k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ro1k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1505231,&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://grokkingtechcareer.substack.com/i/196882328?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.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_!ro1k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ro1k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ro1k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ro1k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59b9d86-d96e-49e5-b810-ff1d3fd276f3_1024x1536.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 role="img" 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><title></title><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>Autonomous systems can adapt to novel scenarios more flexibly than rigid workflows. They can reason through incomplete information, select tools dynamically, and coordinate actions without explicit programming for every edge case.</p><p>But flexibility introduces uncertainty.</p><p>The system may take actions engineers did not explicitly anticipate. Tool usage sequences may vary between similar requests. Behavior evolves over time as memory accumulates or environmental context changes.</p><p>Debugging becomes much harder because failures increasingly emerge behaviorally rather than deterministically.</p><p>The question stops being &#8220;Which line of code failed?&#8221;</p><p>And becomes:</p><blockquote><p>&#8220;Why did the system decide this behavior made sense?&#8221;</p></blockquote><p>That&#8217;s a fundamentally different category of operational reasoning.</p><h2>Memory, context, and evolving system behavior</h2><p>Persistent memory changes agentic systems in ways many engineers still underestimate.</p><p>Traditional applications generally treat interactions as relatively isolated events. Even stateful systems typically operate within predictable workflow boundaries. Agentic systems increasingly maintain contextual continuity across interactions, allowing prior experiences to influence future decisions dynamically.</p><p>That creates adaptive behavior over time.</p><p>The system no longer behaves identically under identical prompts because historical interactions shape reasoning context. Memory introduces evolving behavior patterns, long-term adaptation, and environmental learning effects.</p><p>Architecturally, this creates difficult questions:</p><div class="callout-block" data-callout="true"><ul><li><p>How should memory be stored?</p></li><li><p>How should conflicting memories be resolved?</p></li><li><p>How much contextual history should influence future decisions?</p></li><li><p>What happens when memory itself becomes corrupted, stale, or misleading?</p></li></ul></div><p>These are not ordinary application design problems anymore. They resemble organizational knowledge management problems embedded inside software infrastructure.</p><p>And because memory influences future behavior probabilistically, operational debugging becomes significantly more complicated.</p><h2>Human oversight in agentic architectures</h2><p>Despite all the enthusiasm around autonomous systems, one thing becomes increasingly obvious operationally:</p><p>Humans remain critical infrastructure.</p><p>The more powerful agentic systems become, the more uncomfortable fully autonomous execution starts to feel. Engineers quickly realize that unrestricted autonomy creates unacceptable operational risk, especially once systems interact with real-world infrastructure, financial systems, customer data, or external services.</p><p>This is why modern agentic architectures increasingly include approval layers, intervention boundaries, escalation workflows, and policy enforcement systems.</p><ul><li><p>Autonomy without oversight creates risk</p></li><li><p>Human review slows systems down but increases trust</p></li><li><p>Full automation is often operationally uncomfortable</p></li></ul><p>There&#8217;s a subtle but important shift happening here. Engineers are no longer merely designing systems that execute logic. They are designing systems that negotiate operational authority.</p><p>The architecture itself increasingly encodes trust boundaries between humans and autonomous systems. And trust boundaries are sociotechnical constructs as much as technical ones.</p><h2>Traditional systems vs agentic systems</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!29Us!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!29Us!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png 424w, https://substackcdn.com/image/fetch/$s_!29Us!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png 848w, https://substackcdn.com/image/fetch/$s_!29Us!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png 1272w, https://substackcdn.com/image/fetch/$s_!29Us!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!29Us!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png" width="1112" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:1112,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:209393,&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://grokkingtechcareer.substack.com/i/196882328?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.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_!29Us!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png 424w, https://substackcdn.com/image/fetch/$s_!29Us!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png 848w, https://substackcdn.com/image/fetch/$s_!29Us!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.png 1272w, https://substackcdn.com/image/fetch/$s_!29Us!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95d2dfb1-fa0d-49a5-b441-3cd741ff9ad5_1112x450.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 role="img" 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><title></title><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>What this comparison really reveals is that agentic systems fundamentally alter the relationship between engineers and system behavior.</p><p>Traditional architectures are engineered primarily through explicit control. Agentic architectures increasingly rely on bounded autonomy, policy constraints, and behavioral supervision rather than strict workflow determinism.</p><p>That doesn&#8217;t make them &#8220;better&#8221; automatically.</p><p>It makes them operationally different in ways the industry is still learning how to manage.</p><h2>Trade-offs at the center of agentic system design</h2><p>Every meaningful discussion about agentic architectures eventually collapses into uncomfortable trade-offs.</p><ul><li><p>Autonomy vs control</p></li><li><p>Adaptability vs predictability</p></li><li><p>Intelligence vs operational reliability</p></li><li><p>Flexibility vs safety</p></li></ul><p>The difficult part is that these tensions do not resolve cleanly.</p><p>More autonomous systems adapt better but become harder to constrain. Stronger policy enforcement improves safety but reduces flexibility. Richer memory systems improve continuity while increasing behavioral unpredictability.</p><p>And unlike ordinary software systems, these trade-offs often evolve continuously after deployment because the systems themselves adapt over time.</p><p>That changes how architecture must be reasoned about operationally.</p><h2>Failure modes in agentic systems</h2><p>Failure in agentic systems feels different from traditional software failure because the system may technically function correctly while behavior still becomes undesirable.</p><div class="callout-block" data-callout="true"><p>The infrastructure may remain healthy.</p><p>The APIs may respond correctly.</p><p>The orchestration layers may execute exactly as designed.</p><p>And yet the system behavior itself becomes operationally problematic.</p></div><p>Goal misalignment emerges. Tools are used unexpectedly. Agents reinforce incorrect assumptions. Autonomous loops cascade through systems unexpectedly. Silent reasoning errors accumulate gradually rather than triggering explicit failures.</p><blockquote><p>In deterministic systems, bugs are usually implementation problems. In agentic systems, they increasingly become behavioral problems.</p></blockquote><p>This distinction matters enormously because behavioral failures are much harder to diagnose operationally. Engineers cannot simply trace stack traces or infrastructure metrics anymore. They must reason about why the system arrived at particular decisions under probabilistic context conditions.</p><p>That&#8217;s a very different debugging paradigm from traditional software engineering.</p><p>And frankly, the industry still lacks mature operational frameworks for managing it consistently.</p><h2>Misconceptions about agentic systems</h2><p>Several misconceptions continue distorting conversations around agentic architecture.</p><blockquote><p>&#8220;Agents are just chatbots.&#8221;</p></blockquote><p>No. Conversational interfaces are only one surface area. Agentic systems are fundamentally about autonomous action and decision orchestration.</p><blockquote><p>&#8220;More autonomy automatically means better systems.&#8221;</p></blockquote><p>Often false. Excessive autonomy frequently introduces operational instability and trust problems.</p><blockquote><p>&#8220;LLMs solve orchestration automatically.&#8221;</p></blockquote><p>LLMs assist reasoning. They do not eliminate coordination complexity, observability challenges, or infrastructure constraints.</p><blockquote><p>&#8220;Agentic systems eliminate engineering discipline.&#8221;</p></blockquote><p>If anything, they increase the need for careful systems engineering because unpredictable behavior requires stronger operational boundaries, monitoring, and policy enforcement.</p><p>The hype cycle often frames autonomy as simplification. Operationally, autonomy frequently increases complexity instead.</p><h2>What agentic systems reveal about the future of software</h2><p>Agentic systems reveal something important about where software architecture is heading generally: Software is gradually shifting from static execution environments toward adaptive operational systems.</p><p>That shift changes the role of engineering itself. Infrastructure increasingly revolves around orchestration layers, observability systems, behavioral monitoring, policy enforcement, and coordination management rather than deterministic workflow implementation alone.</p><p>Engineers are becoming supervisors of adaptive systems as much as builders of deterministic logic.</p><p>This does not eliminate traditional engineering concerns. Distributed systems, scalability, consistency, and reliability still matter enormously. But now those concerns increasingly interact with probabilistic reasoning systems capable of partially autonomous behavior.</p><p>The result is software infrastructure that feels less mechanically predictable than previous generations of architecture. And that introduces both enormous capability and enormous operational discomfort simultaneously.</p><h2>The future of agentic architecture</h2><p>The next several years will probably involve increasing experimentation around multi-agent ecosystems, policy-driven orchestration frameworks, AI-native infrastructure layers, and collaborative human-agent operational environments.</p><p>But the systems that succeed operationally are unlikely to be the ones pursuing unrestricted autonomy blindly.</p><p>More likely, successful architectures will emphasize constrained autonomy inside carefully monitored environments with explicit intervention boundaries and strong observability systems.</p><p>In other words:</p><div class="callout-block" data-callout="true"><p>The future probably belongs not to fully autonomous systems, but to systems designed around carefully negotiated operational trust.</p></div><p>And trust is much harder to engineer than intelligence alone.</p><h2>Final words: designing systems that increasingly make decisions on their own</h2><p>Agentic systems represent a genuine architectural shift because they move software away from purely deterministic execution and toward adaptive decision-making behavior.</p><p>That transition changes everything about how engineers reason about infrastructure, coordination, reliability, debugging, and operational control. Systems stop behaving like static workflows and start behaving more like evolving participants inside dynamic environments.</p><p>And while that creates enormous new possibilities, it also introduces forms of uncertainty traditional software engineering was never really optimized to handle.</p><p>The deeper challenge is not simply building systems that can act autonomously. It is building systems whose autonomy remains understandable, observable, and operationally trustworthy over time.</p><p>Because once software begins making decisions on its own, engineering stops being purely about implementation.</p><p>It becomes increasingly about governance.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Machine Learning System Design interview]]></title><description><![CDATA[Machine learning interviews stopped being about writing correct answers a long time ago.]]></description><link>https://grokkingtechcareer.substack.com/p/machine-learning-system-design-interview</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/machine-learning-system-design-interview</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Sat, 09 May 2026 08:35:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!We1w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There was a time when software interviews felt bounded.</p><p>Not easy, necessarily, but bounded. You could disagree with the process, complain about algorithm puzzles, or question whether reversing binary trees reflected actual engineering work, but at least the evaluation itself felt relatively deterministic. Problems had constraints. Solutions had measurable correctness. Even system design interviews, for all their ambiguity, generally revolved around infrastructure that behaved predictably once designed correctly.</p><p><a href="https://www.educative.io/courses/machine-learning-system-design?aff=xjW0">Machine learning system design</a> interviews changed that dynamic completely.</p><p>Suddenly candidates weren&#8217;t just being asked to reason about distributed systems or scalability. They were being asked to reason about systems that evolve over time, systems whose outputs are probabilistic rather than deterministic, systems heavily shaped by data quality, operational feedback loops, and shifting real-world behavior. The interview stopped being about designing software in the traditional sense and became something closer to reasoning through uncertainty under pressure.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!We1w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!We1w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!We1w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!We1w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!We1w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!We1w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1591748,&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://grokkingtechcareer.substack.com/i/196874512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.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_!We1w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!We1w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!We1w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!We1w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e08c93-d7ba-4003-a39a-e29c0a7d830d_1024x1536.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 role="img" 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><title></title><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>And that shift feels deeply connected to how software engineering itself changed between 2023 and 2026.</p><blockquote><p>Machine learning interviews stopped being about writing correct answers a long time ago. Now they&#8217;re about reasoning through systems nobody fully controls.</p></blockquote><p>That distinction matters because ML system design interviews are not merely harder versions of backend interviews. They represent a fundamentally different model of technical evaluation. They test whether engineers can think coherently in environments where correctness itself becomes slippery.</p><p>And increasingly, that&#8217;s what modern software systems actually look like.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/machine-learning-system-design-interview?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/machine-learning-system-design-interview?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/p/machine-learning-system-design-interview?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h2>Why ML systems feel fundamentally different</h2><p>Traditional software systems are built around deterministic assumptions. Inputs lead to predictable outputs. Logic behaves consistently. Bugs can usually be reproduced. Failures often originate from explicit implementation errors or infrastructure breakdowns.</p><p>Machine learning systems violate those expectations constantly.</p><p>The model itself introduces probabilistic behavior into the architecture. Two identical inputs may produce slightly different outputs depending on context, model state, or inference conditions. Performance degrades gradually rather than catastrophically. Drift accumulates quietly. Feedback loops alter future behavior. Data distributions evolve independently of the application logic surrounding them.</p><p>That fundamentally changes how engineers reason about systems.</p><p>In ordinary <a href="https://www.educative.io/path/zero-to-hero-in-back-end-web-development?aff=xjW0">backend development</a>, the infrastructure primarily exists to preserve correctness. In ML systems, infrastructure exists partly to manage uncertainty itself. Monitoring systems track statistical behavior rather than explicit failures. Evaluation pipelines measure degradation probabilistically. Retraining workflows become operational necessities because the system&#8217;s environment changes continuously.</p><p>This is exactly why ML system design interviews feel cognitively heavier than traditional system design discussions. Candidates are not merely optimizing architectures. They are reasoning about systems whose behavior remains partially unstable even after deployment.</p><p>And unlike conventional distributed systems, many ML systems continue evolving after release.</p><h2>The shift from coding problems to systems thinking</h2><p>Part of what changed over the last several years is that implementation itself stopped being the primary bottleneck for many engineering organizations.</p><p>Code generation tooling improved. Infrastructure abstractions matured. Cloud orchestration became more standardized. AI-assisted development accelerated ordinary implementation work. As a result, interviews gradually shifted away from evaluating whether candidates could write and <a href="https://www.educative.io/learn-to-code?aff=xjW0">learn code</a> quickly and toward evaluating whether they could reason through increasingly complex systems.</p><p>Machine learning accelerated that transition dramatically.</p><p>Modern ML system design interviews rarely focus deeply on implementation syntax because implementation is no longer the interesting part. The difficult part is understanding interactions between components, constraints, trade-offs, operational realities, and evolving behavior over time.</p><p>Candidates are expected to think in layers simultaneously:</p><ul><li><p>Infrastructure behavior</p></li><li><p>Model performance</p></li><li><p>Data quality</p></li><li><p>Cost constraints</p></li><li><p>Real-time latency requirements</p></li><li><p>Long-term system evolution</p></li></ul><p>That&#8217;s a very different cognitive exercise than solving isolated coding problems.</p><p>And in many ways, these interviews mirror what engineering roles themselves became after the AI boom. Software systems are no longer static products with deterministic workflows. Increasingly, they are adaptive systems driven by probabilistic models operating inside distributed infrastructure under changing environmental conditions.</p><p>The interviews simply inherited that complexity.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.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://grokkingtechcareer.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2>The hidden complexity behind &#8220;design an ML system&#8221;</h2><p>One of the stranger aspects of ML system design interviews is how casually enormous complexity gets compressed into tiny prompts.</p><div class="callout-block" data-callout="true"><p>&#8220;Design a recommendation system.&#8221;</p><p>&#8220;Design a fraud detection pipeline.&#8221;</p><p>&#8220;Design a real-time ranking system.&#8221;</p></div><p>These questions sound deceptively manageable because interview framing abstracts away the operational reality underneath. But every one of these systems contains enormous hidden complexity that real engineering organizations spend years managing.</p><p>The candidate is expected to reason through data ingestion pipelines, training infrastructure, feature computation, inference orchestration, monitoring, retraining workflows, evaluation systems, and scalability concerns, often within forty-five minutes.</p><p>Which is simultaneously unrealistic and revealing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nnaz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nnaz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!nnaz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!nnaz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!nnaz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nnaz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1483530,&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://grokkingtechcareer.substack.com/i/196874512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.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_!nnaz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!nnaz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!nnaz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!nnaz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5acb1b-ed42-4dfb-b5fc-17856cb86568_1024x1536.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 role="img" 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><title></title><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>The interview environment simplifies reality aggressively while still exposing how candidates think about interconnected systems. The simplification is artificial, but the ambiguity is real.</p><ul><li><p>The model is only one piece</p></li><li><p>Infrastructure decisions shape outcomes</p></li><li><p>Data quality quietly controls everything</p></li></ul><p>That last point especially tends to destabilize candidates because many engineers approach ML interviews assuming the &#8220;AI&#8221; portion is the center of the system. In practice, operational infrastructure often dominates the actual engineering complexity.</p><p>Production ML systems are mostly data systems wrapped around probabilistic inference layers.</p><p>And the interviews increasingly reflect that reality.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/machine-learning-system-design-interview/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/p/machine-learning-system-design-interview/comments"><span>Leave a comment</span></a></p><h2>Ambiguity becomes the actual interview</h2><p>What makes these interviews psychologically difficult is not necessarily the scale of the systems themselves. It&#8217;s the absence of stable boundaries.</p><p>Traditional coding interviews feel constrained even when difficult. There is usually a defined problem space, a measurable goal, and some implicit understanding of correctness. ML system design interviews intentionally remove those stabilizing structures.</p><p>Constraints remain incomplete. Requirements stay underspecified. Trade-offs emerge dynamically during discussion. Sometimes the interviewer changes assumptions halfway through intentionally to see how candidates adapt.</p><p>At first, many engineers interpret this as poor interview structure.</p><p>Then eventually they realize the ambiguity is the structure.</p><blockquote><p>Most candidates aren&#8217;t uncomfortable because the systems are large. They&#8217;re uncomfortable because nobody tells them what the &#8220;right&#8221; answer is.</p></blockquote><p>That discomfort exposes something important about modern engineering work generally. Real ML systems rarely arrive with perfectly defined requirements. Teams operate under uncertainty constantly. Data behaves unpredictably. Metrics conflict. Latency requirements compete against model quality. Infrastructure budgets constrain experimentation.</p><p>The interview simply simulates that ambiguity in compressed form.</p><p>And many candidates struggle not because they lack technical knowledge, but because ambiguity itself creates cognitive pressure. They search for correctness when the real evaluation revolves around reasoning quality under uncertainty.</p><h2>Why these interviews exploded after the AI boom</h2><p>Between 2023 and 2026, hiring expectations changed dramatically.</p><p>Before the generative AI explosion, machine learning expertise remained relatively specialized. Most backend engineers could operate successfully without deep familiarity with model behavior, embeddings, inference infrastructure, or retrieval systems.</p><p>That separation collapsed quickly.</p><p>AI-native products emerged across nearly every category of software. Recommendation systems became more sophisticated. Search evolved into semantic retrieval. Copilots entered development workflows. LLM integrations spread into ordinary SaaS products. Suddenly ML awareness stopped being isolated to dedicated ML teams.</p><p>Companies responded predictably: interview processes evolved to evaluate broader systems thinking around machine learning infrastructure.</p><p>And importantly, these interviews expanded beyond pure ML engineering roles.</p><p>Backend engineers increasingly encountered ML-flavored infrastructure discussions. Platform engineers needed awareness of inference scaling and vector databases. Full-stack roles started including conversations about recommendation systems or retrieval pipelines.</p><p>Machine learning stopped being a specialization and became part of general systems literacy.</p><p>That shift fundamentally expanded the role of ML system design interviews inside technical hiring.</p><h2>The widening expectations placed on engineers</h2><p>One reason these interviews feel overwhelming is that they quietly combine multiple disciplines simultaneously.</p><p>Candidates are increasingly expected to reason across:</p><ul><li><p><a href="https://www.educative.io/courses/distributed-systems-practitioners?aff=xjW0">Distributed systems</a></p></li><li><p>Machine learning workflows</p></li><li><p>Infrastructure scalability</p></li><li><p><a href="https://www.educative.io/courses/learn-data-engineering?aff=xjW0">Data engineering</a></p></li><li><p>Observability and monitoring</p></li><li><p>Operational trade-offs</p></li></ul><p>Ten years ago, these domains were often handled by relatively separate teams. Today they increasingly overlap inside production systems.</p><p>Modern engineers are expected to understand not only how software behaves, but how systems evolve statistically over time. They must think about infrastructure and models simultaneously. They must reason about operational cost alongside predictive quality.</p><p>That interdisciplinary expansion changed the emotional texture of technical interviews. The candidate is no longer evaluated solely as a programmer. They are evaluated as a systems thinker operating across unstable domains.</p><p>And honestly, that&#8217;s exhausting.</p><h2>Interviews as simulations of operational thinking</h2><p>The more ML system design interviews evolved, the less they resembled examinations of technical memorization and the more they resembled compressed simulations of operational reasoning.</p><p>The strongest candidates are rarely the ones who recite the most patterns mechanically. They are usually the ones who reason calmly through uncertainty, identify important trade-offs clearly, and prioritize constraints coherently.</p><p>This is partly why these interviews frustrate people coming from heavily preparation-driven environments. Memorization helps only up to a point because the actual evaluation revolves around dynamic reasoning.</p><p>Operational thinking matters more than architectural recall.</p><div class="callout-block" data-callout="true"><ul><li><p>Can the candidate identify bottlenecks?</p></li><li><p>Can they reason about system degradation over time?</p></li><li><p>Can they explain trade-offs coherently?</p></li></ul></div><p>Can they prioritize imperfect decisions under incomplete constraints? Those are fundamentally operational questions.</p><p>And increasingly, that&#8217;s what engineering organizations actually care about.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TtM6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TtM6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png 424w, https://substackcdn.com/image/fetch/$s_!TtM6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png 848w, https://substackcdn.com/image/fetch/$s_!TtM6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png 1272w, https://substackcdn.com/image/fetch/$s_!TtM6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TtM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png" width="1096" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:1096,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:243504,&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://grokkingtechcareer.substack.com/i/196874512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.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_!TtM6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png 424w, https://substackcdn.com/image/fetch/$s_!TtM6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png 848w, https://substackcdn.com/image/fetch/$s_!TtM6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.png 1272w, https://substackcdn.com/image/fetch/$s_!TtM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7df905-6989-41aa-81d3-a2979821eb87_1096x500.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 role="img" 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><title></title><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>The reason ML interviews feel more cognitively demanding is not merely that they are &#8220;harder.&#8221; It&#8217;s that they operate across multiple unstable dimensions simultaneously.</p><p>Traditional systems can often be evaluated based on correctness and scalability. ML systems require reasoning about behavior that remains partially uncertain even after deployment.</p><p>The candidate is effectively being asked to design infrastructure around evolving probabilistic behavior under operational constraints.</p><p>That&#8217;s a fundamentally different category of systems thinking.</p><h2>Trade-offs sit at the center of everything</h2><p>Nearly every meaningful ML system discussion eventually collapses into trade-offs.</p><ul><li><p>Accuracy vs latency</p></li><li><p>Scalability vs operational cost</p></li><li><p>Model quality vs infrastructure simplicity</p></li><li><p>Automation vs human oversight</p></li></ul><p>The difficult part is that none of these tensions resolve cleanly.</p><p>Higher-quality models often increase inference cost and latency. More aggressive automation introduces monitoring complexity. Better personalization increases privacy concerns. Real-time retraining improves adaptability but destabilizes infrastructure predictability.</p><p>And the interviews intentionally surface these tensions because the trade-offs themselves reveal how candidates think.</p><p>There is rarely a perfect architecture.</p><p>There are only architectures optimized around particular constraints.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/machine-learning-system-design-interview/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/p/machine-learning-system-design-interview/comments"><span>Leave a comment</span></a></p><h2>The uncomfortable reality of interview preparation</h2><p>One reason candidates often feel perpetually unprepared for ML system design interviews is that preparation material and actual reasoning are not the same thing.</p><p>Courses, tutorials, and structured examples create familiarity. They expose patterns. They help candidates recognize components and workflows. But recognition creates a dangerous illusion because it feels very similar to understanding at first.</p><p>Then the actual interview starts.</p><p>The prompt shifts slightly outside rehearsed examples. Constraints remain unclear. The discussion evolves unpredictably. Suddenly the candidate realizes they understood the diagrams more than the systems themselves.</p><p>This is partly why so many engineers describe ML interview preparation as strangely unsatisfying. The more material they consume, the more they realize how much reasoning still feels unstable underneath.</p><p>The gap between recognition and operational intuition becomes painfully visible under pressure.</p><h2>Misconceptions about ML system design interviews</h2><p>Several misconceptions continue distorting how people approach these interviews.</p><blockquote><p>&#8220;There&#8217;s a correct architecture.&#8221;</p></blockquote><p>Usually there isn&#8217;t. Most systems involve competing trade-offs rather than objectively optimal designs.</p><blockquote><p>&#8220;Better models solve everything.&#8221;</p></blockquote><p>Infrastructure, data quality, observability, and operational constraints often dominate production outcomes far more than marginal model improvements.</p><blockquote><p>&#8220;Memorizing patterns is enough.&#8221;</p></blockquote><p>Patterns help establish vocabulary. They do not replace reasoning under uncertainty.</p><blockquote><p>&#8220;These interviews only matter for ML engineers.&#8221;</p></blockquote><p>Increasingly false. ML awareness now extends across backend, infrastructure, platform, and product engineering roles.</p><p>These misconceptions persist partly because people still approach ML interviews using mental models inherited from older software interview culture. But the underlying systems changed faster than the interview expectations surrounding them.</p><h2>What these interviews reveal about the industry</h2><p>In many ways, ML system design interviews reveal more about the software industry itself than about individual candidates.</p><p>They reflect an industry increasingly dependent on systems that behave probabilistically, evolve continuously, and operate under unstable real-world conditions. They reveal how software engineering itself shifted away from deterministic implementation toward adaptive infrastructure thinking.</p><p>And perhaps most importantly, they expose how uncertainty became normalized inside technical work.</p><blockquote><p>The industry isn&#8217;t asking engineers to know everything. It&#8217;s asking whether they can think clearly while surrounded by uncertainty.</p></blockquote><p>That distinction matters because many candidates interpret ambiguity as evidence of personal inadequacy when in reality the ambiguity reflects the systems themselves.</p><p>Modern engineering increasingly revolves around incomplete information, probabilistic behavior, operational trade-offs, and evolving infrastructure constraints.</p><p>The interviews merely mirror that environment.</p><h2>The future of ML system design interviews</h2><p>It&#8217;s difficult to predict exactly how these interviews evolve over the next several years, especially as AI tooling increasingly automates portions of implementation work.</p><p>But one trend seems relatively clear: reasoning will probably matter more, not less.</p><p>As copilots improve and infrastructure abstractions mature further, implementation details become easier to outsource to tooling. The difficult part remains deciding what systems should optimize for, how constraints interact, and how trade-offs should be prioritized.</p><p>In other words, operational reasoning becomes the durable skill.</p><p>Ironically, the more AI assists ordinary development, the more interviews may shift toward evaluating the uniquely human aspects of systems thinking: judgment, prioritization, ambiguity management, and trade-off reasoning.</p><p>Not because humans are irreplaceable abstractly, but because modern systems themselves remain operationally messy.</p><p>And messy systems still require coherent reasoning.</p><h2>Conclusion: interviews as reflections of modern engineering complexity</h2><p>Machine learning system design interviews feel difficult because they are evaluating something much larger than technical recall.</p><p>They are evaluating whether engineers can reason through evolving systems operating under uncertainty, conflicting constraints, imperfect data, and long-term operational pressure. They reflect an industry increasingly shaped by probabilistic infrastructure rather than deterministic software alone.</p><p>And perhaps that&#8217;s why these interviews feel psychologically different from older technical evaluations.</p><p>They don&#8217;t just test knowledge.</p><p>They test whether candidates can remain intellectually coherent inside environments where certainty itself becomes unstable.</p><p>That, more than anything else, may define modern software engineering now.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Machine Learning in a hurry and the fear of falling behind]]></title><description><![CDATA[Everyone suddenly needs to know machine learning]]></description><link>https://grokkingtechcareer.substack.com/p/machine-learning-in-a-hurry</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/machine-learning-in-a-hurry</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Fri, 08 May 2026 07:28:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xHke!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Something changed very quickly over the last few years, and I don&#8217;t think the industry has fully processed what happened.</p><p><a href="https://www.educative.io/courses/fundamentals-of-machine-learning-for-software-engineers?aff=xjW0">Machine learning</a> used to occupy a fairly specialized corner of software engineering. There were researchers, data scientists, infrastructure teams supporting models at scale, and a relatively small number of engineers working directly on ML systems. Most developers could safely ignore the field without feeling professionally vulnerable. That boundary disappeared faster than most people expected.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>By 2026, machine learning stopped feeling like an optional specialization and started feeling like ambient career pressure. Backend engineers suddenly needed to understand embeddings. <a href="https://www.educative.io/path/become-front-end-developer?aff=xjW0">Frontend developers</a> were integrating copilots into workflows they barely understood themselves. Infrastructure engineers were being asked about vector databases and inference latency in meetings that had nothing to do with traditional ML. Product roadmaps became saturated with &#8220;AI-first&#8221; language almost overnight.</p><p>And because the transition happened so quickly, many engineers developed the same quiet feeling simultaneously: the feeling that everyone else somehow already understands this.</p><blockquote><p>The hardest part about learning machine learning today isn&#8217;t the complexity. It&#8217;s the speed at which everyone expects you to understand it.</p></blockquote><p>Over the last few years at Educative, I&#8217;ve watched this pressure show up repeatedly in how engineers approach learning. Not calmly. Not methodically. Usually in bursts of panic-driven acceleration. People trying to compress years of foundational understanding into weekends, late-night study sessions, or hurried learning sprints between meetings and production incidents.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xHke!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xHke!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png 424w, https://substackcdn.com/image/fetch/$s_!xHke!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png 848w, https://substackcdn.com/image/fetch/$s_!xHke!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png 1272w, https://substackcdn.com/image/fetch/$s_!xHke!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xHke!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png" width="1198" height="1313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1313,&quot;width&quot;:1198,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1261009,&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://grokkingtechcareer.substack.com/i/196867021?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.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_!xHke!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png 424w, https://substackcdn.com/image/fetch/$s_!xHke!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png 848w, https://substackcdn.com/image/fetch/$s_!xHke!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.png 1272w, https://substackcdn.com/image/fetch/$s_!xHke!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3427495f-f6f4-4dff-9acd-7c932a5e4457_1198x1313.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 role="img" 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><title></title><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>What makes this difficult is not simply the amount of information. Software engineers are already accustomed to large technical domains. The harder part is that machine learning arrived wrapped in a cultural expectation of urgency. The industry stopped treating ML as something you gradually grow into and started treating it as something you should already know.</p><p>That changes how people learn. Usually not for the better.</p><h2>The industry&#8217;s obsession with acceleration</h2><p>One of the more exhausting aspects of the AI era is how aggressively it compresses expectations around learning.</p><p>Every new framework, model release, orchestration layer, or infrastructure abstraction arrives with the implication that immediate familiarity is necessary for professional relevance. Engineers don&#8217;t just encounter new ideas anymore. They encounter new ideas accompanied by collective anxiety.</p><p>The ecosystem moves fast enough that people rarely feel finished understanding one concept before the industry pivots toward another. One month everyone is discussing prompt engineering. Then <a href="https://www.educative.io/courses/rag-llm?aff=xjW0">retrieval-augmented generation</a> dominates conversations. Then agents. Then multimodal systems. Then infrastructure tooling around agents. Then model routing. Then evaluation pipelines. The abstractions accumulate faster than intuition can stabilize.</p><p>This creates a strange kind of cognitive fatigue that I think many engineers struggle to articulate properly. It&#8217;s not ordinary burnout exactly. It&#8217;s closer to the feeling of perpetually running behind a moving train while the people already on board insist the train is easy to catch.</p><p>And because modern technical culture rewards visible participation, people often respond by increasing consumption rather than understanding. More newsletters. More videos. More podcasts. More tutorials. More &#8220;10 things every AI engineer must know&#8221; threads written with absolute certainty about technologies that barely existed six months earlier.</p><p>The result is that many developers end up technically saturated but conceptually fragmented.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.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://grokkingtechcareer.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2>The illusion of &#8220;catching up&#8221;</h2><p>One thing I&#8217;ve observed repeatedly is that machine learning creates an unusually strong illusion of progress.</p><p>You can consume a tremendous amount of ML content very quickly. You can recognize terminology within days. You can follow architectural diagrams after a few weeks. You can become conversationally functional surprisingly fast. And because the internet rewards familiarity signals, that surface-level understanding often feels deeper than it really is.</p><p>But machine learning resists compression in ways many people underestimate.</p><p>There&#8217;s a difference between understanding what a transformer architecture is and understanding why large-scale ML systems behave unpredictably under real-world constraints. There&#8217;s a difference between recognizing terms like embeddings, fine-tuning, and inference pipelines and developing intuition about how these systems fail, drift, degrade, or interact operationally.</p><p>Rapid content consumption creates confidence before it creates mental models.</p><p>That distinction matters.</p><p>The engineers who struggle most are often not the ones who know the least. They&#8217;re the ones who mistake familiarity for understanding and then become frustrated when deeper reasoning still feels inaccessible. They can follow explanations while consuming them, but cannot reconstruct the ideas independently afterward.</p><p>And honestly, that&#8217;s not a personal failure. It&#8217;s a predictable consequence of how modern technical learning environments operate.</p><h2>What developers are actually struggling with</h2><p>After watching thousands of engineers move through ML learning material, certain patterns appear repeatedly.</p><p>The confusion is often less about mathematics than people assume. More commonly, it comes from systems thinking gaps. Engineers understand isolated concepts but struggle to connect them into coherent behavior.</p><ul><li><p>People understand the words but not the systems</p></li><li><p>They recognize architectures without understanding trade-offs</p></li><li><p>They consume information faster than they process it</p></li></ul><p>This shows up constantly around probabilistic behavior. Traditional software engineering trains people to expect deterministic systems. Inputs produce predictable outputs. Logic behaves consistently. Failures can usually be reproduced.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ynKf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ynKf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ynKf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ynKf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ynKf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ynKf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1539330,&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://grokkingtechcareer.substack.com/i/196867021?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.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_!ynKf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ynKf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ynKf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ynKf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ed850f-8d9a-4281-9eb5-1aaa7ff33f53_1024x1536.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 role="img" 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><title></title><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>Machine learning systems violate those expectations constantly.</p><p>Models behave statistically rather than deterministically. Performance degrades gradually. Data quality influences outcomes in nonlinear ways. Systems drift over time. Small distribution shifts create unexpected behavior. Suddenly engineers aren&#8217;t just debugging code anymore&#8212;they&#8217;re debugging uncertainty.</p><p>That changes the learning experience fundamentally because it requires a different kind of intuition than traditional application development.</p><h2>Why structured learning became necessary</h2><p>Part of the reason we built resources like <em><a href="https://www.educative.io/courses/fundamentals-of-machine-learning-for-software-engineers?aff=xjW0">Fundamentals of Machine Learning for Software Engineer</a>s</em> was because we kept seeing the same pattern repeatedly: engineers drowning in disconnected information while lacking conceptual continuity.</p><p>One thing we realized early is that most developers do not need more hype-driven summaries. They need structure. They need explanations that connect ideas gradually instead of treating machine learning as a collection of isolated buzzwords.</p><p>The same pattern appeared with <em><a href="https://www.educative.io/courses/machine-learning-system-design?aff=xjW0">Machine Learning System Design</a></em>. A lot of developers were learning models abstractly without understanding how ML systems actually behave in production environments. But production ML is not just about algorithms. It&#8217;s about infrastructure, latency, data pipelines, observability, drift, scaling constraints, and operational trade-offs.</p><p>And interview pressure amplified this further, which is partly why courses like <em><a href="https://www.educative.io/courses/grokking-the-machine-learning-interview?aff=xjW0">Grokking the Machine Learning Interview</a></em> emerged. Not because interviews represent ideal learning environments&#8212;they absolutely do not&#8212;but because engineers increasingly felt pressure to perform ML fluency publicly before their understanding fully matured.</p><p>Even the <em><a href="https://www.educative.io/blog/key-principles-of-machine-learning-i-should-understand?aff=xjW0">Key Principles of Machine Learning Every Developer Should Know</a></em> blog came from observing the same recurring confusion: people trying to absorb advanced abstractions without stable mental models underneath.</p><p>The goal was never to simplify machine learning into something artificial. It was to reduce unnecessary chaos around the learning process itself.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Grokking the Tech Career&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Grokking the Tech Career</span></a></p><h2>Machine learning feels different because it behaves differently</h2><p>I think one reason machine learning creates so much discomfort for traditional engineers is that the systems themselves violate deeply ingrained expectations about software behavior.</p><p>Conventional systems engineering revolves around precision. You design explicit logic paths. You reason deterministically. Failures are usually traceable through code and infrastructure. Machine learning introduces systems that behave probabilistically, adapt dynamically, and sometimes produce outputs that are difficult to explain fully even when the implementation is technically correct.</p><p>That ambiguity changes how people learn.</p><p>Engineers accustomed to deterministic reasoning often experience ML as conceptually slippery. You can understand the architecture and still feel uncertain about the behavior. You can understand the pipeline and still feel unclear about the outputs. The systems resist tidy mental compression because the behavior itself emerges statistically rather than logically.</p><p>And that uncertainty becomes psychologically difficult in an industry obsessed with confidence signaling.</p><h2>The pressure to become AI-native</h2><p>Somewhere between 2023 and 2026, machine learning quietly stopped being optional knowledge.</p><blockquote><p>Somewhere between 2023 and 2026, machine learning quietly stopped being optional knowledge.</p></blockquote><p>That transition happened unevenly, but the cultural effect was enormous.</p><p>Suddenly ML awareness became expected even for engineers who never intended to specialize in machine learning directly. Backend engineers felt pressure to understand retrieval systems. Frontend developers were integrating AI features into products. Infrastructure teams were expected to reason about inference costs and vector search latency.</p><p>The result is that many engineers now experience machine learning less as curiosity and more as professional obligation.</p><p>And obligation changes the emotional texture of learning. People stop learning because they&#8217;re fascinated and start learning because they&#8217;re afraid of becoming obsolete.</p><p>That fear rarely gets discussed honestly, but it&#8217;s present everywhere.</p><h2>Interview culture and performance anxiety</h2><p>Interview culture intensified all of this considerably.</p><p>The rise of ML-focused interview preparation created another layer of pressure because engineers increasingly felt expected to demonstrate machine learning fluency performatively, often before developing durable intuition.</p><p>That&#8217;s partly why resources like <em>Grokking the Machine Learning Interview</em> resonated with people. Structured interview preparation provides emotional reassurance in uncertain environments. It gives the impression that machine learning can be organized into recognizable patterns and predictable expectations.</p><p>But there&#8217;s also a danger there.</p><p>Memorization creates temporary fluency. Real understanding develops much more slowly.</p><p>And machine learning interviews sometimes reward the former while actual engineering work depends heavily on the latter.</p><p>This creates an uncomfortable mismatch where people optimize for sounding informed before they feel genuinely grounded conceptually.</p><h2>The difference between consuming information and building understanding</h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F4Tx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F4Tx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png 424w, https://substackcdn.com/image/fetch/$s_!F4Tx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png 848w, https://substackcdn.com/image/fetch/$s_!F4Tx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png 1272w, https://substackcdn.com/image/fetch/$s_!F4Tx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F4Tx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png" width="1456" height="290" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:290,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:264956,&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://grokkingtechcareer.substack.com/i/196867021?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.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_!F4Tx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png 424w, https://substackcdn.com/image/fetch/$s_!F4Tx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png 848w, https://substackcdn.com/image/fetch/$s_!F4Tx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png 1272w, https://substackcdn.com/image/fetch/$s_!F4Tx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dddbc3b-2633-4661-83c7-b881002d1185_1758x350.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>What this table really highlights is that genuine understanding often feels slower and emotionally less satisfying initially.</p><p>Fast content consumption produces immediate familiarity and conversational fluency. Structured learning feels slower because it prioritizes conceptual continuity over novelty. Long-term understanding feels slowest of all because it requires ambiguity, repetition, confusion, and gradual mental model formation.</p><p>Unfortunately, modern internet culture disproportionately rewards the first category while actual engineering capability depends much more heavily on the last one.</p><h2>Trade-offs in learning ML quickly</h2><p>Every engineer learning machine learning today is navigating the same difficult tensions.</p><ul><li><p>Speed vs depth</p></li><li><p>Breadth vs intuition</p></li><li><p>Trend awareness vs fundamentals</p></li></ul><p>There&#8217;s no perfect balance here.</p><p>Move too quickly and understanding fragments into disconnected abstractions. Move too slowly, and the ecosystem evolves around you faster than your confidence stabilizes. Focus only on trends, and fundamentals remain weak. Focus only on fundamentals, and you risk feeling disconnected from industry conversations.</p><p>The pressure comes partly from trying to optimize all of these simultaneously, which is usually impossible.</p><h2>The emotional side of modern technical learning</h2><p>I think many engineers quietly underestimate how emotionally exhausting technical acceleration has become.</p><p>Most people are learning machine learning while already working demanding jobs, dealing with deadlines, navigating layoffs, handling burnout, or trying to maintain ordinary life responsibilities. Learning doesn&#8217;t happen in calm academic environments. It happens late at night after meetings. On weekends. During fragmented periods of exhaustion.</p><p>And because the field moves so quickly, people internalize this persistent sense that slowing down equals falling behind.</p><p>What rarely gets admitted publicly is how much comparison drives modern technical anxiety. Everyone online appears to understand more than they actually do. Social media disproportionately amplifies signals of certainty, speed, and productivity while almost entirely hiding confusion and slow learning.</p><p>So engineers end up privately overwhelmed while publicly pretending to keep pace.</p><h2>What actually helps over time</h2><p>The developers who eventually build strong intuition usually do something counterintuitive at some point:</p><p>They slow down.</p><p>Not permanently. Not by disengaging from the field entirely. But by shifting focus away from pure consumption velocity and toward mental model formation.</p><p>Understanding starts improving once engineers stop trying to absorb every new abstraction immediately and begin organizing relationships between ideas instead. Why systems behave probabilistically. Why infrastructure constraints shape model behavior. Why data quality matters more than most people initially realize. Why trade-offs dominate production ML.</p><p>This is where structure becomes genuinely valuable&#8212;not because it accelerates expertise artificially, but because it reduces cognitive chaos enough for understanding to develop gradually.</p><p>That process is slower than hype culture encourages. But it&#8217;s also much more sustainable.</p><h2>Misconceptions about learning ML in 2026</h2><p>There are a few assumptions I wish more engineers would question openly.</p><p>&#8220;Everyone else already understands this.&#8221;</p><p>Most people are far more uncertain than they appear publicly.</p><p>&#8220;You need to know everything.&#8221;</p><p>The field is now too broad for comprehensive mastery to be realistic even for specialists.</p><p>&#8220;Watching enough content equals mastery.&#8221;</p><p>Consumption creates recognition. Understanding requires reflection, struggle, and time.</p><p>These distinctions matter because unrealistic expectations distort the entire learning process.</p><h2>Slowing down in a field that keeps accelerating</h2><p>Machine learning is genuinely difficult. Not because engineers lack intelligence, but because the systems themselves are probabilistic, fast-moving, infrastructure-heavy, and conceptually layered in ways that resist rapid compression.</p><p>And maybe the healthier realization is that confusion is not evidence of failure. It&#8217;s evidence that you are engaging with something legitimately complex.</p><p>The industry often behaves as though expertise should arrive immediately after exposure. But real understanding still develops the same way it always has: slowly, unevenly, through repetition, uncertainty, and gradual intuition-building.</p><p>That process hasn&#8217;t changed, even if the hype cycles surrounding it have accelerated dramatically.</p><blockquote><p>Most engineers aren&#8217;t behind. They&#8217;re just trying to learn a field that the industry itself barely understands completely.</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why Ticketmaster System Design is harder than most distributed systems]]></title><description><![CDATA[The internet&#8217;s most stressful five minutes]]></description><link>https://grokkingtechcareer.substack.com/p/ticketmaster-system-design</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/ticketmaster-system-design</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Thu, 07 May 2026 18:00:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vgWw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s a very specific kind of chaos that happens during a major ticket release. You can almost feel it before the system even opens. Tens of thousands, sometimes millions, of people sitting in browser tabs refreshing the same page, all trying to acquire the same scarce resource at the exact same moment. It&#8217;s one of the few remaining experiences on the internet where collective urgency still exists in synchronized form. </p><p>Everyone shows up at once. Everyone believes timing matters. Everyone thinks they still have a chance. And then the system starts bending under pressure.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.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://grokkingtechcareer.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>Pages stall. Queues freeze. Sessions expire. Inventory appears and disappears unpredictably. Users get kicked out after waiting an hour. Social media fills with screenshots of errors within minutes. Somewhere deep inside the infrastructure, distributed coordination mechanisms are fighting to maintain consistency while traffic spikes harder than almost any normal web application ever experiences.</p><blockquote><p>Most <a href="https://www.educative.io/courses/distributed-systems-practitioners?aff=xjW0">distributed systems</a> fail quietly. Ticketing systems fail in public.</p></blockquote><p>That&#8217;s what makes systems like Ticketmaster so interesting from an engineering perspective. They expose the limits of modern infrastructure in a way most applications never do. This isn&#8217;t &#8220;just another e-commerce system,&#8221; even though people often frame it that way. Buying a concert ticket looks superficially similar to buying shoes online, but the system behavior underneath is fundamentally different. Scarcity changes everything. Human behavior changes everything. The synchronization of demand changes everything.</p><p>And unlike many <a href="https://www.educative.io/courses/grokking-the-system-design-interview?aff=xjW0">system design</a> operations, ticketing platforms operate under emotional pressure, not just technical pressure. Nobody calmly retries later when tickets disappear in seconds. The infrastructure isn&#8217;t just serving requests&#8212;it&#8217;s managing collective frustration at internet scale.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Grokking the Tech Career&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Grokking the Tech Career</span></a></p><h2>The illusion that ticketing is simple</h2><p>From the outside, ticketing systems appear deceptively straightforward. A venue has seats. Users pick seats. Users pay. Inventory decreases. End of story. Compared to something like distributed databases or global messaging systems, the interface feels almost embarrassingly simple.</p><p>That illusion disappears the moment demand becomes synchronized.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vgWw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vgWw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vgWw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vgWw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vgWw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vgWw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2318314,&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://grokkingtechcareer.substack.com/i/196807797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.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_!vgWw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vgWw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vgWw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vgWw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71210c0b-1d3e-4c99-a073-ccf405d57e43_1536x1024.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 role="img" 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><title></title><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>The complexity of Ticketmaster-like systems doesn&#8217;t come from complicated business logic. It comes from extreme coordination under contention. The system has to maintain a globally consistent understanding of inventory while millions of users aggressively compete for the same finite resources in real time. That&#8217;s not normal web traffic. That&#8217;s closer to a distributed resource allocation problem happening in public under intense scrutiny.</p><p>Most applications are optimized around relatively predictable patterns. Traffic fluctuates gradually. Demand distributes naturally across products and time zones. Users tolerate minor delays because alternatives exist. Ticketing systems don&#8217;t get those luxuries. Demand concentrates around exact timestamps, specific artists, specific venues, and extremely small inventory windows.</p><p>The system isn&#8217;t serving &#8220;customers browsing products.&#8221; It&#8217;s handling synchronized digital panic.</p><p>And that changes almost every architectural assumption.</p><h2>Scarcity changes everything</h2><p>Scarcity is what transforms ticketing systems from ordinary transactional infrastructure into something much more volatile. The moment inventory becomes severely limited relative to demand, user behavior changes dramatically. Rational browsing disappears. Refresh behavior intensifies. Retry storms begin. Every millisecond suddenly feels meaningful to users, even if the backend reality is far messier than that perception.</p><p>The system stops behaving like a store and starts behaving like a contested resource market.</p><ul><li><p>Everyone arrives at once</p></li><li><p>Everyone wants the same resource</p></li><li><p>Nobody tolerates delays or inconsistency</p></li></ul><p>That combination is catastrophic for distributed systems.</p><p>Most internet infrastructure benefits from probabilistic spreading of activity. Ticket drops create the opposite effect: perfect synchronization. Millions of users generate near-identical traffic patterns simultaneously, often targeting the same inventory objects. That produces concentrated hotspots at every layer of the stack&#8212;databases, <a href="https://www.educative.io/blog/system-design-caching?aff=xjW0">caches</a>, queues, session systems, payment workflows, inventory coordinators.</p><p>And scarcity amplifies emotional behavior. Users don&#8217;t passively consume the system. They attack it unintentionally through desperation. Multiple tabs. Repeated refreshes. Rapid retries. Session hopping. Every user behaves like a mild denial-of-service actor without realizing it.</p><p>The infrastructure isn&#8217;t just fighting scale. It&#8217;s fighting synchronized human anxiety.</p><h2>Real-time contention and distributed coordination</h2><p>The hardest technical problem inside systems like Ticketmaster is deceptively simple to describe:</p><p>How do you guarantee that one seat gets sold to exactly one person while millions of users are trying to claim it simultaneously?</p><p>That sounds trivial until you actually try to enforce it globally at scale.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eCUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eCUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!eCUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!eCUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!eCUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eCUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2049407,&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://grokkingtechcareer.substack.com/i/196807797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.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_!eCUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!eCUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!eCUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!eCUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb81d022c-c3b9-41e8-9ca2-7d80579c7deb_1536x1024.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 role="img" 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><title></title><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>The moment inventory becomes limited, every seat effectively becomes a contested distributed lock. Multiple users can see it simultaneously. Multiple sessions can attempt to reserve it simultaneously. Multiple geographically distributed services may temporarily disagree about its state. And all of this happens under extreme latency sensitivity because users interpret delay as unfairness.</p><p>Preventing double-booking requires coordination, but coordination introduces latency. Latency reduces perceived fairness. Reduced fairness increases retries and refresh storms. Those retries create more contention.</p><p>This is where clean interview diagrams completely collapse under real-world pressure.</p><p>In theory, you can serialize inventory updates and enforce strict transactional consistency. In practice, that coordination overhead becomes extremely expensive when millions of requests converge simultaneously. So systems start making compromises. Temporary reservations. Distributed locking. Soft holds. Expiring inventory claims. Queue gating. Eventual synchronization between replicas.</p><p>None of these mechanisms are perfect. They&#8217;re all attempts to balance speed, consistency, and survivability under pathological load.</p><p>And the uglier truth is that even small inconsistencies become highly visible because users are emotionally invested in outcomes.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/ticketmaster-system-design/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/p/ticketmaster-system-design/comments"><span>Leave a comment</span></a></p><h2>Queues as both infrastructure and psychology</h2><p>Virtual queues are one of the most fascinating aspects of ticketing systems because they serve two completely different purposes simultaneously.</p><p>Technically, queues are load regulation systems. They smooth traffic spikes, protect downstream services, and prevent infrastructure collapse. But psychologically, they&#8217;re also fairness theater.</p><blockquote><p>In systems like Ticketmaster, the queue is part infrastructure, part crowd control.</p></blockquote><p>Users don&#8217;t just want access. They want perceived fairness. They need to believe the process is orderly, even if the underlying infrastructure is highly probabilistic and imperfect. The queue becomes a social contract between the platform and its users.</p><p>That&#8217;s why queue behavior matters so much beyond pure throughput optimization. Randomness feels unfair. Sudden jumps feel unfair. Freezes feel unfair. Even if the backend is technically functioning correctly, user trust erodes the moment the queue appears inconsistent.</p><p>In reality, many queue systems are doing far more than simply placing users in line. They&#8217;re segmenting traffic, prioritizing verified users, throttling suspicious behavior, coordinating admission rates with backend health, and dynamically adjusting based on inventory conditions.</p><p>The queue isn&#8217;t just protecting the infrastructure.</p><p>It&#8217;s protecting the perception of legitimacy.</p><h2>The bot problem and adversarial traffic</h2><p>Most web applications operate under relatively cooperative assumptions. Ticketing systems absolutely do not.</p><p>The moment high-demand events become financially valuable, the platform enters adversarial territory. Scalpers, automated buyers, browser farms, distributed bot networks, and scripted purchasing workflows all begin targeting the system aggressively. Suddenly, the infrastructure isn&#8217;t merely serving users&#8212;it&#8217;s defending itself against economically motivated automation.</p><p>This changes architectural priorities dramatically.</p><p>Anti-bot systems introduce friction intentionally. CAPTCHAs, behavioral analysis, device fingerprinting, rate limiting, identity verification, session validation&#8212;these mechanisms all exist to slow down adversarial actors. But they also degrade the experience for legitimate users.</p><p>That&#8217;s the uncomfortable trade-off ticketing systems constantly navigate:</p><p>The more aggressively you defend against bots, the more legitimate humans get caught in the blast radius.</p><p>And sophisticated bots increasingly behave like humans anyway. They simulate mouse movement, distribute requests geographically, rotate sessions, mimic browsing patterns, and adapt quickly to new defenses. It becomes an arms race where infrastructure must continuously evolve against automated adversaries with direct financial incentives.</p><p>This is why simplistic critiques of ticketing platforms often miss the reality of the environment they operate in. The system isn&#8217;t just overloaded. It&#8217;s actively under attack during major events.</p><h2>Caching, replication, and stale reality</h2><p>In most large-scale systems, aggressive <a href="https://www.educative.io/blog/system-design-caching?aff=xjW0">caching</a> is one of the easiest ways to improve performance. Ticketing systems complicate that assumption because stale data becomes emotionally explosive.</p><p>If inventory data propagates slowly across replicas or caches, users see seats that no longer exist. They click available tickets that disappear during checkout. They believe the platform is broken or manipulative. Even tiny synchronization delays create visible frustration because users interpret stale inventory as deception.</p><p>Caching suddenly becomes dangerous.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bbs0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bbs0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png 424w, https://substackcdn.com/image/fetch/$s_!bbs0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png 848w, https://substackcdn.com/image/fetch/$s_!bbs0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png 1272w, https://substackcdn.com/image/fetch/$s_!bbs0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bbs0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png" width="1149" height="1369" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1369,&quot;width&quot;:1149,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1422320,&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://grokkingtechcareer.substack.com/i/196807797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.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_!bbs0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png 424w, https://substackcdn.com/image/fetch/$s_!bbs0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png 848w, https://substackcdn.com/image/fetch/$s_!bbs0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.png 1272w, https://substackcdn.com/image/fetch/$s_!bbs0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13f7aa54-3b6c-4675-b3b6-56e439a363c8_1149x1369.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 role="img" 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><title></title><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>The problem is that you still need caching because origin systems cannot survive direct traffic at this scale. So platforms end up operating in an uncomfortable middle ground where they aggressively cache some data while carefully coordinating highly volatile inventory states closer to real time.</p><p>But &#8220;real time&#8221; in distributed systems is always messier than users imagine.</p><p>Inventory state propagates through layers of caches, replicated databases, reservation services, and geographically distributed infrastructure. During peak load, tiny timing inconsistencies become amplified into visible user-facing failures.</p><p>And users don&#8217;t care about eventual consistency models when they lose seats during checkout.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>The infrastructure cost of rare events</h2><p>One of the least appreciated aspects of Ticketmaster-like systems is how economically inefficient they are by nature.</p><p>Most systems optimize around relatively stable utilization. Ticketing systems optimize around catastrophic spikes that happen briefly but unpredictably. Infrastructure must survive massive synchronized surges that may last minutes or hours, even if average daily traffic is far lower.</p><p>That creates an ugly operational reality: enormous infrastructure capacity exists primarily for rare moments of collective urgency.</p><p>Cloud elasticity helps, but only partially. Scaling infrastructure reactively during explosive demand spikes is harder than people assume. Database coordination, queue systems, session management, inventory locking, and replication delays don&#8217;t magically disappear because compute instances scale horizontally.</p><p>The hardest bottlenecks are often stateful systems, not stateless application servers.</p><p>And provisioning for worst-case load is expensive. Very expensive.</p><h2>Traditional e-commerce vs ticketing systems</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ffxf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ffxf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png 424w, https://substackcdn.com/image/fetch/$s_!Ffxf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png 848w, https://substackcdn.com/image/fetch/$s_!Ffxf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png 1272w, https://substackcdn.com/image/fetch/$s_!Ffxf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ffxf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png" width="1094" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:1094,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:212480,&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://grokkingtechcareer.substack.com/i/196807797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.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_!Ffxf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png 424w, https://substackcdn.com/image/fetch/$s_!Ffxf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png 848w, https://substackcdn.com/image/fetch/$s_!Ffxf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.png 1272w, https://substackcdn.com/image/fetch/$s_!Ffxf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca4d148c-8522-4251-845b-da9da1ff8aa7_1094x436.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 role="img" 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><title></title><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>This is why comparing Ticketmaster to ordinary shopping platforms misses the point entirely.</p><p>Traditional e-commerce systems benefit from diversification. Users browse different products, arrive at different times, and tolerate retries reasonably well. Ticketing systems experience concentrated warfare around identical inventory objects with emotionally charged users operating under severe scarcity.</p><p>The architecture isn&#8217;t just handling transactions. It&#8217;s handling synchronized contention at internet scale.</p><p>And synchronized contention is one of the hardest problems in distributed systems.</p><h2>Trade-offs at the center of ticketing platforms</h2><p>Every major design decision inside systems like Ticketmaster revolves around uncomfortable trade-offs.</p><ul><li><p>Fairness vs speed</p></li><li><p>Availability vs consistency</p></li><li><p>Security vs user experience</p></li><li><p>Scalability vs operational cost</p></li></ul><p>Strict consistency improves inventory correctness but increases latency. Aggressive anti-bot protections improve fairness but frustrate legitimate users. Large virtual queues protect infrastructure but create public anger. Relaxed synchronization improves throughput but risks overselling inventory.</p><p>There are no clean solutions here. Only compromises.</p><p>And those compromises become highly visible because users interact with the system during emotionally significant moments. Nobody cares about distributed systems theory when they fail to buy tickets after waiting three hours.</p><h2>Failure in public</h2><p>Most infrastructure failures remain invisible outside engineering teams. Ticketing failures become national conversations.</p><blockquote><p>Nobody tweets when a background service crashes. They absolutely tweet when they can&#8217;t buy concert tickets.</p></blockquote><p>That visibility changes operational pressure enormously.</p><p>Every outage becomes public theater. Every queue freeze generates screenshots. Every error message spreads instantly across social platforms. Infrastructure failures become cultural events because the affected users are emotionally invested and simultaneously online.</p><p>This creates extraordinary pressure on incident response teams. The system isn&#8217;t merely failing technically&#8212;it&#8217;s failing socially in real time under public scrutiny.</p><p>And unlike internal enterprise systems, there&#8217;s no graceful degradation path that users quietly accept. Ticketing failures directly collide with anticipation, money, scarcity, and disappointment all at once.</p><p>That&#8217;s a uniquely brutal operational environment.</p><h2>Misconceptions about systems like Ticketmaster</h2><p>The internet loves simplistic explanations for ticketing failures.</p><div class="callout-block" data-callout="true"><p>&#8220;Just add more servers.&#8221;</p><p>&#8220;Use the cloud properly.&#8221;</p><p>&#8220;This is just bad engineering.&#8221;</p></div><p>Those critiques sound satisfying, but they dramatically underestimate the complexity of coordinated contention systems.</p><p>Adding more stateless servers doesn&#8217;t solve distributed locking bottlenecks. Cloud scaling doesn&#8217;t eliminate consistency trade-offs. Perfect fairness isn&#8217;t technically achievable under massive synchronized demand. And anti-bot protections inherently create friction for real users too.</p><p>The harder truth is that these systems operate near the boundaries of what distributed coordination can realistically handle under adversarial conditions.</p><p>That doesn&#8217;t mean platforms are beyond criticism. It means the problem itself is fundamentally ugly.</p><h2>What Ticketmaster reveals about modern distributed systems</h2><p>Ticketing platforms expose something important about large-scale systems generally:</p><p>The hardest problems usually aren&#8217;t about serving content. They&#8217;re about coordinating scarce state under unpredictable human behavior.</p><p>Interview diagrams simplify distributed systems into neat boxes and arrows. Real systems are full of retries, race conditions, overloaded dependencies, stale replicas, partial failures, adversarial traffic, and emotional users behaving irrationally under pressure.</p><p>Ticketmaster-like systems make those realities impossible to ignore because the failure modes are public and immediate.</p><p>They remind us that distributed systems are ultimately sociotechnical systems. Infrastructure behavior cannot be separated from human behavior because humans adapt to the system continuously, often in destructive ways.</p><h2>The future of large-scale ticketing systems</h2><p>The next generation of ticketing infrastructure will probably become increasingly identity-driven and behavior-aware. AI-assisted traffic analysis, adaptive queue admission, stronger identity verification, device reputation systems, and more aggressive bot detection will continue evolving because the economic incentives are too strong not to.</p><p>But none of that fully solves the deeper issue.</p><p>The underlying problem is synchronized scarcity itself. When millions of people want the same limited thing at the same moment, no architecture can make the experience feel completely fair to everyone. Infrastructure can mitigate contention, regulate flow, and improve resilience, but it cannot eliminate disappointment.</p><p>And that&#8217;s the uncomfortable reality beneath these systems.</p><p>They aren&#8217;t just selling tickets.</p><p>They&#8217;re managing collective urgency at internet scale.</p><h2>Conclusion: systems built around moments of collective urgency</h2><p>Ticketmaster is fascinating because it reveals how fragile distributed systems become when scarcity, synchronization, and human emotion collide simultaneously.</p><p>The hardest part isn&#8217;t serving pages or processing payments. Modern infrastructure is already very good at that. The hard part is maintaining fairness, consistency, trust, and survivability while millions of users aggressively compete for the same finite resources in real time.</p><p>That&#8217;s what makes ticketing systems fundamentally different from ordinary web applications.</p><p>They are systems designed around moments of collective urgency.</p><p>And moments of collective urgency tend to break things.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/ticketmaster-system-design?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/ticketmaster-system-design?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/p/ticketmaster-system-design?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Why system design in 2026 feels fundamentally different]]></title><description><![CDATA[When system design stopped being predictable]]></description><link>https://grokkingtechcareer.substack.com/p/why-system-design-feels-fundamentally</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/why-system-design-feels-fundamentally</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Tue, 05 May 2026 07:47:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W7Bv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There was a time when building systems felt like solving a well-scoped problem. You could map out components, define interactions, and reasonably predict how the system would behave once deployed. There was a sense of closure to it&#8212;a feeling that once the architecture was designed and implemented, the system would largely behave as expected, aside from the occasional scaling issue or bug.</p><p>That sense of predictability is fading.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W7Bv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W7Bv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!W7Bv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!W7Bv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!W7Bv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W7Bv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1009896,&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://grokkingtechcareer.substack.com/i/196513178?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.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_!W7Bv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!W7Bv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!W7Bv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!W7Bv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa57994-43de-4b8b-9f58-d00eee813979_1024x1536.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 role="img" 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><title></title><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>Today, engineers are working with systems that don&#8217;t just execute logic&#8212;they evolve, react, and sometimes behave in ways that are difficult to fully anticipate. The boundaries that once made architecture feel clean and understandable are blurring. You deploy something, but what you observe in production is often a moving target.</p><p>This is why <a href="https://www.educative.io/courses/grokking-the-system-design-interview?aff=xjW0">system design</a> no longer feels like a static discipline. It feels more like navigating a system than constructing one. And that shift is not accidental&#8212;it&#8217;s the result of deeper changes in how modern systems are built and how they behave.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.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://grokkingtechcareer.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2>What system design used to optimize for</h2><p>For a long time, the priorities were not just clear&#8212;they were stable. Engineers designed systems around a small set of core concerns that felt universal and sufficient for most problems. Scalability, reliability, and availability formed the backbone of almost every architectural discussion, and importantly, these goals aligned well with how systems actually behaved.</p><p>Scalability was about growth. You expected more users, more data, more requests&#8212;and you designed your system to handle that increase without breaking. The key assumption here was that growth was mostly linear and predictable. If you could handle ten times the traffic, you could scale your system accordingly using techniques like sharding, caching, and load balancing.</p><p>Reliability was about correctness. Given the same inputs, the system should behave the same way every time. If something failed, it was usually because of a known issue&#8212;a bug, a network failure, or resource exhaustion. These were problems you could reason about, simulate, and fix with confidence.</p><p>Availability ensured that even when parts of the system failed, the overall system remained accessible. Redundancy, replication, and failover strategies were well-understood patterns that gave engineers a sense of control over failure scenarios.</p><p>What made all of this work was a deeper assumption: systems were deterministic. They followed rules. If you understood the rules, you understood the system.</p><p>That assumption is what made the discipline feel structured.</p><h2>A shift driven by modern systems</h2><p>Modern systems have quietly broken that assumption.</p><p>Today&#8217;s architectures are shaped by forces that don&#8217;t fit neatly into deterministic models. Systems now interact with constantly changing data, external services, and components that don&#8217;t always behave predictably. As a result, the system you deploy is not the same system you observe a week later&#8212;even if the code hasn&#8217;t changed.</p><p>This shift is driven by several patterns that have become increasingly common:</p><ul><li><p>Systems that learn from data rather than follow fixed logic</p></li><li><p>Systems that change behavior over time based on feedback</p></li><li><p>Systems that depend on external models and services outside your control</p></li></ul><p>These aren&#8217;t edge cases anymore&#8212;they&#8217;re the norm.</p><p>When a system incorporates machine learning, its behavior becomes probabilistic. When it depends on third-party APIs or <a href="https://www.educative.io/courses/distributed-systems-real-world?aff=xjW0">distributed systems</a> and pipelines, its reliability depends on factors outside your immediate control. When it processes real-time data streams, its state is constantly evolving.</p><p>This introduces a new kind of complexity&#8212;not just in scale, but in behavior.</p><p>You&#8217;re no longer designing a system that executes a defined set of rules. You&#8217;re designing a system that <em>reacts</em>, <em>adapts</em>, and sometimes behaves in ways that you didn&#8217;t explicitly encode.</p><p>And that makes reasoning about it fundamentally harder.</p><h2>AI-native systems and new complexity</h2><p>The integration of AI into modern architectures has amplified this shift.</p><p>AI systems&#8212;especially those built around large language models&#8212;don&#8217;t behave like traditional software components. They don&#8217;t offer strict guarantees. They don&#8217;t always produce consistent outputs. And they often operate as black boxes, where the internal logic is not fully transparent.</p><blockquote><p>Modern systems don&#8217;t just execute logic anymore&#8212;they generate behavior, and that changes how we reason about them.</p></blockquote><p>This introduces entirely new dimensions to architectural thinking.</p><p>You now have to consider:</p><ul><li><p>Variability in outputs, even for identical inputs</p></li><li><p>Latency that depends on model inference time</p></li><li><p>Costs that scale with usage in unpredictable ways</p></li></ul><p>The system becomes a mix of deterministic and probabilistic components. Some parts behave exactly as expected; others behave based on learned patterns that can shift over time.</p><p>This hybrid nature creates tension. Do you trust the model&#8217;s output, or do you build safeguards around it? Do you optimize for speed, or for cost? Do you treat the model as a core component or an external dependency? These are not questions that traditional architectures were designed to answer.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/why-system-design-feels-fundamentally?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/p/why-system-design-feels-fundamentally?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2>Real-time and event-driven architectures</h2><p>At the same time, the way systems process data has changed dramatically.</p><p>Modern architectures are increasingly event-driven, where systems react to streams of events rather than discrete requests. Instead of handling isolated interactions, they operate continuously, processing data as it flows through the system.</p><p>This introduces a different kind of complexity&#8212;one that is less about individual operations and more about interactions over time.</p><p>In traditional systems, you could trace a request from start to finish. You knew where it began, how it was processed, and where it ended. In event-driven systems, that clarity disappears. An event may trigger multiple downstream processes, each of which may generate further events.</p><p>The system becomes a network of flows.</p><p>This has several implications:</p><ul><li><p>There is no single &#8220;path&#8221; through the system</p></li><li><p>Components are loosely coupled but highly interdependent</p></li><li><p>State is distributed and constantly changing</p></li></ul><p>Debugging becomes harder because you&#8217;re not tracing a single execution path&#8212;you&#8217;re reconstructing behavior across multiple asynchronous interactions. Small delays or inconsistencies can propagate in unexpected ways, making issues difficult to isolate.</p><p>What used to be a clean, layered architecture now feels more like a dynamic graph of interactions.</p><h2>Observability over control</h2><p>One of the most important shifts is how engineers understand systems. You no longer fully control them, and you observe them.</p><blockquote><p>You don&#8217;t understand a modern system by reading its code. You understand it by watching it behave.</p></blockquote><p>In traditional systems, you could reason about behavior by looking at the code and the architecture. In modern systems, that&#8217;s not enough. The behavior emerges from interactions between components, data, and external dependencies.</p><p>This is why observability has become central.</p><p>Logs, metrics, and traces are not just debugging tools&#8212;they are your primary way of understanding what the system is doing. They provide visibility into a system that is too complex to fully model mentally.</p><p>You look for patterns and track anomalies, and even interpret signals over time. The system becomes something you <em>study</em>. This changes the nature of engineering work. It&#8217;s less about defining behavior upfront and more about continuously interpreting what the system is doing in production.</p><h2>Adaptability as a core requirement</h2><p>If there&#8217;s one idea that defines modern architecture, it&#8217;s adaptability. Systems are no longer expected to remain stable&#8212;they are expected to evolve. Features are rolled out incrementally. Experiments are run in production. Feedback loops drive continuous change.</p><p>You&#8217;re not building a finished system. You&#8217;re building something that will keep changing. This requires a shift in thinking.</p><p>Instead of asking whether a design is correct, you ask whether it can adapt. Can it handle new requirements without breaking? Can it evolve as data and usage patterns change? Can it support experimentation without introducing instability? Adaptability becomes the new baseline.</p><p>This doesn&#8217;t mean abandoning structure&#8212;it means designing systems that can absorb change without collapsing under it. It means embracing flexibility while still maintaining enough discipline to keep the system understandable. The goal is no longer perfection but resilience in the face of change.</p><h2>Comparison table</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-IVE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-IVE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png 424w, https://substackcdn.com/image/fetch/$s_!-IVE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png 848w, https://substackcdn.com/image/fetch/$s_!-IVE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png 1272w, https://substackcdn.com/image/fetch/$s_!-IVE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-IVE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png" width="1100" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74534,&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://grokkingtechcareer.substack.com/i/196513178?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.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_!-IVE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png 424w, https://substackcdn.com/image/fetch/$s_!-IVE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png 848w, https://substackcdn.com/image/fetch/$s_!-IVE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.png 1272w, https://substackcdn.com/image/fetch/$s_!-IVE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404d7593-f20c-4377-82ab-e10efefc5edc_1100x392.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 role="img" 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><title></title><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>This shift reflects a deeper change in how systems are understood.</p><p>Traditional systems were about controlling complexity. Modern systems are about navigating it. The complexity hasn&#8217;t just increased&#8212;it has changed form, becoming more dynamic and less visible.</p><h2>Trade-offs that define modern systems</h2><p>Modern architectures are shaped by a set of tensions that don&#8217;t have clean resolutions:</p><ul><li><p>Control vs adaptability</p></li><li><p>Simplicity vs capability</p></li><li><p>Performance vs cost</p></li></ul><p>Control versus adaptability reflects the trade-off between predictability and flexibility. Systems that are tightly controlled are easier to reason about, but harder to evolve. Adaptable systems can respond to change, but they introduce uncertainty.</p><p>Simplicity versus capability highlights how adding features often increases hidden complexity. The system may appear simple on the surface, but internally it becomes harder to understand and maintain.</p><p>Performance versus cost has become especially critical with AI-driven systems. Faster responses often come at a higher financial cost, forcing engineers to consider trade-offs that go beyond technical metrics.</p><p>These tensions define modern architecture in ways that traditional frameworks did not fully capture.</p><h2>Failure in modern systems</h2><p>Failure has changed because it&#8217;s no longer always obvious when something is wrong. Systems can continue to function while gradually degrading in performance or correctness. Model drift is a clear example. A system may produce slightly worse outputs over time as underlying data changes. There&#8217;s no crash, no alert&#8212;just a slow decline in quality.</p><p>Distributed inconsistencies introduce another layer of difficulty. In event-driven systems, different components may operate on slightly different versions of state, leading to subtle bugs that are hard to reproduce.</p><p>Cascading failures are also more complex. A delay in one part of the system can propagate through others, creating issues that don&#8217;t have a single root cause. Debugging becomes less about fixing a broken component and more about understanding patterns across the system.</p><h2>Misconceptions about system design today</h2><p>Despite these changes, some old assumptions still persist.</p><p>One is that scaling remains the hardest problem. While scaling is still important, it&#8217;s no longer the defining challenge. Managing complexity, unpredictability, and continuous change has become equally critical.</p><p>Another misconception is that more tools simplify system design. In reality, tools often add layers of abstraction that make systems harder to understand. They solve problems, but they also introduce new ones.</p><p>There&#8217;s also the belief that systems can be fully planned up front. Modern systems evolve in ways that cannot be fully anticipated, making rigid planning less effective. These misconceptions can lead to architectures that look good on paper but struggle in real-world conditions.</p><h2>The evolving role of engineers</h2><p>As systems evolve, so does the role of engineers.</p><blockquote><p>The job is no longer to design perfect systems. It&#8217;s to design systems that can survive change.</p></blockquote><p>You&#8217;re not just building components&#8212;you&#8217;re managing behavior over time. You&#8217;re working across layers, interpreting signals, and guiding systems as they evolve.</p><p>This requires a broader perspective. You need to understand not just how systems are structured, but how they behave under real-world conditions. Engineering becomes less about control and more about stewardship.</p><h2>Final words: designing for uncertainty</h2><p>The discipline has changed in ways that are easy to miss until you step back and look at the bigger picture.</p><p>System design is no longer about creating stable, predictable systems that behave exactly as intended. It&#8217;s about building systems that can operate effectively in environments that are constantly changing.</p><p>You&#8217;re not designing something that will remain fixed. but rather for something that will evolve. And that means embracing uncertainty&#8212;not as a problem to eliminate, but as a reality to design for.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How is machine learning different from traditional programming?]]></title><description><![CDATA[When software stops behaving like software]]></description><link>https://grokkingtechcareer.substack.com/p/how-is-machine-learning-different</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/how-is-machine-learning-different</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Thu, 30 Apr 2026 07:33:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KpVU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a moment every engineer eventually encounters when a system behaves in a way that feels almost unsettling. The <a href="https://www.educative.io/compilers?aff=xjW0">code compiles</a>, the tests pass, and the deployment pipeline runs cleanly, yet the system produces outputs that feel inconsistent, even contradictory. You inspect the logs and find no obvious error, no thrown exception, no broken invariant. Instead, the system seems to be operating within its defined boundaries, yet still drifting into outcomes that were never explicitly anticipated. It is not broken in the conventional sense, but it is no longer behaving like software you can reason about line by line.</p><p>This kind of experience is rare in traditional systems, where behavior is a direct consequence of explicit instructions. In those systems, even complex ones, there is a comforting assumption that every output can be traced back to a specific branch, condition, or function. If something goes wrong, it is because something was written incorrectly or an edge case was overlooked. The relationship between cause and effect remains intact, even when debugging becomes tedious or time-consuming. The system may be large, but it is still fundamentally understandable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KpVU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KpVU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!KpVU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!KpVU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!KpVU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KpVU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1670880,&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://grokkingtechcareer.substack.com/i/195965157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.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_!KpVU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!KpVU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!KpVU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!KpVU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e9070e5-7fcf-482c-9f69-5f6a2661442b_1024x1536.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 role="img" 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><title></title><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><a href="https://www.educative.io/courses/grokking-the-machine-learning-interview?aff=xjW0">Machine learning</a> introduces a different kind of discomfort, one that challenges this deeply ingrained mental model. Instead of executing logic that you have written, the system begins to reflect patterns it has inferred, often in ways that are difficult to articulate or predict. The behavior becomes less about following instructions and more about interpreting data, and that shift subtly erodes the sense of control engineers are used to. The system is no longer just a deterministic machine; it becomes something closer to a statistical instrument.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.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://grokkingtechcareer.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>This is where the core question begins to emerge, not as a technical comparison but as a philosophical one: how is machine learning different from traditional programming? It is not simply a matter of tools or techniques, but a fundamental shift in how we define, build, and trust software systems. The difference lies not only in how code is written, but in how outcomes are produced, validated, and understood. Once you cross that boundary, you begin to realize that building software is no longer just about encoding logic, but about shaping behavior through data.</p><h2><strong>The deterministic world of traditional programming</strong></h2><p>Traditional programming rests on a foundation of determinism, where every possible outcome is the result of explicitly defined logic. When you write a program, you are essentially constructing a map of decisions, each one carefully designed to guide the system from input to output. Even in highly complex systems, the principle remains the same: the program does exactly what it has been told to do, nothing more and nothing less. This creates a sense of predictability that is both powerful and reassuring.</p><p>In this paradigm, developers act as architects of behavior, defining rules that govern every aspect of the system&#8217;s operation. Conditionals, loops, and functions are not just constructs; they are expressions of intent, translated directly into machine-executable form. When a system behaves unexpectedly, the assumption is that somewhere within this structure, a rule has been misapplied or omitted. The debugging process becomes an exercise in tracing logic, following the path of execution until the discrepancy is found.</p><blockquote><p>This level of control allows for a high degree of confidence in system behavior, especially in domains where precision is critical. Financial systems, <a href="https://www.educative.io/courses/operating-systems-virtualization-concurrency-persistence?aff=xjW0">operating systems</a>, and <a href="https://www.educative.io/courses/embedded-programming-with-cpp?aff=xjW0">embedded programming</a> rely heavily on this determinism, where even minor deviations can have significant consequences. The predictability of these systems is not accidental; it is a direct result of the explicitness with which they are constructed. Every edge case, every exception, is accounted for through deliberate design.</p></blockquote><p>However, this approach also imposes limitations, particularly when dealing with problems that do not lend themselves to clear rules. Tasks like image recognition, natural language understanding, or recommendation systems require handling ambiguity, variation, and scale in ways that traditional logic struggles to capture. In such cases, the deterministic model begins to feel rigid, unable to adapt to the complexity of real-world data. It is here that the boundaries of traditional programming become most apparent.</p><h2><strong>The probabilistic nature of machine learning systems</strong></h2><p><a href="https://www.educative.io/courses/machine-learning-system-design?aff=xjW0">Machine learning systems</a> operate in a fundamentally different space, one defined not by explicit rules but by inferred patterns. Instead of telling the system exactly how to behave, developers provide it with data and allow it to learn relationships within that data. The resulting model does not execute a predefined set of instructions; it generates predictions based on probabilities. This introduces a layer of uncertainty that is intrinsic to the system&#8217;s behavior.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zyl9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zyl9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Zyl9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Zyl9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Zyl9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zyl9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1620759,&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://grokkingtechcareer.substack.com/i/195965157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.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_!Zyl9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Zyl9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Zyl9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Zyl9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99cbe938-e0c7-4d15-9162-fd160e6e7494_1024x1536.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 role="img" 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><title></title><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>In this context, outputs are no longer guaranteed to be correct in the traditional sense. They are instead evaluated in terms of likelihood, confidence, and statistical accuracy. A model might classify an image with 92% confidence, but that remaining uncertainty is not an error in the conventional sense. It is a reflection of the model&#8217;s understanding, shaped by the data it has seen and the patterns it has internalized. This probabilistic nature changes how we interpret results, shifting the focus from correctness to performance metrics.</p><p>The implications of this shift are profound, particularly when it comes to reasoning about system behavior. In a deterministic system, you can ask why a specific output was produced and expect a clear answer. In a machine learning system, that question often leads to a more complex exploration of feature interactions, training data distributions, and model architecture. The answer is not a single line of code, but a combination of influences that are difficult to disentangle.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Shifting the burden: from logic to data</strong></h2><p>One of the most significant changes introduced by machine learning is the shift in responsibility from writing logic to curating data. In traditional programming, the quality of the system is largely determined by the correctness and completeness of the code. In machine learning, that responsibility moves upstream, into the data itself. The model can only learn what the data allows it to learn, making data quality a central concern.</p><p>This shift transforms the development process in subtle but important ways. Engineers spend less time defining rules and more time understanding datasets, cleaning inputs, and ensuring that the data reflects the problem space accurately. The focus moves from crafting algorithms to shaping the environment in which those algorithms operate. It becomes less about telling the system what to do, and more about showing it examples of what it should learn.</p><p>The implications for system behavior are equally significant. A model trained on biased or incomplete data will reflect those limitations, often in ways that are difficult to detect. Unlike code, where errors are usually explicit, data issues can manifest as subtle patterns that only emerge over time. This makes the process of building reliable systems more complex, requiring a deeper understanding of both the data and the domain.</p><p>As a result, the role of the engineer begins to evolve, blending aspects of software development with elements of data science. The boundaries between these disciplines become less distinct, as building effective systems requires both technical precision and contextual awareness. This shift challenges traditional notions of expertise, pushing engineers to think beyond code and consider the broader ecosystem in which their systems operate.</p><h2><strong>Debugging: from fixing code to interpreting behavior</strong></h2><p><a href="https://www.educative.io/courses/mastering-debugging-techniques-for-eficient-code-diagnosis?aff=xjW0">Debugging</a> in traditional systems is a relatively structured process, grounded in the assumption that errors originate from incorrect logic. When something goes wrong, the task is to identify the point of failure and correct the underlying code. Tools like debuggers, logs, and stack traces provide a clear path for investigation, allowing developers to trace the execution flow and isolate the issue. The process may be complex, but it is fundamentally linear.</p><p>In machine learning systems, debugging takes on a different character, one that is less about fixing code and more about interpreting behavior. When a model produces unexpected results, the question is not necessarily what is broken, but why the model has learned a particular pattern. This requires examining training data, feature representations, and model parameters, often without a clear starting point. The process becomes exploratory rather than procedural.</p><p>This distinction introduces a new kind of ambiguity, where it is not always clear whether an issue is a bug or a limitation of the model. A misclassification might be the result of insufficient data, poor feature engineering, or inherent ambiguity in the problem itself. Unlike traditional bugs, which can be fixed by changing code, these issues often require iterative experimentation and refinement. The concept of &#8220;fixing&#8221; becomes less precise, replaced by the idea of improving performance.</p><p>As a result, debugging in machine learning systems demands a different mindset, one that is comfortable with uncertainty and iteration. It requires thinking in terms of distributions and patterns, rather than discrete conditions and outcomes. This shift can be challenging for engineers accustomed to deterministic systems, where every problem has a clear solution. In the world of machine learning, solutions are often incremental, and understanding evolves alongside the system itself.</p><h2><strong>Control vs adaptation</strong></h2><p>Traditional programming is fundamentally about control, where developers define exactly how a system should behave under all conditions. This control is achieved through explicit logic, ensuring that every possible scenario is accounted for. The result is a system that behaves predictably, with outcomes that can be traced back to specific decisions. This level of control is essential in domains where reliability and precision are paramount.</p><p>Machine learning, on the other hand, prioritizes adaptation over control. Instead of defining behavior explicitly, developers create systems that can adjust to new data and changing conditions. This adaptability allows machine learning systems to handle complexity and variability in ways that traditional systems cannot. However, it also introduces a trade-off, as increased flexibility often comes at the cost of reduced predictability.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!slwu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!slwu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!slwu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!slwu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!slwu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!slwu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1518388,&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://grokkingtechcareer.substack.com/i/195965157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.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_!slwu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!slwu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!slwu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!slwu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f398b2-3374-4f3a-9093-24207e00cd55_1024x1536.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 role="img" 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><title></title><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>This trade-off is not merely technical; it reflects a deeper philosophical difference in how systems are designed. Traditional programming seeks to eliminate uncertainty by defining rules, while machine learning embraces uncertainty as a means of capturing real-world complexity. The choice between these approaches depends on the nature of the problem, as well as the acceptable level of risk and variability.</p><p>Understanding this balance is key to effectively using both paradigms. It is not a matter of choosing one over the other, but of recognizing their respective strengths and limitations. In many cases, the most effective systems combine elements of both, leveraging the control of traditional programming with the adaptability of machine learning. This hybrid approach reflects the evolving nature of software development, where flexibility and reliability must coexist.</p><h2><strong>System evolution over time</strong></h2><p>Traditional systems are inherently stable, changing only when developers modify the code. This stability is a direct consequence of their deterministic nature, where behavior remains consistent as long as the underlying logic is unchanged. While this makes systems easier to reason about, it also limits their ability to adapt to new conditions. Updates require deliberate intervention, often involving careful testing and deployment.</p><p>Machine learning systems, by contrast, are designed to evolve over time, particularly as new data becomes available. This evolution can be both a strength and a challenge, as it allows systems to improve but also introduces the possibility of drift. Model drift occurs when the data distribution changes, causing the model&#8217;s performance to degrade. Unlike traditional systems, where behavior remains static, machine learning systems must be continuously monitored and updated.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Grokking the Tech Career&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share Grokking the Tech Career</span></a></p><p>This dynamic nature requires a different approach to system maintenance, one that emphasizes ongoing evaluation and retraining. Engineers must consider not only the current performance of the model, but also how it might change in the future. This adds a temporal dimension to system design, where behavior is not fixed but evolves alongside the data.</p><p>The concept of evolution also raises questions about ownership and responsibility, as systems become less tied to specific code changes and more influenced by external factors. Managing this complexity requires new tools and practices, as well as a shift in how engineers think about system lifecycle. It is no longer enough to build and deploy; systems must be continuously guided and refined.</p><h2><strong>The role of uncertainty in system behavior</strong></h2><p>Uncertainty is a fundamental aspect of machine learning systems, shaping how they operate and how their outputs are interpreted. Unlike traditional systems, where uncertainty is typically seen as a problem to be eliminated, machine learning treats it as an inherent feature. Predictions are expressed in terms of probabilities, reflecting the model&#8217;s confidence rather than absolute certainty.</p><p>This perspective changes how systems are evaluated and used, particularly in real-world applications. Instead of expecting perfect accuracy, stakeholders must consider trade-offs between precision, recall, and other performance metrics. Decisions are made based on likelihoods rather than guarantees, requiring a more nuanced understanding of risk and uncertainty. This shift has implications not only for engineering, but also for how systems are integrated into broader processes.</p><p>Handling uncertainty effectively requires careful design, particularly in how outputs are communicated and acted upon. Systems must be able to convey confidence levels, allowing users to make informed decisions. This adds an additional layer of complexity, as engineers must consider not only the accuracy of predictions, but also how those predictions are interpreted.</p><p>In many ways, embracing uncertainty represents a departure from traditional notions of software reliability. It challenges the idea that systems should always produce correct answers, instead focusing on producing useful ones. This shift reflects the growing importance of machine learning in domains where ambiguity is unavoidable, and where rigid logic is insufficient.</p><h2><strong>Comparison table</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HoOR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HoOR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png 424w, https://substackcdn.com/image/fetch/$s_!HoOR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png 848w, https://substackcdn.com/image/fetch/$s_!HoOR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png 1272w, https://substackcdn.com/image/fetch/$s_!HoOR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HoOR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png" width="1100" height="388" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:388,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:182339,&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://grokkingtechcareer.substack.com/i/195965157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.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_!HoOR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png 424w, https://substackcdn.com/image/fetch/$s_!HoOR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png 848w, https://substackcdn.com/image/fetch/$s_!HoOR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.png 1272w, https://substackcdn.com/image/fetch/$s_!HoOR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff95bd8d4-7c0c-4a3a-a751-b83f8ef7d0bb_1100x388.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 role="img" 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><title></title><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>Traditional programming treats problems as sets of conditions that can be explicitly defined and solved through logic. Machine learning, by contrast, treats problems as patterns that can be approximated through data. This difference influences not only how systems are built, but also how they are understood and trusted.</p><p>In traditional systems, correctness is a binary property, where outputs are either right or wrong based on the defined logic. In machine learning systems, correctness becomes a spectrum, evaluated through metrics and probabilities. This shift requires a different mindset, one that is comfortable with approximation and uncertainty. It also changes how success is measured, moving from absolute correctness to statistical performance.</p><p>The philosophical divide between these paradigms reflects a broader evolution in software development, where the boundaries of what can be automated are expanding. Machine learning does not replace traditional programming, but it redefines its role, introducing new ways of thinking about systems and their capabilities. </p><h2><strong>Trade-offs between the two paradigms</strong></h2><p>The choice between traditional programming and machine learning is often framed as a trade-off between precision and flexibility. Traditional systems offer precise control over behavior, ensuring that outputs are consistent and predictable. Machine learning systems, on the other hand, provide flexibility, allowing them to adapt to complex and changing environments. This trade-off is not absolute, but it shapes how systems are designed and deployed.</p><p>Control versus learning is another key dimension, reflecting the tension between explicit rules and inferred patterns. Traditional programming excels in scenarios where rules can be clearly defined, while machine learning thrives in situations where patterns are too complex to articulate. The decision to use one approach over the other depends on the nature of the problem, as well as the desired level of control.</p><div class="pullquote"><p>Transparency versus performance also plays a role, as traditional systems are generally easier to understand and explain. <a href="https://www.educative.io/blog/machine-learning-models?aff=xjW0">Machine learning models</a>, particularly deep learning systems, can be opaque, making it difficult to interpret their decisions. This lack of transparency can be a concern in critical applications, where understanding system behavior is essential.</p></div><p>These trade-offs highlight the importance of choosing the right tool for the job, rather than viewing one paradigm as inherently superior. Both approaches have their place, and the most effective systems often combine elements of both. The challenge lies in understanding their respective strengths and limitations, and in applying them thoughtfully.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.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://grokkingtechcareer.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>Where traditional programming still dominates</strong></h2><p>Traditional programming remains the preferred approach in domains where reliability and predictability are critical. Systems that control physical processes, such as aviation or medical devices, require precise and deterministic behavior. In these contexts, the uncertainty inherent in machine learning is unacceptable, as even small deviations can have significant consequences. The ability to reason about every possible outcome is essential.</p><p>In addition, problems that can be clearly defined through rules are often better suited to traditional programming. Tasks involving calculations, data transformations, or well-understood workflows do not benefit from the flexibility of machine learning. In these cases, the overhead of training and maintaining models outweighs any potential advantages. Simplicity and clarity become more valuable than adaptability.</p><p>Traditional systems also offer advantages in terms of transparency and maintainability. Code can be reviewed, tested, and understood in a way that machine learning models often cannot. This makes it easier to ensure compliance with regulations and standards, particularly in industries where accountability is critical. The explicit nature of traditional programming provides a level of assurance that is difficult to replicate with machine learning.</p><div class="callout-block" data-callout="true"><p>Despite the rise of machine learning, traditional programming continues to play a central role in software development. It provides the foundation upon which more complex systems are built, and its principles remain essential for ensuring reliability and control. Rather than being replaced, it is being complemented by new approaches.</p></div><h2><strong>Where machine learning becomes essential</strong></h2><p>Machine learning becomes indispensable in scenarios where patterns are too complex or too numerous to be captured through explicit rules. Tasks like image recognition, speech processing, and recommendation systems involve high-dimensional data and subtle relationships that are difficult to encode manually. In these cases, machine learning provides a way to approximate solutions that would otherwise be infeasible.</p><p>The ability to scale with data is another key advantage, allowing machine learning systems to improve as more information becomes available. Unlike traditional systems, which require manual updates to incorporate new knowledge, machine learning models can adapt through retraining. This makes them particularly well-suited for dynamic environments where conditions change over time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RG06!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RG06!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!RG06!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!RG06!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!RG06!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RG06!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1666832,&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://grokkingtechcareer.substack.com/i/195965157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.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_!RG06!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!RG06!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!RG06!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!RG06!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08170b8-3f35-4f66-a004-defc31eeb5cd_1024x1536.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 role="img" 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><title></title><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>Machine learning also enables new kinds of applications, particularly those involving personalization and prediction. By analyzing user behavior and preferences, systems can tailor their outputs to individual needs. This level of customization is difficult to achieve with traditional programming, where rules must be defined in advance. The flexibility of machine learning allows for more responsive and adaptive systems.</p><p>These capabilities have driven the widespread adoption of machine learning across industries, from healthcare to finance to entertainment. While not a universal solution, it has expanded the range of problems that software can address. Understanding where it is most effective is key to leveraging its potential.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/how-is-machine-learning-different/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/p/how-is-machine-learning-different/comments"><span>Leave a comment</span></a></p><h2><strong>Common misconceptions </strong></h2><p>There is a common belief that machine learning will eventually replace traditional programming entirely, rendering explicit logic obsolete. This perspective overlooks the complementary nature of the two paradigms, as well as the continued importance of deterministic systems. Machine learning extends the capabilities of software, but it does not eliminate the need for clear and precise logic.</p><p>Another misconception is that more data always leads to better models, regardless of its quality or relevance. In reality, the effectiveness of a machine learning system depends heavily on the quality of the data it is trained on. Poor data can lead to misleading patterns, resulting in systems that perform poorly or behave unpredictably. Quantity alone is not sufficient; context and accuracy are equally important.</p><p>There is also a tendency to view machine learning systems as inherently smarter or more advanced than traditional systems. While they can handle complex tasks, they are still limited by their training data and design. They do not possess understanding in the human sense, but rather operate within the constraints of their learned representations. This distinction is often overlooked, leading to unrealistic expectations.</p><p>Clarifying these misconceptions is important for developing a balanced understanding of machine learning. It is a powerful tool, but it is not a panacea. Recognizing its limitations is as important as appreciating its strengths, particularly as it becomes more integrated into software systems.</p><h2><strong>The future of software development</strong></h2><p>The rise of machine learning is reshaping the role of the software engineer, blurring the lines between programming and <a href="https://www.educative.io/courses/learn-data-science?aff=xjW0">data science</a>. Engineers are increasingly required to think not only about code, but also about data, models, and system behavior over time. This shift is changing how systems are designed, tested, and maintained, introducing new challenges and opportunities.</p><p>Hybrid systems that combine traditional programming with machine learning are becoming more common, leveraging the strengths of both approaches. These systems use deterministic logic to handle well-defined tasks, while relying on machine learning for more complex or ambiguous components. This integration reflects a more nuanced understanding of <a href="https://www.educative.io/path/software-development-methodologies?aff=xjW0">software development</a>, where different paradigms are applied as needed.</p><p>Looking ahead, the distinction between these paradigms may become less pronounced, as tools and frameworks evolve to bridge the gap. However, the underlying philosophical differences will remain, shaping how engineers approach problem-solving. Understanding these differences is essential for navigating the future of software development.</p><div class="directMessage button" data-attrs="{&quot;userId&quot;:89132484,&quot;userName&quot;:&quot;Fahim ul Haq&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><h2><strong>Redefining what it means to build software</strong></h2><p>At its core, the question of how machine learning differs from traditional programming is not just about techniques, but about perspective. It challenges the idea that software is simply a collection of rules, replacing it with a more fluid and adaptive model of behavior. This shift requires rethinking not only how systems are built, but also how they are understood and trusted.</p><p>Machine learning introduces a new way of thinking about software, one that embraces uncertainty and complexity rather than trying to eliminate them. It expands the boundaries of what can be automated, while also redefining the role of the engineer. Building software becomes less about writing instructions and more about shaping systems that learn and evolve.</p><p>In this sense, machine learning does not replace traditional programming, but transforms it, adding a new dimension to the craft. It invites engineers to think differently, to question assumptions, and to explore new possibilities. And in doing so, it changes not just how we build software, but how we think about it altogether.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[What are real-world applications of machine learning today?]]></title><description><![CDATA[The real-world impact of machine learning lies not in individual predictions but in how these predictions influence system behavior over time.]]></description><link>https://grokkingtechcareer.substack.com/p/what-are-real-world-applications</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/what-are-real-world-applications</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 29 Apr 2026 09:51:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9Muv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Machine learning has quietly transitioned from a specialized research discipline into an embedded layer within nearly every modern digital system, often operating in ways that users never explicitly notice. When you scroll through a social media feed, receive product recommendations, or interact with a virtual assistant, you are engaging with systems that rely on machine learning to make decisions in real time.</p><p>These systems do not present themselves as &#8220;machine learning features,&#8221; but rather as seamless experiences that feel intuitive and responsive. The intelligence behind them is abstracted away, integrated deeply into the infrastructure that powers user interactions. This invisibility is not accidental but a result of deliberate system design, where machine learning is treated as a background capability rather than a standalone component. Engineers must think beyond models and consider how these systems integrate into broader architectures.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Muv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Muv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9Muv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9Muv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9Muv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Muv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1588975,&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://grokkingtechcareer.substack.com/i/195842703?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.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_!9Muv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9Muv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9Muv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9Muv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fbe62b9-b2bd-4076-b1c0-43c07ff55c3e_1024x1536.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 role="img" 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><title></title><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 class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/p/what-are-real-world-applications?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/p/what-are-real-world-applications?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p>Machine learning is not simply applied to isolated problems; it is woven into the fabric of systems that manage data, drive decisions, and shape user experiences. Each application is part of a larger pipeline that includes data ingestion, feature processing, model inference, and feedback loops. These pipelines operate continuously, adapting to new data and evolving conditions. The real-world impact of <a href="https://www.educative.io/courses/machine-learning-system-design?aff=xjW0">machine learning</a> lies not in individual predictions but in how these predictions influence system behavior over time. Understanding this requires a shift from thinking about models to thinking about systems.</p><h2><strong>Machine learning as an invisible system layer</strong></h2><p>As machine learning becomes more pervasive, it also becomes more complex, introducing challenges that extend beyond algorithmic performance. Systems must handle large-scale data processing, ensure low-latency responses, and maintain reliability under varying conditions. Engineers must design architectures that can support these requirements, balancing performance with cost and maintainability. The integration of machine learning into production systems requires careful orchestration of multiple components, each with its own constraints and dependencies. This orchestration defines how machine learning operates in practice, shaping its effectiveness and impact.</p><p>Ultimately, machine learning serves as an invisible layer that enhances system capabilities, enabling applications to adapt and respond dynamically. Its presence is felt through improved personalization, smarter decision-making, and more efficient operations. However, this integration also demands a deeper understanding of how systems behave under real-world conditions. Engineers must design systems that can harness the power of machine learning while managing its complexity, ensuring that it contributes to overall system performance.</p><h2><strong>The shift from models to systems</strong></h2><p>The evolution of machine learning from isolated models to integrated systems represents one of the most significant shifts in modern software engineering. Early applications of machine learning focused primarily on model development, where the primary goal was to achieve high accuracy on a specific task. However, as these models moved into production, it became clear that their performance depended not only on their predictive capabilities but also on how they were integrated into larger systems. Models must now operate within pipelines that handle data ingestion, preprocessing, inference, and feedback, creating a complex ecosystem of interdependent components. Engineers must design these systems to ensure that models can function effectively in real-world environments.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>This shift introduces new challenges that extend beyond traditional machine learning concerns, particularly in terms of scalability and reliability. Systems must handle large volumes of data, process it efficiently, and deliver predictions with minimal latency. This requires robust infrastructure that can support <a href="https://www.educative.io/courses/distributed-systems-real-world?aff=xjW0">distributed systems</a> processing and real-time decision-making. Engineers must also consider how models interact with other system components, ensuring that data flows smoothly and that dependencies are managed effectively. The complexity of these interactions often determines the success or failure of machine learning systems in production.</p><p>Another critical aspect of this transition is the role of feedback loops, which allow systems to learn and adapt over time. Unlike static models, production systems must continuously update their understanding based on new data, requiring mechanisms for monitoring and retraining. These feedback loops introduce additional complexity, as they must be carefully designed to avoid instability or unintended behavior. Engineers must ensure that updates improve system performance without introducing new issues.</p><p>The shift from models to systems highlights the importance of holistic design, where machine learning is treated as part of a broader architecture. Engineers must consider how models fit into the system, how they interact with data and infrastructure, and how they evolve over time. This perspective is essential for building systems that can leverage machine learning effectively.</p><h2><strong>What Are Real-World Applications of Machine Learning Today?</strong></h2><p>Understanding real-world applications of machine learning requires moving beyond individual use cases and examining how these systems operate across industries. Machine learning is not applied in isolation but as part of larger systems that manage data, automate decisions, and enhance user experiences. Each application reflects the specific needs and constraints of its domain, shaping how machine learning is integrated and deployed. Engineers must consider how these systems function as a whole, rather than focusing on individual components.</p><p>Different industries leverage machine learning in distinct ways, reflecting the diversity of challenges they face. In e-commerce, machine learning drives personalization and recommendation systems, while in finance, it supports fraud detection and risk analysis. Healthcare applications focus on diagnostic support and predictive analytics, while autonomous systems rely on machine learning for perception and decision-making. Despite these differences, all applications share a common foundation in data-driven decision-making. Engineers must design systems that can process and interpret data effectively, enabling machine learning to deliver meaningful insights.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CRyg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CRyg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!CRyg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!CRyg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!CRyg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CRyg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1703454,&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://grokkingtechcareer.substack.com/i/195842703?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.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_!CRyg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!CRyg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!CRyg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!CRyg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1d0b926-597d-4e54-a1cc-4d7f95c407b9_1024x1536.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 role="img" 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><title></title><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>The integration of machine learning into these systems requires careful consideration of infrastructure, data pipelines, and user interactions. Models must be deployed in environments that can support their computational requirements, while data pipelines must ensure that inputs are accurate and up-to-date. User-facing applications must present predictions in a way that is intuitive and actionable, bridging the gap between machine learning and human decision-making. Engineers must design systems that can handle these complexities while maintaining performance and reliability.</p><p>Ultimately, real-world applications of machine learning are defined by their ability to integrate into existing systems and enhance their capabilities. This integration requires a deep understanding of both machine learning and system design, ensuring that applications can operate effectively in production environments.</p><h2><strong>Personalization and recommendation systems</strong></h2><p>Personalization systems represent one of the most visible applications of machine learning, yet their complexity is often underestimated because of how seamlessly they integrate into user experiences. These systems operate by continuously analyzing user behavior, preferences, and interactions to generate tailored recommendations. Unlike static systems, personalization engines must adapt in real time, updating their predictions as new data becomes available. This requires a combination of <a href="https://www.educative.io/courses/scalable-data-pipelines-kafka?aff=xjW0">data pipelines</a>, feature engineering, and model inference, all operating within a distributed environment. Engineers must design systems that can handle this continuous flow of information while maintaining low latency.</p><p>The core challenge in recommendation systems lies in balancing relevance with diversity, ensuring that users are exposed to content that is both interesting and varied. Overemphasis on past behavior can lead to echo chambers, where users are repeatedly shown similar content, reducing engagement over time. Engineers must design algorithms that can introduce novelty while maintaining accuracy, requiring careful tuning of model parameters and feedback mechanisms. This balance is critical for maintaining user engagement and satisfaction.</p><p>Scalability is another significant challenge, as recommendation systems must handle millions or even billions of users and items. The system must process large volumes of data efficiently, ensuring that recommendations are generated quickly and accurately. This requires distributed computing frameworks and optimized data storage solutions, enabling the system to scale horizontally. Engineers must design systems that can handle these demands while maintaining performance.</p><p>Bias and fairness also play a crucial role in personalization systems, as recommendations can inadvertently reinforce existing patterns or exclude certain groups. Engineers must consider these factors when designing systems, ensuring that recommendations are equitable and inclusive. This requires ongoing monitoring and adjustment, as biases can emerge over time.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Grokking the Tech Career&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://grokkingtechcareer.substack.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share Grokking the Tech Career</span></a></p><h2><strong>Fraud detection and risk analysis systems</strong></h2><p>Fraud detection systems represent a critical application of machine learning, where the goal is to identify anomalous behavior that may indicate fraudulent activity. These systems operate in real time, analyzing transactions and user behavior to detect patterns that deviate from normal activity. Unlike traditional rule-based systems, machine learning models can adapt to new patterns, improving their ability to detect fraud over time. Engineers must design systems that can process data quickly and accurately, ensuring that fraudulent activity is identified before it causes significant damage.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e5LO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e5LO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!e5LO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!e5LO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!e5LO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e5LO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1652693,&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://grokkingtechcareer.substack.com/i/195842703?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.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_!e5LO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!e5LO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!e5LO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!e5LO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf138dd1-ee85-4ffe-969e-e9b3e8e50098_1024x1536.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 role="img" 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><title></title><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>The challenge in <a href="https://www.educative.io/courses/grokking-the-machine-learning-interview/fraud-detection-system-architecture?aff=xjW0">fraud detection</a> lies in balancing sensitivity and specificity, as overly aggressive models can generate false positives, while conservative models may miss fraudulent activity. Engineers must carefully tune models to achieve the desired balance, considering the impact of errors on both users and the system. False positives can lead to user frustration, while false negatives can result in financial losses. This trade-off is a central consideration in system design.</p><p>Real-time processing is essential for fraud detection systems, as delays can reduce their effectiveness. The system must analyze transactions as they occur, requiring low-latency data processing and model inference. Engineers must design infrastructure that can support these requirements, ensuring that decisions are made quickly and accurately. This often involves distributed systems and optimized data pipelines.</p><p>Fraud detection systems must also adapt to evolving threats, as fraudsters continuously develop new techniques to bypass detection. Engineers must design systems that can learn from new data, updating models and rules to address emerging patterns. This requires robust feedback mechanisms and continuous monitoring, ensuring that the system remains effective over time.</p><h2><strong>Comparison of system approaches</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HVy6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HVy6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png 424w, https://substackcdn.com/image/fetch/$s_!HVy6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png 848w, https://substackcdn.com/image/fetch/$s_!HVy6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png 1272w, https://substackcdn.com/image/fetch/$s_!HVy6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HVy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png" width="1456" height="318" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:318,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:210707,&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://grokkingtechcareer.substack.com/i/195842703?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.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_!HVy6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png 424w, https://substackcdn.com/image/fetch/$s_!HVy6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png 848w, https://substackcdn.com/image/fetch/$s_!HVy6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png 1272w, https://substackcdn.com/image/fetch/$s_!HVy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74d2cb89-fa3d-4656-ae51-b21765861c22_1476x322.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The comparison illustrates how machine learning fundamentally changes system behavior, particularly in terms of adaptability and scalability. Rule-based systems rely on predefined logic, making them easy to implement but difficult to adapt to changing conditions. Traditional statistical systems offer some flexibility but are limited in their ability to handle complex patterns. Machine learning systems, by contrast, can learn from data and adapt over time, enabling them to handle a wide range of scenarios.</p><p>However, this adaptability comes at the cost of increased complexity, as machine learning systems require sophisticated infrastructure and ongoing maintenance. Engineers must design systems that can manage this complexity, ensuring that models remain accurate and reliable. The trade-offs between simplicity and adaptability are central to system design, influencing how machine learning is integrated into production systems.</p><p>The comparison underscores the importance of understanding how different approaches impact system behavior, guiding engineers in choosing the appropriate solution for their needs.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[6 projects that will get you hired in 2026]]></title><description><![CDATA[Future-proof your portfolio ASAP and start the new year with a competitive edge.]]></description><link>https://grokkingtechcareer.substack.com/p/6-projects-that-will-get-you-hired</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/6-projects-that-will-get-you-hired</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 14 Jan 2026 17:02:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!B544!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve said this many times before: AI upskilling is a non-negotiable for any developer looking to keep up this year.</p><p>But what&#8217;s the best way to actually get hands-on with AI skills?</p><p>Building projects.</p><p>Here&#8217;s why:</p><ul><li><p><strong>Developers learn by building</strong>. Passive learning isn&#8217;t fruitful, active learning is.</p></li><li><p><strong>Employers see your portfolio as proof</strong>. A project on your portfolio beats a keyword on your resume any day. It shows you can build with a technology before you even interview.</p></li></ul><p>That&#8217;s why today I&#8217;ll be sharing my top <strong>6 Educative Projects</strong> for AI upskilling. These selections are based on the technologies my colleagues and I are prioritizing as we hire in 2026.</p><blockquote><p>If you&#8217;re unfamiliar with our Projects, they&#8217;re our solution to help developers build production-grade projects while they learn.</p><p>They include:</p><ul><li><p>Walkthroughs for portfolio-ready projects</p></li><li><p>Code and build as you go, all inside your browser</p></li><li><p>No production set up or third party access needed</p></li></ul><p><strong>And for one more day,</strong> you can access these projects with a <a href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">discount of at least 50% off</a>. </p></blockquote><p>Let&#8217;s jump in.</p><blockquote></blockquote><h2>1. Build a Chatbot with OpenAI GPT-5 Using Flask</h2><p><strong>Technologies</strong>: Flask, Python, OpenAI</p><p>Build practical skills in backend development and AI integration using GPT-5 &#8212; one of the most advanced models available today.</p><p>You&#8217;ll build a chatbot with Flask, connect it to the GPT-5 API, and generate intelligent, context-aware responses. You&#8217;ll also implement chat history tracking so the conversation stays coherent across messages (just like real production apps do).</p><p>&#128119;<strong> Who it&#8217;s for:</strong> Developers who want to build smarter AI-powered apps with real conversational memory.</p><p>&#128073; <a href="https://www.educative.io/projects/build-a-chatbot-with-openai-gpt-using-flask?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">Build a Chatbot with OpenAI GPT-5 Using Flask</a></p><blockquote><p><em><strong>Want a Flask project that leverages DSPy too?</strong> Check out: <a href="https://www.educative.io/projects/build-an-ai-financial-analyst-assistant-using-dspy-and-flask?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">Build an AI Financial Analyst Assistant with DSPy and Flask</a>.</em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nRw5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nRw5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nRw5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nRw5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nRw5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nRw5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg" width="1120" height="527" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:527,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;project 2&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="project 2" title="project 2" srcset="https://substackcdn.com/image/fetch/$s_!nRw5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nRw5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nRw5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nRw5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfa5898-f093-4e75-b777-b1fc8ada5cd3_1120x527.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 role="img" 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><title></title><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><em>Screenshot from Build an AI Financial Analyst Assistant with DSPy and Flask</em></p><blockquote></blockquote><h2>2. FREE: Build a Multi-Agent Job Search System with CrewAI and Python</h2><p><strong>Technologies</strong>: CrewAI, LangChain, Python, Streamlit, Gemini</p><p>If you&#8217;re on the job hunt, this project is a 2-for-1.</p><p>You&#8217;ll come out with:</p><ul><li><p>An AI project for your portfolio</p></li><li><p>And a job search system that saves you time (and sanity)</p></li></ul><p>You&#8217;ll define specialized agents to:</p><ul><li><p>Search job postings</p></li><li><p>Generate tailored resumes and cover letters</p></li><li><p>Create outreach messages</p></li></ul><p>&#8230;And connect them into a working Crew to streamline your own job hunt.</p><p>This project is your hands-on introduction to agent orchestration and workflow design. Best of all: it&#8217;s free.</p><p>&#128119; <strong>Who it&#8217;s for:</strong> Developers who want to build AI chops + save time during the job hunt.</p><p>&#128073; <a href="https://www.educative.io/projects/build-a-job-hunt-agent-workflow-with-crewai-and-python?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">Build a Multi-Agent Job Search System with CrewAI and Python</a></p><blockquote><p><em><strong>Interested in another CrewAI + LangChain project?</strong></em></p><p><em>Check out: <a href="https://www.educative.io/projects/build-a-crewai-agentic-workflow-using-github-mcp-server-tools?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">Build an Agentic Workflow with CrewAI and GitHub MCP Server Tools</a>.</em></p></blockquote><h2>3. Explore DeepSeek Models via OpenRouter</h2><p><strong>Technologies</strong>: OpenRouter API, Jupyter Notebook, DeepSeek, Python</p><p>This project teaches you how to integrate multiple DeepSeek models into a Python workflow using the OpenRouter API, so you can build smarter tools that go beyond a single prompt.</p><p>Inside a Jupyter Notebook, you&#8217;ll tackle tasks like summarizing research, writing support emails, generating social content, and solving code problems.</p><p>Along the way, you&#8217;ll explore essential skills for any modern AI developer, including:</p><ul><li><p>Prompt engineering</p></li><li><p>Token management</p></li><li><p>Model chaining</p></li></ul><p>&#128119; <strong>Who it&#8217;s for:</strong> Developers who want to move from prompting to building with large language models.</p><p>&#128073; <a href="https://www.educative.io/projects/explore-deepseek-models-via-openrouter?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">Explore DeepSeek Models via OpenRouter</a></p><blockquote></blockquote><h2>4. Develop a Multi-Agent Research Assistant Using AutoGen</h2><p><strong>Technologies</strong>: AutoGen, Python, OpenAI API</p><p>Multi-agent systems like AutoGen are redefining what AI can do &#8212; not just answering questions, but coordinating complex tasks across specialized roles.</p><p>In this project, you&#8217;ll use AutoGen to build a research assistant that automates the full pipeline of academic exploration: refining topics, finding papers, extracting insights, and compiling structured reports.</p><p>You&#8217;ll get experience with skills like:</p><ul><li><p>Agent collaboration</p></li><li><p>Sequential task execution</p></li><li><p>Custom workflow design</p></li></ul><p>&#8230; All while building a portfolio-ready tool for research automation.</p><p>&#128119;<strong> Who it&#8217;s for:</strong> Developers interested in automating complex workflows and building AI tools for knowledge work.</p><p>&#128073; <a href="https://www.educative.io/projects/develop-a-multi-agent-research-assistant-using-autogen?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">Develop a Multi-Agent Research Assistant Using AutoGen</a></p><blockquote></blockquote><h2>5. Build a RAG Chatbot Using DeepSeek and LlamaIndex</h2><p><strong>Technologies</strong>: DeepSeek, LlamaIndex, ChainLit, React</p><p>RAG is one of the most effective ways to reduce hallucinations in LLMs by grounding answers in real sources instead of just guessing. In this project, you&#8217;ll build a chatbot that does exactly that: fetching up-to-date content from Wikipedia to generate accurate, context-aware responses.</p><p>In this project, you&#8217;ll:</p><ul><li><p>Create an interactive chat interface using ChainLit</p></li><li><p>Connect to Groq-hosted LLMs like DeepSeek or LLaMA 3 for ultra-fast inference</p></li><li><p>Rely on LlamaIndex for indexing and retrieval</p></li></ul><p>By the end, you&#8217;ll have a fully functional ReAct-based agent that can research, reason, and respond using live data.</p><p>&#128119; <strong>Who it&#8217;s for:</strong> Developers who want to build faster, smarter AI systems that actually know what they&#8217;re talking about.</p><p>&#128073; <a href="https://www.educative.io/projects/build-a-rag-chatbot-using-deepseek-and-llamaindex?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">Build a RAG Chatbot Using DeepSeek and LlamaIndex</a></p><blockquote><p><em><strong>Want a RAG project that gets you hands-on with FastAPI?</strong> Check out: <a href="https://www.educative.io/projects/building-a-retrieval-augmented-generation-system-using-fastapi?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">Building a Retrieval-Augmented Generation System Using FastAPI</a></em></p></blockquote><h2>6. Build an AI Travel Planner with Multi-Agent A2A Protocol</h2><p><strong>Technologies</strong>: Gemini, Python</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B544!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B544!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B544!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B544!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B544!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B544!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg" width="1120" height="520" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:520,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;project 1&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="project 1" title="project 1" srcset="https://substackcdn.com/image/fetch/$s_!B544!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B544!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B544!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B544!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80881338-7380-44c1-9427-ad0569296aae_1120x520.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 role="img" 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><title></title><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><em>Screenshot from Build an AI Travel Planner with Multi-Agent A2A Protocol</em></p><p>Agent-to-Agent (A2A) collaboration is quickly becoming one of the hottest trends in AI &#8212; powering more dynamic, modular, and scalable systems that go far beyond single-model solutions.</p><p>In this project, you&#8217;ll explore that frontier by building an AI travel planner where specialized agents (flights, hotels, attractions, weather) coordinate through a central root agent to plan trips intelligently.</p><p>You&#8217;ll learn how to:</p><ul><li><p>Use Google&#8217;s Agent Development Kit (ADK) to create role-based agents</p></li><li><p>Register and delegate tasks through root agents</p></li><li><p>Run asynchronous, CLI-based agent systems in Python</p></li></ul><p>&#128119; <strong>Who it&#8217;s for</strong>: Developers exploring the cutting edge of multi-agent AI &#8212; and looking to apply it to real, high-value use cases.</p><p>&#128073; <a href="https://www.educative.io/projects/build-an-ai-travel-planner-with-multi-agent-a2a-protocol?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096">Build an AI Travel Planner with Multi-Agent A2A Protocol</a></p><blockquote></blockquote><h2>Build your future one project at a time</h2><p>With new models and tools emerging every week, there&#8217;s a lot of noise in the AI space right now.</p><p>But what matters most is <strong>what you can build</strong> with it.</p><p>That&#8217;s the throughline across every project I shared today: moving from knowing to doing. From &#8220;I&#8217;ve read about that&#8221; to &#8220;I built this.&#8221;</p><p>You won&#8217;t be the only one. Last year alone, developers spent over 5,000 hours building with Educative Projects &#8212; leveling up, shipping portfolio-ready work, and learning by doing.</p><p>If you&#8217;re serious about futureproofing your skills in 2026, this is the way forward. Pick a project, get your hands dirty, and let the work teach you.</p><p>We built Projects for exactly this kind of learning &#8212; and I hope one of these gives you the spark to start. You can explore our entire catalog of Projects <a href="https://www.educative.io/projects?utm_campaign=educative_weekly_q1_2026&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=ai_projects&amp;eid=5082902844932096">here</a>.</p><blockquote><p><strong>Last call</strong>: Access any of these Projects with 50% off an Educative subscription during our Resolutions Sale. Offer ends Thursday.</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;Get 50% off (or more)&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q1_2026_holiday_campaign&amp;eid=5082902844932096"><span>Get 50% off (or more)</span></a></p><p><strong>What&#8217;s your resolution this year </strong>&#8212; and how can I help you get there? Hit reply and let me know.</p><p>Until then, happy learning!</p><p>&#8212; Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[5 hiring shifts I’m expecting in 2026]]></title><description><![CDATA[You may want to bookmark #4 &#128064;]]></description><link>https://grokkingtechcareer.substack.com/p/5-hiring-shifts-im-expecting-in-2026</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/5-hiring-shifts-im-expecting-in-2026</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Tue, 13 Jan 2026 18:01:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6119fe3d-aacf-497d-8a53-62c28e4909da_1138x522.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If AI can generate a working solution in minutes, what exactly should an interview measure to decide whether you&#8217;re <em>the strongest</em> candidate?</p><p>That question is forcing a reset across the industry. AI allows us to produce functional code in a matter of seconds, making it easier than ever to &#8220;look good&#8221; on traditional interview formats. At the same time, companies still need engineers who can ship reliable systems, work well with others, and make good decisions under uncertainty.</p><p>This week, we&#8217;re predicting how developer hiring will continue to shift in 2026 and what that signals about hiring in the AI era.</p><blockquote><p>Before we dive in: our <strong>New Year&#8217;s Resolution Sale</strong> is live for just a few more days. You can lock in at least <strong><a href="https://www.educative.io/unlimited?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday_campaign&amp;eid=5082902844932096">50% off an Educative Unlimited subscription</a></strong>, which includes everything from System Design to Generative AI, plus hands-on practice tools like Cloud Labs and Projects.</p><p>&#128073; Don&#8217;t be late to the party &#8212; use this <strong><a href="https://www.educative.io/unlimited?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday_campaign&amp;eid=5082902844932096">discount</a></strong> while you still can.</p></blockquote><p>Now, let&#8217;s get into those predictions.</p><h2><strong>1) Interview formats will adapt for AI</strong></h2><p>Traditional coding interviews weren&#8217;t built for a world where ChatGPT can ace the test.</p><p>LeetCode-style questions reward pattern matching, which AI is particularly good at. This forces companies to change what they measure &#8212; or accept that the interview is now mostly testing who knows how to use a tool.</p><p>So interview formats will shift to test engineers for strong reasoning, so they can use AI responsibly:</p><ul><li><p>Reviewing and debugging AI code</p></li><li><p>Designing around AI&#8217;s unpredictability in System Design</p></li><li><p>Knowing when to use AI (and when not to)<br></p></li></ul><p>A lot of interviews will also start <strong>allowing AI tools</strong> explicitly. Some teams will even expect it. While anti-AI proctoring will continue to show up, it tends to backfire. Lockdowns and surveillance erode trust, and they select for candidates willing to tolerate an adversarial process. The better approach is open-book: allow tools, then test judgment.</p><p><strong>What this means:</strong> interview success shifts from &#8220;fastest solution&#8221; to &#8220;best reasoning.&#8221; Strong candidates will stand out by how well they review AI output, spot mistakes, and explain what they&#8217;d ship and why.</p><blockquote><p>&#128073; If your interviews start looking like debugging, review, and System Design, your prep should match that. Educative&#8217;s <strong><a href="https://www.educative.io/mock-interview?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday_campaign&amp;eid=5082902844932096">AI Mock Interviews</a></strong> and interactive lessons help you practice talking through decisions, not just writing code under pressure. That&#8217;s closer to the direction interviews are headed.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nj0G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nj0G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png 424w, https://substackcdn.com/image/fetch/$s_!nj0G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png 848w, https://substackcdn.com/image/fetch/$s_!nj0G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png 1272w, https://substackcdn.com/image/fetch/$s_!nj0G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nj0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png" width="1032" height="485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:485,&quot;width&quot;:1032,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!nj0G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png 424w, https://substackcdn.com/image/fetch/$s_!nj0G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png 848w, https://substackcdn.com/image/fetch/$s_!nj0G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.png 1272w, https://substackcdn.com/image/fetch/$s_!nj0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcf5e0ed-e316-4933-8597-dc5d2751185f_1032x485.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 role="img" 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><title></title><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><blockquote></blockquote><h2><strong>2) AI fluency is the new baseline</strong></h2><p>This year, AI skills will spread through job descriptions the way &#8220;Git&#8221; and &#8220;cloud&#8221; did a decade ago &#8212; because it&#8217;s no longer a specialty.</p><p>But AI fluency doesn&#8217;t mean you need to learn niche skills like fine-tuning or model training. More often, we&#8217;ll see companies looking for engineers who can:</p><ul><li><p>Build with AI tools responsibly</p></li><li><p>Understand model failure modes</p></li><li><p>And integrate AI into workflows with guardrails<br></p></li></ul><p>Expect more &#8220;AI-first&#8221; job descriptions, especially from companies building internal copilots, agent workflows, and AI features into mature products.</p><blockquote></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>3) &#8220;Harder languages&#8221; will grow in demand</strong></h2><p>When AI increases code surface area, companies care more about correctness, safety, and performance. Rust, Go, Kotlin, Zig &#8212; these become signals of discipline and reliability.</p><p>So we saw languages that prioritized safety and clarity surge:</p><ul><li><p><strong>Rust</strong> became a default for performance-critical tooling.</p></li><li><p><strong>Kotlin</strong> overtook Java in enterprise backends.</p></li><li><p><strong>Python</strong>, once written off as glue code, earned more respect &#8212; not for scale, but for speed, readability, and LLM prototyping.</p></li><li><p><strong>Zig</strong> gained traction among devs tired of &#8220;magic.&#8221;</p></li></ul><p>These languages are signals of discipline and reliability, not just taste.</p><blockquote></blockquote><h2><strong>4) Communication becomes a much bigger part of the hiring signal</strong></h2><p>In a saturated market where candidates share tech skills, communication sets you apart. Besides, AI can already handle syntax. What makes you a unique contributor is how you think and how you explain.</p><p>This means hiring teams will place greater weight on:</p><ul><li><p>How you collaborate,</p></li><li><p>How you justify tradeoffs,</p></li><li><p>How you talk through uncertainty,</p></li><li><p>How clearly you can explain a design decision.<br></p></li></ul><p>Everyone knows that behavioral interviews assess these.</p><p>But where most people underestimate communication is where it matters most: System Design interviews. This interview doesn&#8217;t have a single right answer, but how you <em>get there</em> &#8212; and communicate along the way &#8212; is paramount to success.</p><p>&#128073; <strong>What this means: </strong>Mastering System Design is one of the best investments you can make right now. Courses like <strong><a href="https://www.educative.io/courses/grokking-the-system-design-interview?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday_campaign&amp;eid=5082902844932096">Grokking the Modern System Design Interview</a></strong> help you build a repeatable way to reason about systems, tradeoffs, and failures &#8212; skills that show up in interviews and in real work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rx-R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rx-R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png 424w, https://substackcdn.com/image/fetch/$s_!rx-R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png 848w, https://substackcdn.com/image/fetch/$s_!rx-R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png 1272w, https://substackcdn.com/image/fetch/$s_!rx-R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rx-R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png" width="574" height="386" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:386,&quot;width&quot;:574,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!rx-R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png 424w, https://substackcdn.com/image/fetch/$s_!rx-R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png 848w, https://substackcdn.com/image/fetch/$s_!rx-R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.png 1272w, https://substackcdn.com/image/fetch/$s_!rx-R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c7bb33-ba9b-482f-ac87-3a652fab872c_574x386.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 role="img" 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><title></title><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><blockquote></blockquote><h2><strong>5) Hiring competition extends beyond borders</strong></h2><p>AI accelerates work, but it also broadens the talent pool. Remote teams keep expanding, and companies are sourcing more globally.</p><p>This increases competition, which means you need to think more critically about your &#8220;leverage.&#8221; Companies will favor candidates who can demonstrate scarce skills, so your best bet is to highlight <strong>AI, System Design, and production readiness</strong>.</p><p>Visa dynamics also matter. H-1B and other talent flows make AI fluency a serious edge for candidates who want stability in uncertain (and uber competitive) hiring environments.</p><blockquote></blockquote><h2><strong>One last note: The &#8220;bubble vs. boom&#8221; debate misses the point</strong></h2><p>People love arguing whether AI is a bubble. But that debate doesn&#8217;t help you prepare.</p><p>Even if parts of the market cool, AI investment still drives hiring. Even if some products collapse, the infrastructure, tooling, and workflows keep moving forward. A &#8220;good bubble&#8221; can still reshape how engineering work is done for years.</p><p>So here&#8217;s the pragmatic view: AI hype creates opportunities, and stability comes from fundamentals.</p><p>The engineers who win in 2026 won&#8217;t be the ones chasing every tool. They&#8217;ll be the ones building durable skills: System Design thinking, debugging instincts, communication and collaboration, and AI fluency that translates into shipping.<br></p><p>So if you want to stay competitive in 2026, do this:</p><ol><li><p>Practice interviews that look like real work (debugging, review, reasoning).</p></li><li><p>Get fluent with AI tools without outsourcing your judgment.</p></li><li><p>Build System Design instincts so tradeoffs feel natural.</p></li><li><p>Strengthen communication &#8212; it&#8217;s increasingly part of the signal.<br></p></li></ol><p>And if you want a clean way to start the year: our <strong>New Year&#8217;s Resolution Sale</strong> is live for just a few more days. You can lock in <strong><a href="https://www.educative.io/unlimited?utm_campaign=educative_weekly_q1_2026&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=hiring_predictions&amp;eid=5082902844932096">50% off Educative Unlimited</a></strong> and get access to our full catalog plus hands-on practice tools that match what hiring is evolving toward.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/unlimited?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday_campaign&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;Get 50% Off (Or More)&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/unlimited?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday_campaign&amp;eid=5082902844932096"><span>Get 50% Off (Or More)</span></a></p><p><strong>Disagree with any of these shifts?</strong> Hit reply and tell me why.</p><p>Until then, happy learning!</p><p>&#8212; Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[2025 In Review: 7 tech industry takeaways for devs]]></title><description><![CDATA[Let's separate the hype from the reality.]]></description><link>https://grokkingtechcareer.substack.com/p/2025-in-review-7-tech-industry-takeaways</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/2025-in-review-7-tech-industry-takeaways</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 31 Dec 2025 03:42:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OjJk!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba5a5ea-c5d1-4d3c-8f38-d184957668ab_256x256.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If 2024 was the year of AI integration, then 2025 was the year developers had to actually make it work at scale.</p><p>It was an eventful and turbulent year: open-source went rogue, IDEs got eaten, the JS ecosystem hit a wall, and infra cracked under the weight of real-time inference.</p><p>But through it all, developers kept building.</p><p>This is the year in review: <strong>7 takeaways that defined 2025</strong> (and what they say about the year ahead).</p><div><hr></div><h2>1. Open Source Went Rogue</h2><p><strong>&#128073; TL;DR</strong>: <em>Open-source AI stopped asking for permission. It reverse-engineered, optimized, and out-shipped the incumbents.</em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!df3B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!df3B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png 424w, https://substackcdn.com/image/fetch/$s_!df3B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png 848w, https://substackcdn.com/image/fetch/$s_!df3B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png 1272w, https://substackcdn.com/image/fetch/$s_!df3B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!df3B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png" width="1120" height="242" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:242,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-12-23 at 4.06.32 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-12-23 at 4.06.32 PM" title="Screenshot 2025-12-23 at 4.06.32 PM" srcset="https://substackcdn.com/image/fetch/$s_!df3B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png 424w, https://substackcdn.com/image/fetch/$s_!df3B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png 848w, https://substackcdn.com/image/fetch/$s_!df3B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png 1272w, https://substackcdn.com/image/fetch/$s_!df3B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca045a3b-14fc-4922-8f19-14ba244fbbc1_1120x242.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>In January 2025, DeepSeek stole the show as the Chinese startup dropped R1 &#8212; an open-source reasoning model that rivaled GPT-4&#8230; without access to NVIDIA&#8217;s top chips, and allegedly, without OpenAI&#8217;s permission either.</p><p>Built in weeks, trained under U.S. chip sanctions, and shipped to millions overnight, R1 shattered assumptions:</p><ul><li><p>You don&#8217;t need access to frontier hardware</p></li><li><p>You don&#8217;t need a billion-dollar budget</p></li><li><p>You might not even need your own weights</p></li></ul><p>Speculation swirled about whether DeepSeek leaked, laundered, or reverse engineered its way to the top&#8230; But it didn&#8217;t matter. Within days of its launch, DeepSeek became the <strong>#1 downloaded app in the US</strong>.</p><p>And the rest of the open-source AI community made major moves in 2025:</p><ul><li><p><strong>Mistral&#8217;s 7B model </strong>went toe-to-toe with GPT-3.5 &#8212; and became the go-to small model stack.</p></li><li><p>WHAMM let devs run GPT-4-class models in a browser tab (until it melted GPUs).</p></li><li><p><strong>&#8203;&#8203;Cloud GPU access got more democratized</strong> &#8212; with services like Modal, Replicate, and Brev.dev removing the &#8220;Azure&#8221; tax from building with AI.</p></li><li><p>Self-hosting, quantization, and flash-distillation became default workflows.</p></li><li><p><strong>OpenDevin, CrewAI, AutoGen, and LangGraph</strong> showed up with open-source agent frameworks.</p></li></ul><p>The mood shifted. Open source wasn&#8217;t imitating anymore. It was infiltrating (and sometimes, outpacing).</p><div><hr></div><blockquote></blockquote><h2>2. Tools Either Grew Up or Got Rewritten</h2><p><strong>&#128073; TL;DR</strong>: <em>JavaScript tools hit their ceiling. Rust and Go became the new baseline for anything that needed to move and scale fast.</em></p><p>In 2025, Microsoft announced it was rewriting the TypeScript compiler in Go because the old version, built in TS and running on Node.js, couldn&#8217;t keep up with modern codebases. The limitations were obvious: single-threaded execution, memory bloat, and sluggish performance in monorepos and CI pipelines.</p><p>But this was about more than just TypeScript.</p><p>JavaScript tooling &#8212; once good enough by default &#8212; had finally hit its ceiling.</p><p>Developers now expected sub-second feedback from AI copilots, blazing-fast local builds, and toolchains that could scale with them &#8212; not slow them down.</p><p>So 2025 became a <strong>purge of the old stack:</strong></p><ul><li><p>Create React App was officially deprecated.</p></li><li><p>Turbopack (Rust) replaced Webpack in production-grade Next.js apps.</p></li><li><p>RomeJS shut down after missing performance targets.</p></li><li><p>AI-native tools like Cursor demanded native-speed response times (not interpreted bottlenecks).</p></li></ul><p>Meanwhile, <strong><a href="https://www.educative.io/courses/the-way-to-go?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">Go</a> and <a href="https://www.educative.io/courses/rust-programming-language?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">Rust</a> became the new foundations</strong> for dev tooling at scale.</p><p>Whether it was compilers, bundlers, or AI-augmented editors, speed mattered &#8212; and interpreted runtimes couldn&#8217;t deliver.</p><div><hr></div><blockquote></blockquote><h2>3. AI Fluency &gt; Seniority</h2><p><strong>&#128073; TL;DR</strong>: <em>AI-native engineers led hiring trends &#8212; even as layoffs continued.</em></p><p>2025 was the year AI became your co-worker. And if you couldn&#8217;t work with it, you were first on the layoff spreadsheet.</p><p><strong>Big Tech slashed roles </strong>aggressively: Meta cut mid-level engineers, Amazon axed frontend teams, and Google eliminated platform teams while scaling its internal LLM infra.</p><p>But hiring didn&#8217;t stop. <strong>Jobs opened up </strong>for those with AI skills. Companies wanted engineers who could:</p><ul><li><p>Fine-tune open models</p></li><li><p>Deploy LLMs in real products</p></li><li><p>Build internal tools where AI wasn&#8217;t an add-on &#8212; it was the foundation</p></li></ul><p>While talent left big tech, other industries &#8212;  from healthcare to logistics &#8212; got to hire great engineers to implement AI features from scratch. Meanwhile, legacy apps had to be rebuilt for the AI era in <strong>The Great Rewrite</strong>: a multi-year wave of architectural change that will be underway for years to come. </p><p>Engineering leaders already deemed AI skills a necessity back in 2024, when <strong>71% of leaders </strong>reporting they&#8217;d rather hire a candidate with AI fluency than seniority.<a href="https://news.microsoft.com/source/2024/05/08/microsoft-and-linkedin-release-the-2024-work-trend-index-on-the-state-of-ai-at-work/"><sup>1</sup></a></p><p>And by mid-2025, <strong>36% of tech job postings</strong> required AI skills &#8212; mostly weighing on engineering roles.<a href="https://www.dice.com/recruiting/ebooks/ai-jobs-hiring-guide/#executive-summary"><sup>2</sup></a></p><blockquote><p><strong>&#10067; </strong><em><strong>What&#8217;s your AI upskilling plan?</strong> Whether it&#8217;s LangChain or CrewAI, explore our catalog at <a href="https://www.educative.io/generative-ai?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">Generative AI hub</a>.</em></p></blockquote><div><hr></div><h2>4. Developers Demand AI That Knows Their Codebase</h2><p><strong>&#128073; TL;DR</strong>: <em>Context &gt; horsepower. Devs don&#8217;t just want the smartest model in the room anymore. They want the one that remembers where db.ts lives.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hm0X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hm0X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png 424w, https://substackcdn.com/image/fetch/$s_!Hm0X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png 848w, https://substackcdn.com/image/fetch/$s_!Hm0X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png 1272w, https://substackcdn.com/image/fetch/$s_!Hm0X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hm0X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png" width="328" height="262" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:262,&quot;width&quot;:328,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;mcp&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="mcp" title="mcp" srcset="https://substackcdn.com/image/fetch/$s_!Hm0X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png 424w, https://substackcdn.com/image/fetch/$s_!Hm0X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png 848w, https://substackcdn.com/image/fetch/$s_!Hm0X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.png 1272w, https://substackcdn.com/image/fetch/$s_!Hm0X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e71281-6cae-4b8c-8b39-4a5c67cf259b_328x262.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 role="img" 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><title></title><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>Anthropic&#8217;s MCP turned heads by delivering project-aware completions and code navigation that felt like it actually read your repo. It was <strong>like autocomplete&#8230; with context</strong>.</p><p>Meanwhile, Claude Opus 4.5 &#8220;compaction&#8221; feature self-summarizes previous interactions to maintain useful long-term memory.</p><p>That same mindset showed up across the board:</p><ul><li><p>Cody (Sourcegraph) <strong>indexed entire codebases </strong>and brought Git-level awareness to AI answers.</p></li><li><p><a href="https://www.educative.io/courses/advanced-cursor-ai?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">Cursor</a> <strong>let devs chat with their own code </strong>and watch the model edit real files in-place.</p></li><li><p><strong>Agent frameworks</strong> like <a href="https://www.educative.io/courses/build-ai-agents-and-multi-agent-systems-with-crewai?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">CrewAI</a> and OpenDevin started building smarter memory and context pipelines by default.</p></li></ul><p>By the end of 2025, devs realized it&#8217;s not just about how smart a model is &#8212; it&#8217;s how well it understands your code too.</p><div><hr></div><blockquote></blockquote><h2>5. Invisible Infra Failed (and AI Exposed Its Limits)</h2><p><strong>&#128073; TL;DR</strong>: <em>2025 proved that traditional infra patterns can&#8217;t handle AI at scale. AI-native System Design went from niche skill to necessity.</em></p><p>This year saw some major outages:</p><ul><li><p>A <strong>tiny DNS bug at AWS</strong> triggered a cascading outage that brought down massive swaths of the internet.</p></li><li><p>A misconfigured Cloudflare update <strong>nearly derailed Black Friday traffic</strong> across the globe.</p></li></ul><p>These failures were largely linked to old automation problems hitting hyperscale.</p><p>But the <strong>most important infra lesson of 2025 </strong>came from AI-related failures.</p><p>In June, ChatGPT and Sora suffered the <strong>longest outage in company history </strong>(one of four major failures this year). OpenAI was scaling GPU-bound, stateful, real-time inference for millions &#8212; and most cloud infrastructure wasn&#8217;t built for that. The system simply <strong>hit its architectural limits</strong>.</p><p>Designing for Generative AI is a unique territory &#8212; and we&#8217;re <strong>charting it as we go</strong>. </p><p>GenAI workloads are:</p><ul><li><p>Expensive (GPU-hungry and time-sensitive)</p></li><li><p>Stateful (every session matters)</p></li><li><p>Uncacheable (every response is unique)</p></li><li><p>Fragile under traffic (load-balancing becomes a chokepoint)</p></li></ul><p>As GenAI swept throughout tech, we needed new skills and practices that actually worked for Gen AI workloads. </p><p>So <strong>AI System Design</strong> became a real discipline:</p><ul><li><p>Devs had to learn how to design for latency-aware routing, session migration, token-aware caching, and inference pipelines</p></li><li><p>Infra teams started asking: &#8220;Can our system scale for GenAI &#8212; not just for users?&#8221;</p></li><li><p>AI systems required new design patterns, not just bigger clusters</p></li></ul><blockquote><p>&#128064; <em>By no coincidence, one of our most popular new courses this year was <strong><a href="https://www.educative.io/courses/generative-ai-system-design?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">Grokking the Generative AI System Design</a></strong>. </em></p></blockquote><div><hr></div><h2>6. The IDE got eaten by agents</h2><p><strong>&#128073; TL;DR</strong>: <em>The IDE got absorbed into something faster, smarter, and a little bit feral.</em></p><p>Traditional IDEs couldn&#8217;t keep up with agentic workflows.</p><p>Developers migrated en masse to:</p><ul><li><p>Cursor</p></li><li><p>Copilot Workspace</p></li><li><p>Gemini CLI</p></li><li><p>AI-native REPLs and shells</p></li></ul><p>These tools went way beyond autocomplete. They debugged, explained, and occasionally rewrote your whole function without asking.</p><p>The file stopped being the center of gravity, and the <strong>agent became the dev environment</strong>.</p><p>Across the board, AI started making tiny steps toward getting baked into our interfaces:</p><ul><li><p><strong>WHAMM</strong> let devs run every major model in a single browser tab.  </p></li><li><p>Google&#8217;s <strong>Generative UI </strong>hinted at a world where apps scaffold themselves in real time, adapting layouts, flows, and content dynamically based on user goals.</p></li><li><p>GTA 6 previewed <strong>NPCs powered by LLMs</strong>, with emergent behaviors, memory, and interaction that felt alive.</p></li></ul><p>Soon, AI will be the interface &#8212; fluid, dynamic, and co-designed in real time.</p><div><hr></div><blockquote></blockquote><h2>7. Rise of AI-Native Learning</h2><p><strong>&#128073; TL;DR</strong>: <em>The best learning isn&#8217;t from tutorials, but real-time explainers, AI reviewers, and embedded walkthroughs.</em></p><p>AI collapsed the distance between idea and code, but it also widened the gap between code and comprehension. Devs can essentially generate code faster than they can understand it. That&#8217;s a problem.</p><p>That&#8217;s why we&#8217;re seeing a shift toward <strong>AI-native learning</strong> &#8212; not just content about AI, but content powered by it. Learning tools are being rearchitected around AI with real-time code reviewers, adaptive walkthroughs, and in-situ coaching that responds to each learner&#8217;s level.</p><p>Here&#8217;s how that&#8217;s playing out:</p><ul><li><p><strong>Long-form video courses are fading.</strong> Interactive, contextual sandboxes are rising.</p></li><li><p><strong>Static docs are being replaced</strong> by smart explainers, walkthroughs, and in-situ AI coaching.</p></li><li><p><strong>AI-powered mock interviews </strong>are making interview prep more accessible than ever. </p></li></ul><p><strong>&#9200; These trends were reflected in our learning community</strong> at Educative, where developers spent:  </p><ul><li><p>403,521 hours learning with <strong>alternative explanations and coaching</strong> in <strong>AI-powered courses</strong></p></li><li><p>79,465 hours getting <strong>adaptive curriculum for interview prep</strong> via our <a href="https://www.educative.io/interview?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">Personalized Interview Prep</a> tool</p></li><li><p>5,260 hours building <strong>portfolio-worthy projects</strong> with new tools in guided <a href="https://www.educative.io/projects?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">Projects</a>  </p></li><li><p>1,979 hours getting <strong>real-time feedback and interview practice</strong> in AI-powered <a href="https://www.educative.io/mock-interview?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">Mock Interviews</a>   </p></li></ul><p>AI-native learning is a <strong>new contract</strong> between developers and their tools: Learn faster with context, and get feedback immediately. That&#8217;s what we&#8217;re committed to delivering at Educative.</p><div><hr></div><blockquote></blockquote><h2>So What&#8217;s Next?</h2><p>In 2026, we&#8217;ll be asking the harder questions about AI &#8212; whether the right models are chosen, the architecture actually supports them, or the systems we&#8217;re building can hold up under real-world pressure. </p><p>We&#8217;ll see:</p><ul><li><p><strong>AI fluency as a baseline job requirement</strong>:  Job postings will demand prompt engineering, fine-tuning, and agent workflows.</p></li><li><p><strong>Context-aware dev tools become standard</strong>: IDEs and agents that deeply understand your codebase, memory, and file structure.</p></li><li><p><strong>AI-native infrastructure will be mandatory</strong>: More teams will shift toward infra that&#8217;s optimized for GenAI,  with a growing focus on latency, state, and fault-tolerant inference pipelines.</p></li><li><p><strong>Agents will creep into interfaces</strong>: Expect more tools, UIs, and even games to shift from static flows to dynamic, LLM-powered agents.</p></li></ul><p>We look forward to keep learning and evolving with you in the year ahead.</p><p>With all the volatility that rocked 2025, I wanted to say thank you for reading, building, and learning with us. It&#8217;s an honor to be a part of your growth as the industry keeps changing beneath our feet, and we don&#8217;t take that lightly.</p><p>&#128073; <em>For just a couple more days, you can<strong> <a href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=2025_Q4_holiday&amp;eid=5082902844932096">lock in 50% off (or more)</a> any Educative subscription</strong> to get AI-native learning for your New Year&#8217;s Resolutions.</em></p><p>Happy learning, and Happy New Year!</p><p>- Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[10 tools every developer needs in 2026]]></title><description><![CDATA[The best way to level up is with these AI technologies..]]></description><link>https://grokkingtechcareer.substack.com/p/10-tools-every-developer-needs-in</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/10-tools-every-developer-needs-in</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Tue, 23 Dec 2025 18:01:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!G4G5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="callout-block" data-callout="true"><p>As we wrap up the year, I&#8217;m looking ahead to <strong>AI tools you can&#8217;t afford to skip in 2026</strong>. AI is moving at lightning speed &#8212; and I urge you to make AI skills a priority if you haven&#8217;t yet.</p></div><p>Microsoft and LinkedIn&#8217;s 2024 Work Trend Report found that <strong>77% of leaders would rather hire a less experienced candidate with AI skills than a seasoned one without</strong>.</p><p>That was in 2024. Judging from my conversations with other leaders in the software industry, I can say for certain that in 2026, this number will go up dramatically.</p><p>So as we head into the new year, I&#8217;ve pulled together a forward-looking stack &#8212; the non-negotiable skills I think should be at the top of your wishlist if you want your systems (and your career) to age gracefully.</p><p>For each tool, I&#8217;ll cover:</p><ul><li><p>Use cases</p></li><li><p>Why it matters</p></li><li><p>My take from a hiring and leadership lens</p></li></ul><p>I&#8217;ll also share my favorite <strong>courses and projects</strong> for each tool, so you can start building with the tools that will define the future.</p><p>Let&#8217;s dive in.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. OpenAI Agent Stack</h2><p><strong>&#129504; Use cases</strong>: Personalized AI copilots, automated workflows, support bots, and prototyping full-stack assistants&#8212;without rebuilding orchestration from scratch.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong></p><p>With persistent threads, tool use, memory, and system-wide orchestration, OpenAI has quietly shipped the blueprint for next-gen agents.</p><p>If you&#8217;re looking to build agents that plan, adapt, and execute, this stack gives you a serious head start, without requiring a custom orchestration layer.</p><p><strong>&#128188; Hiring manager&#8217;s perspective:</strong><br>When someone talks fluently about Assistants, memory, or tool calling, I know they&#8217;ve gone beyond playing with ChatGPT. They&#8217;ve touched real architecture. That&#8217;s the difference between AI hobbyists and engineers I&#8217;d trust to ship a production-ready assistant.</p><p><strong>&#128218; Get hands-on with OpenAI:</strong></p><ul><li><p>Course: <a href="https://www.educative.io/courses/building-with-openai?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Building with OpenAI: From APIs to Agents</a></p></li><li><p>Project: <a href="https://www.educative.io/projects/deep-research-through-an-ai-agent-using-openai?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Deep Research Through an AI Agent Using OpenAI</a></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_!G4G5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G4G5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png 424w, https://substackcdn.com/image/fetch/$s_!G4G5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png 848w, https://substackcdn.com/image/fetch/$s_!G4G5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png 1272w, https://substackcdn.com/image/fetch/$s_!G4G5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G4G5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png" width="416" height="354" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:354,&quot;width&quot;:416,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;claude&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="claude" title="claude" srcset="https://substackcdn.com/image/fetch/$s_!G4G5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png 424w, https://substackcdn.com/image/fetch/$s_!G4G5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png 848w, https://substackcdn.com/image/fetch/$s_!G4G5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.png 1272w, https://substackcdn.com/image/fetch/$s_!G4G5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea62ea2-077d-4a38-838d-595c9d801b22_416x354.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 role="img" 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><title></title><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><h2>2. Claude Code</h2><p><strong>&#129504; Use cases</strong>: Code review, bug explanation, writing tests, refactoring modules, generating docs from code, and multi-file planning.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong><br>Claude 3.5 and Opus 4.5 have become standout tools for developers who want more than just code completion. Claude&#8217;s ability to process large codebases, reason structurally, and explain tradeoffs makes it incredibly effective as a debugging partner and design reviewer.</p><p>It&#8217;s the rare model that feels like a thoughtful colleague &#8212; and when paired with an IDE like Cursor, it becomes a serious engineering multiplier.</p><p>&#128188;<strong> Hiring manager&#8217;s perspective</strong>:<br>Developers who&#8217;ve used Claude for real work often approach problems more clearly &#8212; not just generating code, but articulating systems. That clarity is gold in interviews, architecture reviews, and team communication.</p><p><strong>&#128218; Get hands-on with Claude Code:</strong></p><ul><li><p><a href="https://www.educative.io/courses/claude-code?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Claude Code: Workflows and Tools</a></p></li></ul><h2>3. Google Agent2Agent (A2A) Protocol</h2><p>&#129504;<strong> Use it for</strong>: Scalable multi-agent workflows, agent coordination, collaborative AI tasks.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong><br>A2A is Google&#8217;s protocol for agent collaboration (think of it as gRPC for intelligent systems). It lets agents delegate tasks, share memory, and interact across environments with persistent context and roles. As agent-based systems become more modular and distributed, A2A is laying the foundation for large-scale coordination.</p><p>It&#8217;s not flashy, but it&#8217;s the infrastructure that will power complex agent ecosystems.</p><p><strong>&#128188; Hiring manager&#8217;s perspective:</strong></p><p>If someone brings up A2A, I know they&#8217;ve tried to scale agents beyond the toy level. That tells me they&#8217;ve thought about orchestration, not just outputs&#8230; and that&#8217;s the kind of thinking we need more of on real-world AI teams.</p><p><strong>&#128218; Get hands-on with A2A:</strong></p><ul><li><p>Course: <a href="https://www.educative.io/courses/agent2agent-protocol?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Introduction to Google&#8217;s Agent2Agent (A2A) Protocol</a></p></li><li><p>Project: <a href="https://www.educative.io/projects/build-an-ai-travel-planner-with-multi-agent-a2a-protocol?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Build an AI Travel Planner with Multi-Agent A2A Protocol</a></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_!-frU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-frU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-frU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-frU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-frU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-frU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg" width="600" height="248" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:248,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;crewai&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="crewai" title="crewai" srcset="https://substackcdn.com/image/fetch/$s_!-frU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-frU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-frU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-frU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e4c0b7-8188-41b6-82bd-a323c9e40176_600x248.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 role="img" 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><title></title><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><h2>4. CrewAI</h2><p>&#129504;<strong> Use it for:</strong> Multi-agent swarms, task orchestration, intelligent pipelines.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong><br>Most multi-agent frameworks look great in demos but collapse under real complexity. CrewAI is built differently: it&#8217;s composable, Python-native, async-ready, and surprisingly stable at scale. It gives you a structured way to build agents that work together like a team: planning, delegating, and executing workflows without stepping on each other.</p><p><strong>&#128188; Hiring manager&#8217;s perspective:</strong><br>When I see someone bring up CrewAI in a conversation or interview, it tells me they&#8217;ve graduated from prompt experiments to systems thinking. They&#8217;ve taken the initiative to make agents work together, and that experience shows up quickly in how they talk about coordination and failure modes.</p><p><strong>&#128218; Get building with CrewAI Projects:</strong></p><ul><li><p><a href="https://www.educative.io/projects/build-a-crewai-agentic-workflow-using-github-mcp-server-tools?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Build an Agentic Workflow with CrewAI and GitHub MCP Server Tools</a></p></li><li><p><a href="https://www.educative.io/projects/build-a-job-hunt-agent-workflow-with-crewai-and-python?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Build a Multi-Agent Job Search System with CrewAI and Python</a></p></li></ul><h2>5. MCP (Model Context Protocol)</h2><p><strong>&#129504; Use it for</strong>: Shared memory, persistent state, multi-agent context-passing.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong></p><p>MCP solves one of the hardest problems in AI workflows: how do you make context portable?</p><p>With MCP, agents can persist memory, share state, and stay goal-aligned across tools and time. It enables everything from long-running assistants to multi-agent collaboration to stateful RAG systems.</p><p>If you&#8217;re stitching together multiple AI components, MCP is the memory bus that holds it all together.</p><p><strong>&#128188; Hiring manager&#8217;s perspective:</strong><br>Early adopters of MCP are shipping more stable agent pipelines, with better fallback, smarter retries, and more autonomy.</p><p>When someone understands MCP, they&#8217;ve likely wrestled with persistence, state leakage, and agent handoffs. That tells me they&#8217;ve worked on problems most devs haven&#8217;t touched yet.</p><p><strong>&#128218; Get hands-on with MCP:</strong></p><ul><li><p><a href="https://www.educative.io/courses/advanced-model-context-protocol?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Mastering MCP: Building Advanced Agentic Applications</a></p></li></ul><h2>6. LlamaIndex</h2><p>&#129504; <strong>Use it for</strong>: Data-grounded LLM apps, internal copilots, retrieval-based agents.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong><br>LlamaIndex is still the gold standard for building Retrieval-Augmented Generation (RAG) pipelines. It connects your data to any model and gives you full control over how queries, documents, and embeddings are managed. As hallucination risk becomes a real blocker for production AI, LlamaIndex is the fastest way to ground your models in reality.</p><p>It&#8217;s also one of the most actively evolving tools in the RAG ecosystem, and it plays nicely with tools like DeepSeek, Claude, and OpenAI.</p><p><strong>&#128188; Hiring manager&#8217;s perspective:</strong></p><p>If you walk into a System Design Interview and explain how you&#8217;d use LlamaIndex + RAG + memory layers, you instantly stand out from the crowd still writing vanilla prompts.</p><p><strong>&#128218; Get hands-on with LlamaIndex:</strong></p><ul><li><p>Course: <a href="https://www.educative.io/courses/llamaindex?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Mastering LlamaIndex: From Fundamentals to Building AI Apps</a></p></li><li><p>Project: <a href="https://www.educative.io/projects/build-a-rag-chatbot-using-deepseek-and-llamaindex?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Build a RAG Chatbot Using DeepSeek and LlamaIndex</a></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_!g-BW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g-BW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g-BW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g-BW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g-BW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g-BW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;cursor&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="cursor" title="cursor" srcset="https://substackcdn.com/image/fetch/$s_!g-BW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g-BW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g-BW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g-BW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cb285b-63c9-4bbe-916a-4b6547e79607_400x400.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 role="img" 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><title></title><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><h2>7. Cursor AI</h2><p><strong>&#129504; Use cases</strong>: Onboarding, code navigation, refactoring, debugging across large repos.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong><br>Cursor is an IDE with real intelligence. Unlike Copilot, it understands your repo. It tracks context across files, supports large-scale refactors, and makes onboarding to unfamiliar codebases radically faster.</p><p>For devs working in big, messy systems (and let&#8217;s be honest, that&#8217;s most of us), it&#8217;s become an essential second brain.</p><p><strong>&#128188; Hiring manager&#8217;s perspective:</strong><br>Engineers who use tools like Cursor tend to ramp faster, refactor smarter, and debug with more context. I&#8217;ve seen that translate directly into performance &#8212; especially on teams managing large legacy systems or complex modular stacks.</p><p><strong>&#128218; Get hands-on with Cursor AI:</strong></p><ul><li><p><a href="https://www.educative.io/courses/advanced-cursor-ai?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Cursor AI for Enterprise: Modernizing Professional Development</a></p></li></ul><h2>8. DSPy</h2><p><strong>&#129504; Use cases:</strong> Prompt pipelines, multi-step reasoning, experiment-driven AI systems.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong><br>DSPy marks the shift from handcrafted prompts to engineered AI behavior. Built by Stanford, it lets you define reasoning chains declaratively, run experiments, and optimize prompts the same way we optimize compiler output.</p><p>If you&#8217;re tired of brittle prompt chains and guesswork, DSPy brings structure, clarity, and testability to your LLM workflows.</p><p><strong>&#128188; Hiring manager&#8217;s perspective:</strong><br>When I talk to teams building serious AI products, DSPy keeps coming up &#8212; especially among engineers who care about correctness, iteration speed, and evaluation. If you want to stand out in AI infra interviews, knowing DSPy signals that you understand systems, not just syntax.</p><p><strong>&#128218; Get started with this DSPy Project:</strong></p><ul><li><p><a href="https://www.educative.io/projects/build-an-ai-financial-analyst-assistant-using-dspy-and-flask?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Build an AI Financial Analyst Assistant with DSPy and Flask</a></p></li></ul><h2>9. n8n</h2><p>&#129504; <strong>Use cases</strong>: Internal tools, API automation, AI-powered workflows.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong><br>n8n gives you the power of low-code automation with the flexibility of pro-code extensions. It&#8217;s one of the fastest ways to build internal tools, wire up AI services, or connect APIs &#8212; and it now includes LLM-native nodes for smarter logic flows.</p><p><strong>&#128188; Hiring manager&#8217;s perspective:</strong><br>The fastest teams I see are using tools like n8n to prototype, automate, and iterate before committing to full builds. If you care about shipping speed, n8n belongs in your toolkit, and it works great for lean and cross-functional teams.</p><p><strong>&#128218; Get hands-on with n8n:</strong></p><ul><li><p><a href="https://www.educative.io/courses/n8n?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Automate Workflows with n8n</a></p></li></ul><h2>10. OpenRouter</h2><p>&#129504; Use cases: Model routing, fallback strategies, cost optimization, A/B testing.</p><p><strong>&#128104;&#8205;&#128187; Why you need it:</strong><br>OpenRouter gives you one unified API to access and switch between all major LLM providers &#8212; OpenAI, Claude, Mistral, DeepSeek, and more. It lets you optimize for latency, cost, performance, or even compliance, without rewriting your core logic.</p><p><strong>&#128188; Hiring manager&#8217;s perspective:</strong><br>If someone&#8217;s using OpenRouter, they&#8217;ve thought deeply about tradeoffs: price vs. performance, quality vs. fallback. That kind of architectural awareness is exactly what I want in someone designing AI workflows at scale.</p><p><strong>&#128218; Learn by doing with this OpenRouter Project:</strong></p><ul><li><p><a href="https://www.educative.io/projects/explore-deepseek-models-via-openrouter?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096">Explore DeepSeek Models via OpenRouter</a></p></li></ul><h2>The question isn&#8217;t if these tools matter&#8230;</h2><p>&#8230;It&#8217;s whether you&#8217;ll learn them <em>before</em> they become the new baseline.</p><p>The devs and orgs that embrace this mindset and invest in tool fluency will build faster, ship smarter, and spend less.</p><p>AI is moving fast, and the gap between playing with models and building real systems keeps widening. At Educative, we&#8217;re anticipating that gap, and building resources to help you keep up, ship faster, and stay sharp.</p><p>&#128073; Now is the perfect time to get ahead. You can<strong> get 50% off (or more) on any Educative subscription</strong> to get hands-on with the skills that matter most to you.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;Lock in Your Discount&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=top_ai_tools_holiday_campaign_Q4&amp;utm_term=&amp;eid=5082902844932096"><span>Lock in Your Discount</span></a></p><p><strong>Which tools are you using? What&#8217;s missing from this list? </strong>Hit reply and let me know.</p><p>Next week we&#8217;ll be looking back on the year with <strong>2025&#8217;s takeaways</strong> &#8212; and what they tell us about the years ahead.</p><p>Happy learning!</p><p>- Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The State of AI Coding in 2026]]></title><description><![CDATA[3 bold predictions I'd bet my NVIDIA stock on]]></description><link>https://grokkingtechcareer.substack.com/p/the-state-of-ai-coding-in-2026</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/the-state-of-ai-coding-in-2026</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 17 Dec 2025 18:01:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lTmN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>With 2025 coming to a close, it&#8217;s time for some <strong>bold bets on what comes next.</strong></p><p>This will be the first installment of a new series on predictions for 2026: and the topic is <strong>AI Coding</strong>.</p></blockquote><p>If a peer asked how AI has changed your work as an engineer, could you describe real production use cases <em>without</em> making it sound like you&#8217;re training your replacement?</p><p>That&#8217;s the tension sitting at the center of AI coding today.</p><p>AI is writing code, reviewing code, refactoring code, and stitching together workflows that used to take hours. It&#8217;s in pull requests, CI pipelines, internal tools, and even customer-facing systems. It&#8217;s no longer a novelty, but a legitimate part of the day-to-day work.</p><p>At the same time, the story around &#8220;AI replacing developers&#8221; is louder than ever.</p><p>This feels like the right moment to step back and map out where I believe the work is heading. These predictions are my attempt to put a stake in the ground, and I encourage you to check in with me a year from now and tell me how well (or poorly) these aged.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><blockquote></blockquote><h2><strong>Prediction 1: Agentic System Design becomes the primary job</strong></h2><p>AI-powered applications are moving toward workflows where an agent handles the sequence of decisions, not just the final answer. Teams are building systems that can follow a goal, call the right tools, track what has already happened, and recover when something goes off-script. The shift is subtle but significant: the model produces language, but the agent produces behavior.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lTmN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lTmN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png 424w, https://substackcdn.com/image/fetch/$s_!lTmN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png 848w, https://substackcdn.com/image/fetch/$s_!lTmN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png 1272w, https://substackcdn.com/image/fetch/$s_!lTmN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lTmN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png" width="912" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:912,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-12-12 at 1.18.22 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-12-12 at 1.18.22 PM" title="Screenshot 2025-12-12 at 1.18.22 PM" srcset="https://substackcdn.com/image/fetch/$s_!lTmN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png 424w, https://substackcdn.com/image/fetch/$s_!lTmN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png 848w, https://substackcdn.com/image/fetch/$s_!lTmN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.png 1272w, https://substackcdn.com/image/fetch/$s_!lTmN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40fe56f3-47d5-43a3-91bb-774b360a98c7_912x522.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 role="img" 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><title></title><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>Most teams reach this point the same way. A single prompt works for a prototype, but breaks as soon as the task requires multiple steps or access to real systems. So engineers begin adding structure: a simple state machine, then a bit of memory, then a tool call, then a fallback. Before long, they&#8217;re designing a workflow rather than a message.</p><p>Frameworks like <strong>LangGraph</strong> and <strong>CrewAI</strong> reflect this direction. They treat an agent as a component with inputs, outputs, boundaries, and responsibilities &#8212; a small system living inside a larger one. The reliability of the overall product ends up depending more on how the workflow is designed than on the model itself.</p><p>Several trends will push this approach forward in 2026:</p><ul><li><p>Longer context windows raise new questions about what information an agent should keep or forget. Continuous evaluation becomes part of day-to-day maintenance as teams monitor how behavior drifts over time.</p></li><li><p>Compute constraints encourage splitting large tasks into smaller, model-appropriate pieces. Multimodal input &#8212; voice, vision, and mixed formats &#8212; forces agents to make decisions instead of producing a single output.</p></li><li><p>And with MCP gaining traction, it becomes easier to plug agents into tools and internal systems in a consistent, controlled way.</p></li></ul><p>The result? Engineers will spend more time shaping how an agent thinks than crafting the perfect prompt. Planning steps, defining boundaries, choosing tools, and controlling what the agent pays attention to all become part of the normal workflow.</p><blockquote><p><strong>Note</strong>: For anyone who wants guided practice in these patterns, our <strong><a href="https://www.educative.io/courses/agentic-ai-systems?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q5_2025_AI_Predictions&amp;eid=5082902844932096">Agentic System Design</a></strong> course walks through building and debugging real multi-step agents with tools, state, and guardrails. </p></blockquote><blockquote></blockquote><h2><strong>Prediction #2: In 2026, debugging is second only to architecture</strong></h2><p>As teams rely more on AI, the path from a user request to a shipped feature runs through more layers than it used to.</p><p>There&#8217;s the model&#8217;s output. There&#8217;s the logic that decides which tools or APIs to call. And there&#8217;s the application itself, with all the state, latency, and constraints that come with real production systems. Each layer is powerful, and each layer can quietly introduce errors that don&#8217;t show up until later.</p><p>A failure today might begin as an innocent piece of retrieved context that&#8217;s slightly outdated, or a tool response the agent interpreted a bit too literally. The model might generate a refactor that passes tests, but changes the shape of an error path in a way no one expected. The application logic might still be correct, yet the agent guiding it has drifted from what the engineers assumed it would do.</p><p>When something breaks, the investigation looks different from traditional debugging.</p><ol><li><p>Engineers trace behavior across reasoning steps, tool calls, cached context, and application state.</p></li><li><p>They read the agent&#8217;s decisions as carefully as they read their own code.</p></li><li><p>The root cause often lives at the intersection of layers rather than within a single one.</p></li></ol><p>This kind of debugging becomes a standout skill. It blends System Design instincts with an understanding of how AI systems interpret the world. <strong>And the engineers who grow in this direction become the ones who keep complex systems steady.</strong></p><blockquote><p><strong>TL;DR</strong>: Never accept an AI explanation without verifying its chain of thought. Engineers who learn this early are the ones who spot failures in larger, more complex AI-driven stacks.</p></blockquote><blockquote></blockquote><h2><strong>Prediction #3: Web development will shift away from human-only interfaces toward machine legibility</strong></h2><p>More software is being consumed by AI systems before a human ever sees it. Agents summarize pages, follow user instructions, pull information from dashboards, and trigger actions inside applications. That means websites and APIs now serve two audiences: people, and the AI systems acting on their behalf.</p><p>This is a quiet shift, but a meaningful one. Interfaces built only for humans introduce ambiguity. A person can interpret unclear labels, navigate inconsistent patterns, or recover from a vague error. An AI system cannot. It needs structure, hints, and constraints. It needs a predictable shape to the information it&#8217;s allowed to use.</p><p>That&#8217;s why early experiments are appearing across the web:</p><ul><li><p>Some teams are adding <strong>llms.txt</strong> files to guide how models should interpret their content.</p></li><li><p>Others are adding AI-focused metadata to clarify what&#8217;s important on a page.</p></li><li><p>Many are exploring <strong>shadow APIs</strong> &#8212; simplified endpoints that expose information in a form retrieval systems can trust.</p></li><li><p>And conversations around <strong>AI control headers</strong> show how teams are thinking about permissions long before anything touches production.</p></li></ul><p>This isn&#8217;t about replacing UX, but adding a layer of design that makes systems safer and easier to understand when an AI is in the loop. Developers who work on customer-facing applications will spend more time making their systems readable to both humans and machines. The teams that invest here early will see fewer surprises when agents begin navigating their products at scale.</p><p>For engineers, this opens an entirely new design surface &#8212; one that rewards clean structure, clear semantics, and predictable patterns.</p><h2><strong>How to build the signals expected of senior engineers in 2026</strong></h2><p>Developers who grow in these areas stand out when hiring managers look for senior and staff-level qualities.</p><p>If you want a concrete way to lean into this shift, one option is to turn it into a focused learning sequence like this:</p><ol><li><p>Start with <strong><a href="https://www.educative.io/courses/grokking-the-system-design-interview?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q5_2025_AI_Predictions&amp;eid=5082902844932096">Grokking the Modern System Design Interview</a></strong> to solidify your mental model for the architecture underpinning scalable systems.</p></li><li><p>Progress to <strong><a href="https://www.educative.io/courses/agentic-ai-systems?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q5_2025_AI_Predictions&amp;eid=5082902844932096">Agentic System Design</a></strong> and <strong><a href="https://www.educative.io/courses/generative-ai-system-design?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q5_2025_AI_Predictions&amp;eid=5082902844932096">Grokking Generative AI System Design</a></strong> to understand how models, retrieval, and agents fit into those systems.</p></li><li><p>Layer in a Cloud Lab like <strong><a href="https://www.educative.io/cloudlabs/building-a-multi-server-mcp-using-aws-bedrock-agent?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q5_2025_AI_Predictions&amp;eid=5082902844932096">Building a Multi-Server MCP Using AWS Bedrock Agent</a></strong> so you can implement and debug these ideas in real applications.</p></li></ol><p>All of that (and more) lives inside an <strong>Educative subscription</strong> &#8212; and you won&#8217;t find a better deal than our Year End sale.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q5_2025_AI_Predictions&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;Lock In Your Discount&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=Q5_2025_AI_Predictions&amp;eid=5082902844932096"><span>Lock In Your Discount</span></a></p><p><strong>Got any questions or topics you&#8217;d like me to cover?</strong> Hit reply and let me know.</p><p>Until then, happy learning!<br>&#8212; Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[3 AI System Design skills companies need in 2026]]></title><description><![CDATA[+ a few practical tips for getting started with them.]]></description><link>https://grokkingtechcareer.substack.com/p/3-ai-system-design-skills-companies</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/3-ai-system-design-skills-companies</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 10 Dec 2025 18:02:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_g1A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>We&#8217;re back to our AI essentials series this week with a focus on one of the most in-demand skills you can have: <strong>AI System Design</strong>.</p></blockquote><p>AI systems are no longer just passively analyzing data &#8212; they&#8217;re generating content, making decisions, triggering actions, and occasionally causing messes in production.</p><p>Shipping AI isn&#8217;t like shipping traditional software. They hallucinate and go off-script. And yet companies are racing to integrate AI into products.</p><p>If a recruiter asked if you&#8217;re familiar with AI System Design, would you be ready?</p><p>AI System Design is how you turn unpredictable models into reliable products. Whether you&#8217;re building chatbots, copilots, or recommendation engines, knowing how to design for failure before it happens is what separates demos from production-ready systems.</p><p>Today, we&#8217;re demystifying AI System Design so you can start building with confidence &#8212; and stay competitive in the AI era.</p><p>You&#8217;ll learn:</p><ul><li><p>4 key differences between traditional vs. AI System Design</p></li><li><p>3 most in-demand types of AI System Design (and which ones you need)</p></li><li><p>How to get started with AI System Design today</p></li></ul><p>Let&#8217;s get into it.</p><blockquote></blockquote><h2><strong>Key differences: Traditional vs. AI System Design</strong></h2><p>AI System Design is markedly different from designing traditional distributed systems. You&#8217;re no longer optimizing for correctness&#8230; you&#8217;re optimizing for acceptable unpredictability.</p><p>Before diving into the three most in-demand types of AI System Design, let&#8217;s look at 4 key differences that apply to every flavor of AI System Design. Once you see how these AI systems break, the design patterns will make a lot more sense.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_g1A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_g1A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png 424w, https://substackcdn.com/image/fetch/$s_!_g1A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png 848w, https://substackcdn.com/image/fetch/$s_!_g1A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png 1272w, https://substackcdn.com/image/fetch/$s_!_g1A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_g1A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png" width="1120" height="1247" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1247,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;AI System Design_ How to architect for chaos (on purpose) - visual selection&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="AI System Design_ How to architect for chaos (on purpose) - visual selection" title="AI System Design_ How to architect for chaos (on purpose) - visual selection" srcset="https://substackcdn.com/image/fetch/$s_!_g1A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png 424w, https://substackcdn.com/image/fetch/$s_!_g1A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png 848w, https://substackcdn.com/image/fetch/$s_!_g1A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.png 1272w, https://substackcdn.com/image/fetch/$s_!_g1A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0c3a1c-c45c-4b5d-896f-ff2bf32ee25d_1120x1247.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 role="img" 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><title></title><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><h2><strong>1. Deterministic vs. Probabilistic Behavior</strong></h2><ul><li><p><strong>Traditional systems</strong>: Same input = same output.</p></li><li><p><strong>LLM-based systems</strong>: Same input = it depends.</p></li></ul><p>Outputs vary with temperature, context, prompt phrasing, or just model quirks. So you architect for <strong>consistency</strong>, not perfection.</p><p>That means:</p><ul><li><p>Using structured prompts and templates</p></li><li><p>Tuning sampling parameters</p></li><li><p>Validating outputs against expected formats (e.g. JSON schemas)</p></li></ul><blockquote><p><em>&#128064; Example: A chatbot that always returns valid JSON &#8212; even when the model &#8220;feels like explaining.&#8221;</em></p></blockquote><blockquote></blockquote><h2><strong>2. One-and-done deploys vs. continuous feedback</strong></h2><ul><li><p><strong>With traditional code,</strong> you ship once and monitor uptime.</p></li><li><p><strong>With AI</strong>, you ship... and then babysit it forever.</p></li></ul><p>AI System Design requires feedback loops:</p><ul><li><p>Eval jobs that score LLM responses over time</p></li><li><p>Users flagging bad outputs</p></li><li><p>Retraining or prompt-tuning based on failure cases</p></li></ul><p>It&#8217;s not just &#8220;is it up?&#8221;<br>It&#8217;s &#8220;is it still helpful, accurate, and aligned with user expectations?&#8221;</p><blockquote><p><em>&#128064; Example: Your chatbot nailed answers in March but starts failing in May because the knowledge base got stale.</em></p></blockquote><blockquote></blockquote><h2><strong>3. Static data vs. embedded knowledge</strong></h2><ul><li><p><strong>In traditional apps,</strong> data lives in your database.</p></li><li><p><strong>In AI apps</strong>, data gets embedded into behavior (literally).</p></li></ul><p>Embeddings, vector stores, and fine-tuning all turn your data into part of the model&#8217;s &#8220;mind.&#8221; That means your data pipelines now affect how the system thinks, not just what it retrieves.</p><p>That&#8217;s why you&#8217;ll need to:</p><ul><li><p>Re-embed content as it changes</p></li><li><p>Keep track of embedding versions</p></li><li><p>Treat your vector DB like prod infra, not an experiment</p></li></ul><blockquote></blockquote><h2><strong>4. Input validation vs. output guardrails</strong></h2><ul><li><p><strong>Old-school systems</strong> validate inputs: SQL injection, field formats, etc.</p></li><li><p><strong>With AI systems</strong>, you also have to guard the outputs.</p></li></ul><p>Your model might go off-brand, say something unsafe, make up answers, or generate invalid responses (e.g. malformed JSON).</p><p>You&#8217;ll need output guardrails like:</p><ul><li><p>Output format enforcement (e.g. JSON schema validation)</p></li><li><p>Content filters and post-processing</p></li><li><p>Escalation logic based on confidence or risk</p></li></ul><blockquote><p><em>&#128064; Example: If confidence &lt; 80% or the topic is out-of-scope, the assistant defers to a human.</em></p></blockquote><blockquote></blockquote><h2><strong>3 Types of AI System Design</strong></h2><p>Let&#8217;s dig into what makes each subset of AI System Design essential (and unique).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8M-C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8M-C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png 424w, https://substackcdn.com/image/fetch/$s_!8M-C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png 848w, https://substackcdn.com/image/fetch/$s_!8M-C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png 1272w, https://substackcdn.com/image/fetch/$s_!8M-C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8M-C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png" width="924" height="386" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:386,&quot;width&quot;:924,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;System design types&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="System design types" title="System design types" srcset="https://substackcdn.com/image/fetch/$s_!8M-C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png 424w, https://substackcdn.com/image/fetch/$s_!8M-C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png 848w, https://substackcdn.com/image/fetch/$s_!8M-C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.png 1272w, https://substackcdn.com/image/fetch/$s_!8M-C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F911d80bf-30a8-44a2-ab31-8a1ecc6bed3f_924x386.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 role="img" 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><title></title><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><h2><strong>1. Machine Learning System Design</strong></h2><p><em>&#129302; For predictions, recommendations, and ranking systems</em></p><p>This is the most mature form of AI System Design. It predates LLM hype and still powers everything from product recommendations to fraud detection to churn scoring.</p><p>ML systems fail quietly (and usually after you&#8217;ve already shipped).</p><p>Here&#8217;s what typically goes wrong:</p><ul><li><p><strong>Data drift:</strong> The world changes, but your model hasn&#8217;t</p></li><li><p><strong>Training-serving skew</strong>: Pipelines get out of sync and silently ruin performance</p></li><li><p><strong>Label leakage:</strong> Your model cheats during training and gets exposed in prod</p></li><li><p><strong>Silent degradation</strong>: Accuracy drops but no one&#8217;s watching</p></li></ul><p>You won&#8217;t catch these in logs or alerts &#8212; they hide in dashboards until users start complaining or revenue dips.</p><p>That&#8217;s why ML System Design is all about rigor and <strong>observability</strong>. You&#8217;re going beyond building a model to build a feedback loop.</p><p>Core strategies to keep models reliable:</p><ul><li><p><strong>Version everything</strong> &#8212; data, features, training runs, serving code</p></li><li><p><strong>Automate evaluation</strong> across real-time data slices to catch early signs of drift</p></li><li><p><strong>Enforce pipeline contracts</strong> between training and production</p></li><li><p><strong>Add monitoring</strong> for performance, input distributions, and prediction quality</p></li></ul><blockquote><p>&#128119;<strong> Who needs it:</strong> If you&#8217;re designing systems that need to stay correct over time &#8212; especially in dynamic environments &#8212; this is the foundation you build on.</p></blockquote><blockquote></blockquote><h2><strong>2. Generative AI System Design</strong></h2><p><em>&#129302; For systems that talk, write, summarize, and assist</em></p><p>What makes Gen AI systems tricky is that they don&#8217;t fail like traditional software.</p><p>These are the most common ways they go sideways:</p><ul><li><p><strong>Hallucinations</strong>: Confidently false, made-up answers</p></li><li><p><strong>Prompt injection</strong>: Users hijack the system&#8217;s instructions</p></li><li><p><strong>Output issues:</strong> Broken JSON, excessive verbosity, weird formatting</p></li><li><p><strong>Tone drift:</strong> Sudden personality shifts that feel off</p></li></ul><p>That means Generative AI System Design is about shaping unpredictability into something usable. You&#8217;re not aiming for perfection. Rather, you&#8217;re building enough structure to keep the weirdness inside the lines.</p><p>Key strategies to keep things on track:</p><ul><li><p><strong>Structured prompt templates</strong> that reduce variability and support eval</p></li><li><p><strong>Retrieval (RAG) pipelines</strong> to ground output in actual content</p></li><li><p><strong>Schema checks</strong> and content filters before output reaches the user</p></li><li><p><strong>Fallbacks and escalation logic</strong> when confidence or context is low</p></li></ul><p>As with traditional System Design, you can&#8217;t stop every failure &#8212; but you can contain them, catch them, and recover gracefully.</p><blockquote><p><strong>&#128119; Who needs it:</strong> You&#8217;ll lean on this constantly if you&#8217;re building anything that wraps an LLM in a real UI (e.g., support bots, internal tools, search assistants).</p></blockquote><blockquote></blockquote><h2><strong>3. Agentic System Design</strong></h2><p><em>&#129302; For systems that act, plan, and use tools on their own</em></p><p>Agentic systems are the closest thing to autonomous AI we have today. They plan, reason, call tools, and string together multi-step workflows.</p><p>This also means that when they break, they don&#8217;t just say something weird &#8212; they do something wrong.</p><p>The most common failure modes?</p><ul><li><p><strong>Tool misuse</strong>: Calling APIs in the wrong order, with the wrong inputs</p></li><li><p><strong>Memory failures</strong>: Forgetting important state mid-task</p></li><li><p><strong>Infinite loops</strong>: Broken plans that never resolve</p></li><li><p><strong>Overconfidence</strong>: Acting on bad assumptions without escalating</p></li></ul><p>This is the kind of execution risk that makes devs nervous to hit &#8220;Deploy.&#8221;</p><p>To tame this chaos, Agentic System Design focuses on <strong>structured autonomy</strong>: giving the agent space to act, along with rules to stay safe.</p><p>Key design strategies include:</p><ul><li><p><strong>Explicit planning frameworks</strong> (e.g. LangGraph, state machines) to structure behavior</p></li><li><p><strong>Guardrails</strong> around tool use, including input/output validation and rate limiting</p></li><li><p><strong>Scoped memory management </strong>to track relevant state without overloading context</p></li><li><p><strong>Fallback and escalation logic </strong>to gracefully hand off when the agent&#8217;s out of its depth</p></li></ul><blockquote><p><strong>&#128119; Who needs it</strong>: If you&#8217;re building AI copilots, autonomous task runners, or tool-using bots &#8212; this is the design discipline that separates &#8220;cool demo&#8221; from &#8220;real system.&#8221;</p></blockquote><blockquote></blockquote><h2><strong>Which One Should You Learn?</strong></h2><p>Start with:</p><ul><li><p><strong>Machine Learning System Design</strong> if you&#8217;re building recs, rankings, or anything &#8220;classic ML&#8221;</p></li><li><p><strong>Generative AI System Design</strong> if you&#8217;re creating chatbots, AI features, internal assistants</p></li><li><p><strong>Agentic System Design</strong> if you&#8217;re designing autonomous agents or tool-using copilots</p></li></ul><p>If you&#8217;re trying to work up to <strong>Staff+ engineer</strong> levels, you do need to know a bit of each of these skills. But don&#8217;t try and tackle it all at once &#8212; take it one at a time.</p><p>Here&#8217;s <strong>4 steps to get started</strong> with either subset:</p><ol><li><p>Pick the AI System Design subset that best fits your use case</p></li><li><p>Learn the core patterns and failure modes</p></li><li><p>Build a small, scrappy prototype (and watch how it breaks)</p></li><li><p>Add guardrails, observability, and feedback loops</p></li></ol><p>AI is messy by nature. Good System Design won&#8217;t make it perfect &#8212; but it will make it production-worthy.</p><p><strong>If you want to go deeper,</strong> some of our most popular courses cover these subsets:</p><ul><li><p><strong><a href="https://www.educative.io/courses/machine-learning-system-design?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_system_design&amp;eid=5082902844932096">Machine Learning System Design</a></strong> digs deeper into data pipelines, training, and more</p></li><li><p><strong><a href="https://www.educative.io/courses/generative-ai-system-design?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_system_design&amp;eid=5082902844932096">Grokking Generative AI System Design</a></strong> will walk you through designing various GenAI systems, like text-to-text, text-to-image, text-to-speech, and text-to-video</p></li><li><p><strong><a href="https://www.educative.io/courses/agentic-ai-systems?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_system_design&amp;eid=5082902844932096">Agentic System Design</a></strong> will get you hands-on with essential design patterns for agentic systems</p></li></ul><p>All of these courses are included at 50% off (or more) in our Year End Sale &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_system_design&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;Lock in Your Discount&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_system_design&amp;eid=5082902844932096"><span>Lock in Your Discount</span></a></p><p>Next week we&#8217;ll let you in on what to expect in 2026 at the intersection of AI and code.</p><p><strong>Got any questions or topics you&#8217;d like me to cover?</strong> Hit reply and let me know.</p><p>Until then, happy learning!</p><p>- Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[We were one config file away from a Black Friday meltdown]]></title><description><![CDATA[How a global 5xx event nearly broke BFCM &#8212; and what you can learn from it.]]></description><link>https://grokkingtechcareer.substack.com/p/we-were-one-config-file-away-from</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/we-were-one-config-file-away-from</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 03 Dec 2025 22:07:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pkWN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>We&#8217;re taking a break from AI this week for a postmortem on the Cloudflare outage &#8212; and why its timing near Black Friday served as a critical wakeup call for every e-commerce company.</p></blockquote><p>On November 18, the internet stubbed its toe &#8212; hard.</p><p>Like classic distributed system chaos theory in action, a seemingly minor config change turned into a full-blown outage in minutes.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P1vd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P1vd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png 424w, https://substackcdn.com/image/fetch/$s_!P1vd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png 848w, https://substackcdn.com/image/fetch/$s_!P1vd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png 1272w, https://substackcdn.com/image/fetch/$s_!P1vd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P1vd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png" width="1120" height="375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:375,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-12-01 at 2.28.16 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-12-01 at 2.28.16 PM" title="Screenshot 2025-12-01 at 2.28.16 PM" srcset="https://substackcdn.com/image/fetch/$s_!P1vd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png 424w, https://substackcdn.com/image/fetch/$s_!P1vd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png 848w, https://substackcdn.com/image/fetch/$s_!P1vd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.png 1272w, https://substackcdn.com/image/fetch/$s_!P1vd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa26ea2c4-031b-468c-b196-d2165a9f3c93_1120x375.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 role="img" 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><title></title><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>Timeline for Cloudflare outage on November 18, 2025</em></figcaption></figure></div><p>Services that rely on Cloudflare began failing to load thanks to a misconfigured internal update. Since Cloudflare handles proxying, caching, and traffic protection for a non-trivial slice of the web, its edge network spread the config change faster than your team merging directly into main on a Friday.</p><p>Cloudflare sits in front of countless origin servers, so when it breaks, healthy backends become unreachable. The result? Widespread HTTP 5xx errors.</p><p>At just days before Black Friday, this outage could have easily become a financial sinkhole. But it wasn&#8217;t. And that&#8217;s thanks to good System Design.</p><p>But what it was instead was a masterclass in tight coupling and shared infrastructure. Let&#8217;s break down what went wrong, how Cloudflare recovered, and the System Design lessons you can take away for peak-traffic readiness.</p><blockquote></blockquote><h2>Why This Outage&#8217;s Timing Mattered</h2><p>Black Friday and Cyber Monday are the highest-traffic days of the year, and minutes of downtime can cost millions.</p><p>During peak load, the effects of an outage are amplified because of factors like:</p><ul><li><p><strong>Violation of change freezes</strong>: Most retailers lock down infra pre-BFCM. A global rollout days before peak breaks the &#8220;do not touch prod&#8221; rule and exposes fragility in upstream dependencies.</p></li><li><p><strong>Retry storms</strong>: During peak load, a single failure fans out&#8212;checkout, auth, and payment APIs get hammered harder than usual.</p></li><li><p><strong>Slow warm-up:</strong> Restoring service is slower under peak traffic. Cold caches, retry queues, and warm-up traffic all collide.</p></li></ul><p>...so we&#8217;re lucky this outage didn&#8217;t happen a few days later.</p><p>But what&#8217;s more, we were lucky Cloudflare&#8217;s recovery playbook worked before the stakes were higher. This is what &#8220;resilience before peak&#8221; looks like in action.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pkWN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pkWN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png 424w, https://substackcdn.com/image/fetch/$s_!pkWN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png 848w, https://substackcdn.com/image/fetch/$s_!pkWN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png 1272w, https://substackcdn.com/image/fetch/$s_!pkWN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pkWN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png" width="932" height="646" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:932,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-26 at 2.41.04 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-26 at 2.41.04 PM" title="Screenshot 2025-11-26 at 2.41.04 PM" srcset="https://substackcdn.com/image/fetch/$s_!pkWN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png 424w, https://substackcdn.com/image/fetch/$s_!pkWN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png 848w, https://substackcdn.com/image/fetch/$s_!pkWN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.png 1272w, https://substackcdn.com/image/fetch/$s_!pkWN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7babc90-354b-417c-a5d9-e1f7d4c03c5a_932x646.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 role="img" 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><title></title><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>Cloudflare as a centralized dependency across critical e-commerce services</em></figcaption></figure></div><blockquote></blockquote><h2>How the Outage Unfolded</h2><p>It all began with a routine configuration change. Within minutes, a faulty update propagated across Cloudflare&#8217;s edge network. The centralized control plane pushed the update to all edge locations simultaneously &#8212; and as the new config hit the data path, proxy processes began failing, leading to widespread 5xx errors.</p><blockquote><p><em><strong>Note</strong>: The control plane manages configuration; the data plane handles user traffic. A resilient system prevents control plane issues from corrupting the data plane.</em></p></blockquote><p>The main disruption lasted just over an hour. Some services remained unstable for several hours as regional data centers recovered. Nodes would restart, restore partial functionality, then fail again. Because it mimicked a DDoS attack, the team first investigated external vectors. But they soon found the actual culprit: a bot management configuration update.</p><p>From there, Cloudflare&#8217;s engineers halted the deployment pipeline and began rollback.</p><p>The <strong>blast radius</strong> was enormous. Major platforms&#8212;X, Shopify, ChatGPT&#8212;were affected, alongside government and transportation services. During Black Friday or Cyber Monday, such an event could overwhelm downstream systems beyond recovery.</p><p>The diagram below illustrates how the faulty configuration propagated quickly, while recovery required a region-by-region stabilization process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q3we!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q3we!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.png 424w, https://substackcdn.com/image/fetch/$s_!q3we!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.png 848w, https://substackcdn.com/image/fetch/$s_!q3we!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.png 1272w, https://substackcdn.com/image/fetch/$s_!q3we!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q3we!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.png" width="862" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e58da3d-473b-466b-8509-93a145616864_862x804.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:862,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-26 at 2.41.17 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-26 at 2.41.17 PM" title="Screenshot 2025-11-26 at 2.41.17 PM" srcset="https://substackcdn.com/image/fetch/$s_!q3we!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.png 424w, https://substackcdn.com/image/fetch/$s_!q3we!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.png 848w, https://substackcdn.com/image/fetch/$s_!q3we!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.png 1272w, https://substackcdn.com/image/fetch/$s_!q3we!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e58da3d-473b-466b-8509-93a145616864_862x804.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 role="img" 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><title></title><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>Rapid global propagation vs. slow recovery</em></figcaption></figure></div><p><strong>Here&#8217;s the TL;DR:</strong></p><ul><li><p><strong>Config bloat:</strong> A configuration update from Cloudflare&#8217;s bot management subsystem created a file with duplicated rows, which bloated it past expected size limits</p></li><li><p><strong>Ineffective validation</strong>: Schema and size checks didn&#8217;t catch the file, and the configuration was pushed to the global edge simultaneously rather than being tested on a subset of nodes.</p></li><li><p><strong>Inline fragility</strong>: Because bot detection runs inline on the proxy request path, this caused proxy processes to crash, taking large portions of Cloudflare&#8217;s edge network offline</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_!Kcd-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kcd-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png 424w, https://substackcdn.com/image/fetch/$s_!Kcd-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png 848w, https://substackcdn.com/image/fetch/$s_!Kcd-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png 1272w, https://substackcdn.com/image/fetch/$s_!Kcd-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kcd-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png" width="1120" height="285" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:285,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-26 at 2.41.25 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-26 at 2.41.25 PM" title="Screenshot 2025-11-26 at 2.41.25 PM" srcset="https://substackcdn.com/image/fetch/$s_!Kcd-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png 424w, https://substackcdn.com/image/fetch/$s_!Kcd-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png 848w, https://substackcdn.com/image/fetch/$s_!Kcd-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.png 1272w, https://substackcdn.com/image/fetch/$s_!Kcd-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0a9ab5-e533-47f7-9880-4901336b9228_1120x285.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 role="img" 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><title></title><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 configuration logic error bypassed validation checks that crash the critical path</em></figcaption></figure></div><p>The failure was swift, but the recovery process was complex and required stabilization on a region-by-region basis.</p><blockquote><p><em><strong>&#128161; Insight</strong>: Non-essential features such as bot management should never sit on the critical request path. When these components fail, the system should degrade gracefully rather than crashing the proxy.</em></p></blockquote><h2>How Cloudflare Recovered Through Detection, Rollback, and Stabilization</h2><p>Once engineers identified the issue with the bot management subsystem, they halted the pipeline to prevent further propagation and initiated a rollback to the last known good configuration.</p><p>Nodes had to be restarted in waves. As servers came back online, they faced a thundering herd of retry requests from clients. This traffic surge posed a risk of a secondary outage.</p><blockquote><p><em>&#128161;<strong> Pro tip</strong>: Implement exponential backoff with jitter in client-side retry logic to avoid thundering herds during recovery.</em></p></blockquote><p>Managing this wave of retries is a standard challenge in system recovery. During a Black Friday event, the sheer volume of traffic would make this significantly harder to manage.</p><p>The graphic below illustrates the phased recovery and the traffic surge that recovering nodes had to handle.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aiKC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aiKC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png 424w, https://substackcdn.com/image/fetch/$s_!aiKC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png 848w, https://substackcdn.com/image/fetch/$s_!aiKC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png 1272w, https://substackcdn.com/image/fetch/$s_!aiKC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aiKC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png" width="1120" height="574" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:574,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-26 at 2.41.34 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-26 at 2.41.34 PM" title="Screenshot 2025-11-26 at 2.41.34 PM" srcset="https://substackcdn.com/image/fetch/$s_!aiKC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png 424w, https://substackcdn.com/image/fetch/$s_!aiKC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png 848w, https://substackcdn.com/image/fetch/$s_!aiKC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.png 1272w, https://substackcdn.com/image/fetch/$s_!aiKC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51afdaa6-96e9-49e9-8363-2e2d45dd0119_1120x574.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 role="img" 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><title></title><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>Phased system health recovery</em></figcaption></figure></div><div><hr></div><blockquote><h3>Learn from the ultimate Black Friday success story</h3><p>We&#8217;ve opened up a recent edition from our subscriber-only Educative Newsletter covering one of the ultimate success stories of Black Friday. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/newsletter/system-design/inside-shopifys-multi-tenant-platform-during-bfcm?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=bfcm_cloudflare_educative_weekly_q4_2025&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;Shopify&#8217;s Black Friday Case Study&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/newsletter/system-design/inside-shopifys-multi-tenant-platform-during-bfcm?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=bfcm_cloudflare_educative_weekly_q4_2025&amp;eid=5082902844932096"><span>Shopify&#8217;s Black Friday Case Study</span></a></p></blockquote><div><hr></div><h2>3 System Design Lessons for Resilience During Peak Traffic Events</h2><p>Building resilient systems requires anticipating failure at every layer of the stack. Here&#8217;s how.</p><h2>1. Strengthen configuration pipelines</h2><p>Configuration updates require the same rigor as code deployments. Automated checks must prevent bad configurations from reaching production.</p><p>For example:</p><ul><li><p><strong>Validation</strong>: Configuration data should be validated with the same rigor as external inputs. Schema checks, integrity checks, and size limits help detect anomalies such as unexpected growth in file size or missing fields before the data reaches the edge.</p></li><li><p><strong>Deployment</strong>: Configuration rollouts should use staged or canary deployment strategies. A small percentage of traffic or a limited set of regions should receive updates first. This limits the blast radius in the event of a configuration error and provides early warning signals.</p></li><li><p><strong>Atomicity</strong>: Ensure configuration updates are atomic. A system should only replace a configuration when the new version has passed validation and health checks.</p></li></ul><p>The diagram below contrasts a fragile deployment process with a secure pipeline, highlighting where automated gates and canary phases intercept faulty configurations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9UZh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9UZh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png 424w, https://substackcdn.com/image/fetch/$s_!9UZh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png 848w, https://substackcdn.com/image/fetch/$s_!9UZh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png 1272w, https://substackcdn.com/image/fetch/$s_!9UZh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9UZh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png" width="1120" height="790" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:790,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-26 at 2.41.42 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-26 at 2.41.42 PM" title="Screenshot 2025-11-26 at 2.41.42 PM" srcset="https://substackcdn.com/image/fetch/$s_!9UZh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png 424w, https://substackcdn.com/image/fetch/$s_!9UZh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png 848w, https://substackcdn.com/image/fetch/$s_!9UZh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.png 1272w, https://substackcdn.com/image/fetch/$s_!9UZh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4512ba48-ae4b-4f0e-935e-87c579aa8ee9_1120x790.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 role="img" 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><title></title><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>Contrasting a fragile direct push with a resilient, gated configuration pipeline</em></figcaption></figure></div><h2>2. Isolate failure domains</h2><p>The outage was global because a non-essential subsystem sat on the critical request path. Decoupling is essential for resilience.</p><ul><li><p><strong>Fail open vs. fail closed:</strong> Auxiliary services such as bot detection, analytics, or logging should not be able to disrupt the primary request path. When these subsystems fail, they should default to allowing traffic through rather than blocking requests or crashing proxy processes.</p></li><li><p><strong>Decouple subsystems:</strong> Use asynchronous processing, bulkheads, and dedicated resource pools to prevent failures in one subsystem from cascading into others.</p></li></ul><blockquote><p><em><strong>&#128161; Architectural insight:</strong> The bulkhead pattern partitions a system into isolated pools of resources, allowing for independent operation and management. A failure in one pool does not affect the others, preventing total system collapse.</em></p></blockquote><p>The following diagram contrasts a fragile monolithic design with a more resilient bulkhead architecture.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LsWh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LsWh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.png 424w, https://substackcdn.com/image/fetch/$s_!LsWh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.png 848w, https://substackcdn.com/image/fetch/$s_!LsWh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.png 1272w, https://substackcdn.com/image/fetch/$s_!LsWh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LsWh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.png" width="1120" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a373b229-cd81-4907-9975-365e0a1d6835_1120x472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:472,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-26 at 2.41.49 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-26 at 2.41.49 PM" title="Screenshot 2025-11-26 at 2.41.49 PM" srcset="https://substackcdn.com/image/fetch/$s_!LsWh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.png 424w, https://substackcdn.com/image/fetch/$s_!LsWh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.png 848w, https://substackcdn.com/image/fetch/$s_!LsWh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.png 1272w, https://substackcdn.com/image/fetch/$s_!LsWh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa373b229-cd81-4907-9975-365e0a1d6835_1120x472.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 role="img" 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><title></title><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>Isolation prevents cascading failures</em></figcaption></figure></div><h2>3. Mitigate centralization risk</h2><p>Relying on a single global provider introduces systemic risk. Redundancy helps limit the impact of provider-level failures.</p><ul><li><p><strong>Multi-CDN strategy</strong>: An active-passive or active-active multi-CDN setup can route traffic to an alternative provider when the primary CDN experiences an outage.</p></li><li><p><strong>Automated failover</strong>: Failover systems must be automated and validated through routine testing using synthetic traffic or chaos engineering simulations to ensure reliability and effectiveness. Manual intervention is too slow during fast-moving outages.</p></li></ul><p>A proactive approach requires a checklist of best practices.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h_Zy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h_Zy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png 424w, https://substackcdn.com/image/fetch/$s_!h_Zy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png 848w, https://substackcdn.com/image/fetch/$s_!h_Zy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png 1272w, https://substackcdn.com/image/fetch/$s_!h_Zy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h_Zy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png" width="1120" height="355" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:355,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-12-01 at 2.27.01 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-12-01 at 2.27.01 PM" title="Screenshot 2025-12-01 at 2.27.01 PM" srcset="https://substackcdn.com/image/fetch/$s_!h_Zy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png 424w, https://substackcdn.com/image/fetch/$s_!h_Zy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png 848w, https://substackcdn.com/image/fetch/$s_!h_Zy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.png 1272w, https://substackcdn.com/image/fetch/$s_!h_Zy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e631826-2d20-4529-8e51-12bd11aa7794_1120x355.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 role="img" 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><title></title><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><blockquote></blockquote><h2>Designing for the next outage</h2><p>The November 18 Cloudflare incident is a brutal reminder: resilience isn&#8217;t about never failing &#8212; it&#8217;s about not taking everything else down with you.</p><p>The fix isn&#8217;t flashy: validate your configs, isolate your blast radius, and stop pretending your single-provider setup is &#8220;fine.&#8221; During peak traffic, <strong>assumptions break</strong>. The question is whether your system does too.</p><p>Had it happened a few days later, this incident could have been the outage story of the season. But even then, we still could&#8217;ve been saved thanks to staged rollbacks, edge isolation, and a capable incident response pipeline.</p><p>Want to dig deeper into the skills you need to build resilience?</p><p>Check out our top resources:</p><ul><li><p><strong><a href="https://www.educative.io/courses/system-design-deep-dive-real-world-distributed-systems?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=bfcm_cloudflare_educative_weekly_q4_2025&amp;eid=5082902844932096">System Design Deep Dive: Real-World Distributed Systems</a>:</strong> Understand resilience by examining real-world hyperscalers like Amazon and Google.</p></li><li><p><strong><a href="https://www.educative.io/path/scalability-system-design?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=bfcm_cloudflare_educative_weekly_q4_2025&amp;eid=5082902844932096">Scalability &amp; System Design for Developers</a>:</strong> A comprehensive Skill Path covering everything you need to know to design scalable systems for enterprise-level software.</p></li></ul><p>You can still access these courses, plus Projects, AI Mock Interviews and more, with extended Cyber Monday offers (still available for a few more hours).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/unlimited?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=bfcm_cloudflare_educative_weekly_q4_2025&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;Lock in your discount&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/unlimited?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=bfcm_cloudflare_educative_weekly_q4_2025&amp;eid=5082902844932096"><span>Lock in your discount</span></a></p><p>Next week we&#8217;ll return to AI with a deep dive on AI System Design &#8212; the different subsets, and which ones you need to know for your career.</p><p>Got any questions or topics you&#8217;d like me to cover? Leave a comment and let me know.</p><p>Until then, happy learning!</p><p>- Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Here's your AI agents starter kit]]></title><description><![CDATA[Now the real fun begins.]]></description><link>https://grokkingtechcareer.substack.com/p/heres-your-ai-agents-starter-kit</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/heres-your-ai-agents-starter-kit</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 26 Nov 2025 22:00:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/15ab9dbf-8f9e-4c8b-b410-9e63fe006f29_792x346.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Last week, we grounded our models with RAG to stop the hallucinations. </p><p>Now, it&#8217;s time to let the machine do the work. We&#8217;re continuing our AI series by moving from <strong>smart answers</strong> to <strong>autonomous action</strong>.</p></blockquote><p>The next frontier in AI development is less about making LLMs &#8216;smarter&#8217;, and more about increasing their ability to act autonomously.</p><p>This is where <strong>Agentic AI</strong> comes in.</p><p>But to fully understand AI Agents, we need to compare them to their predecessors:</p><ul><li><p><strong>Traditional LLMs:</strong> These are specialized tools trained for specific tasks (like summarizing text). They&#8217;re good at many things, but limited in adapting to unforeseen scenarios.</p></li><li><p><strong>Compound Systems (like RAG):</strong> As we learned last week, compound systems connect multiple components (LLMs, databases, search tools) to solve bigger problems. However, they typically follow a fixed, predefined sequence of operations.</p></li><li><p><strong>AI Agents:</strong> Now for the really fun part. These are advanced compound systems with autonomy. Instead of following a rigid script, an Agent leverages the reasoning capabilities of a foundation model to plan, adapt, and choose its own tools to achieve a goal.</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_!vzkY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vzkY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.png 424w, https://substackcdn.com/image/fetch/$s_!vzkY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.png 848w, https://substackcdn.com/image/fetch/$s_!vzkY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.png 1272w, https://substackcdn.com/image/fetch/$s_!vzkY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vzkY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.png" width="533" height="619" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5388bd5-b639-48da-b76a-2cad8583a898_533x619.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&quot;width&quot;:533,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!vzkY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.png 424w, https://substackcdn.com/image/fetch/$s_!vzkY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.png 848w, https://substackcdn.com/image/fetch/$s_!vzkY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.png 1272w, https://substackcdn.com/image/fetch/$s_!vzkY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5388bd5-b639-48da-b76a-2cad8583a898_533x619.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 role="img" 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><title></title><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>With that out of the way (cheers, Vince), let&#8217;s get to building.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Understanding the Agentic Workflow</h2><p>AI agents have three key capabilities: reasoning, acting, and memory.</p><p>These capabilities enable AI agents to handle complex tasks by breaking them down into manageable steps, utilizing external tools, and leveraging stored information for personalized interactions.</p><p>The agentic workflow can be visualized in the following diagram:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rd5S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rd5S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png 424w, https://substackcdn.com/image/fetch/$s_!rd5S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png 848w, https://substackcdn.com/image/fetch/$s_!rd5S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png 1272w, https://substackcdn.com/image/fetch/$s_!rd5S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rd5S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png" width="1120" height="174" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af519599-5486-411f-a983-e3b6e6514d1e_1120x174.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:174,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-24 at 9.02.11 AM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-24 at 9.02.11 AM" title="Screenshot 2025-11-24 at 9.02.11 AM" srcset="https://substackcdn.com/image/fetch/$s_!rd5S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png 424w, https://substackcdn.com/image/fetch/$s_!rd5S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png 848w, https://substackcdn.com/image/fetch/$s_!rd5S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png 1272w, https://substackcdn.com/image/fetch/$s_!rd5S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf519599-5486-411f-a983-e3b6e6514d1e_1120x174.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>In the above diagram, the process starts with a User Query, which is the initial question or problem posed by the user.</p><ul><li><p>The AI agent then proceeds to Plan (Reason), formulating a step-by-step strategy to address the query.</p></li></ul><ul><li><p>The agent then moves to Action (Use Tools), utilizing various external tools such as search engines or calculators to gather necessary information and perform tasks.</p></li></ul><ul><li><p>The Observe step involves the agent reviewing the results of its actions, and if needed, it may adjust its plan accordingly, looping back to the reasoning stage.</p></li></ul><p>Finally, the process concludes with the Final Output, where the agent provides a comprehensive and tailored response to the user.</p><blockquote></blockquote><h2>How Most Devs Are Building Today</h2><p>With so many ways to build &#8212; OpenAI&#8217;s new Agents API, LangChain, LlamaIndex, CrewAI, AutoGen, and a growing list of lightweight libraries &#8212; it can be hard to know where to begin. Every framework advertises a different philosophy, a different abstraction layer, and a different idea of what an &#8220;agent&#8221; even is.</p><p>But when you strip away the branding and look at how developers actually get agents working in the real world, the pattern is surprisingly consistent. No matter which framework you choose, the first successful agent almost always boils down to the same simple setup: <strong>one model, one tool, one loop.</strong></p><p>Everything else is just structure layered on top.</p><p>To keep things (relatively) simple, we&#8217;ll be working in python. Let&#8217;s begin.</p><h3>1. Start With a Single-Agent Loop</h3><p>The simplest agent you can build is:</p><ul><li><p>An LLM (GPT, Claude, Llama &#8212; pick your poison)</p></li><li><p>A small set of tools (like an API)</p></li><li><p>Instructions (&#8216;don&#8217;t screw this up for me&#8217;)</p></li><li><p>A loop that lets it keep thinking and acting until it&#8217;s done</p></li></ul><p>Every framework (LangChain, CrewAI, OpenAI&#8217;s Agents SDK) is doing the same thing underneath:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QE8L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QE8L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png 424w, https://substackcdn.com/image/fetch/$s_!QE8L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png 848w, https://substackcdn.com/image/fetch/$s_!QE8L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png 1272w, https://substackcdn.com/image/fetch/$s_!QE8L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QE8L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png" width="1120" height="513" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:513,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!QE8L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png 424w, https://substackcdn.com/image/fetch/$s_!QE8L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png 848w, https://substackcdn.com/image/fetch/$s_!QE8L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.png 1272w, https://substackcdn.com/image/fetch/$s_!QE8L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6acdcd0-536f-4574-9449-b9b9ba70e7ca_1120x513.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 role="img" 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><title></title><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>If you can build <em>this</em>, you can build almost any agent system.</p><h3>2. Give It One Useful Tool</h3><p>Early wins usually come from <strong>one reliable tool</strong>. For example, a web search or internal API call.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Etcn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Etcn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png 424w, https://substackcdn.com/image/fetch/$s_!Etcn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png 848w, https://substackcdn.com/image/fetch/$s_!Etcn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png 1272w, https://substackcdn.com/image/fetch/$s_!Etcn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Etcn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png" width="1120" height="268" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:268,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Etcn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png 424w, https://substackcdn.com/image/fetch/$s_!Etcn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png 848w, https://substackcdn.com/image/fetch/$s_!Etcn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png 1272w, https://substackcdn.com/image/fetch/$s_!Etcn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2418c10d-48d2-442b-a4d2-a426673176a3_1120x268.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Then you register that function as a tool the agent can call:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wrrP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wrrP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png 424w, https://substackcdn.com/image/fetch/$s_!wrrP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png 848w, https://substackcdn.com/image/fetch/$s_!wrrP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png 1272w, https://substackcdn.com/image/fetch/$s_!wrrP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wrrP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png" width="1120" height="286" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:286,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!wrrP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png 424w, https://substackcdn.com/image/fetch/$s_!wrrP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png 848w, https://substackcdn.com/image/fetch/$s_!wrrP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.png 1272w, https://substackcdn.com/image/fetch/$s_!wrrP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f5fd34-def8-4844-b7d1-3cc1349b044a_1120x286.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 role="img" 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><title></title><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>With just this, your agent can stop guessing and start doing something concrete.</p><h3>3. Add Tight Instructions (Not a Vague Prompt)</h3><p>A good agent behaves more predictably when its instructions are specific.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sf4s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sf4s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.png 424w, https://substackcdn.com/image/fetch/$s_!Sf4s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.png 848w, https://substackcdn.com/image/fetch/$s_!Sf4s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.png 1272w, https://substackcdn.com/image/fetch/$s_!Sf4s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sf4s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.png" width="864" height="356" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eac9a186-b080-4096-b025-86d03461ddae_864x356.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:356,&quot;width&quot;:864,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Sf4s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.png 424w, https://substackcdn.com/image/fetch/$s_!Sf4s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.png 848w, https://substackcdn.com/image/fetch/$s_!Sf4s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.png 1272w, https://substackcdn.com/image/fetch/$s_!Sf4s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac9a186-b080-4096-b025-86d03461ddae_864x356.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 role="img" 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><title></title><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>That&#8217;s all you need for a very capable first agent: one tool, clear rules, and a loop.</p><p>Once developers get their first agent running, the next layer is all about reliability: testing the workflow against real inputs, validating tool outputs, and adding lightweight guardrails so the agent doesn&#8217;t loop forever or take the wrong action.</p><p>These steps aren&#8217;t wildly complicated, but they separate a fun demo from something you can trust in production.</p><blockquote></blockquote><h2>Connecting Systems: The Model Context Protocol (MCP)</h2><p>As agent systems grow, they need a reliable way to talk to your tools, data sources, and internal APIs. Right now, every service speaks its own language &#8212; one for calendars, one for file systems, one for search, one for business apps. That quickly turns into a pile of brittle, custom integrations.</p><p><strong>MCP (Model Context Protocol)</strong> addresses this by giving AI agents a standard way to connect to external systems.</p><p>You can think of it as a universal adapter:</p><ul><li><p>Your model runs inside an MCP host.</p></li><li><p>It communicates through an MCP client.</p></li><li><p>Tools and data sources sit behind MCP servers.</p></li></ul><p>Once a service exposes an MCP server, <strong>any</strong> compatible AI agent can use it without bespoke glue code. That keeps your system modular, reusable, and easier to scale.</p><p>MCP defines three simple primitives:</p><ul><li><p><strong>Tools</strong>: actions the agent can take</p></li><li><p><strong>Resources</strong>: read-only data the agent can fetch</p></li><li><p><strong>Prompts</strong>: reusable instruction templates hosted on the server</p></li></ul><p>It&#8217;s still early, but MCP is already becoming the foundation for building larger, more interoperable agent systems. You&#8217;ll start seeing it show up everywhere: IDEs, assistants, multi-agent frameworks, and developer tooling.</p><blockquote></blockquote><h2>Get Started With Agents Today</h2><p>The transition from a smart prompt to an autonomous Agent is the biggest leap in modern AI engineering. If you can master Agents, you can build systems that truly automate major business processes.</p><p>Here are some resources to help you get started:</p><ul><li><p>&#128073; Still need to home in on the basics? Find your footing with <strong><a href="https://www.educative.io/courses/generative-ai-essentials?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_agents&amp;utm_term=&amp;eid=5082902844932096">Generative AI Essentials</a></strong></p></li><li><p>&#128073; Ready to command your first digital assistant? Dive deeper into the multi-agent paradigm with <strong><a href="https://www.educative.io/courses/build-ai-agents-and-multi-agent-systems-with-crewai?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_agents&amp;utm_term=&amp;eid=5082902844932096">Build AI Agents and Multi-Agent Systems with CrewAI</a></strong><a href="https://www.educative.io/courses/build-ai-agents-and-multi-agent-systems-with-crewai?utm_campaign=educative_weekly_q4_2025&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=ai_agents&amp;eid=5082902844932096">.</a></p></li><li><p>&#128073; Orchestrating multiple agentic systems? Explore <strong><a href="https://www.educative.io/courses/model-context-protocol?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_agents&amp;utm_term=&amp;eid=5082902844932096">MCP Fundamentals for Building AI Agents</a></strong> to learn more about the Model Context Protocol, the new standard for connecting AI assistants to systems and data.</p></li></ul><p>You can access these courses (and more) at Black Friday prices right now:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_agents&amp;utm_term=&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;View Black Friday Offers&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=ai_agents&amp;utm_term=&amp;eid=5082902844932096"><span>View Black Friday Offers</span></a></p><p>Next week, we&#8217;ll take a break from AI to dive deep into a BFCM case study. After that, we&#8217;ll return to our AI series with an actionable overview of AI System Design.</p><p>Until then, let me know if there are any other topics you&#8217;d like me to cover in the comments. </p><p>Happy learning!</p><p>- Fahim</p>]]></content:encoded></item><item><title><![CDATA[5 steps for your first RAG setup]]></title><description><![CDATA[You're just a few clicks away from production-ready AI.]]></description><link>https://grokkingtechcareer.substack.com/p/5-steps-for-your-first-rag-setup</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/5-steps-for-your-first-rag-setup</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 19 Nov 2025 18:00:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YGjW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Hi there, I&#8217;m continuing my AI series with a focus on <strong>RAG</strong> today. If you don&#8217;t know why you need it or how to get started, you shouldn&#8217;t miss this.</p><p>Before we start, a quick reminder that your <strong>Early Bird Black Friday</strong> offers will be available on Educative for only one more week. This is a great opportunity to grab access to all of our courses on RAG, Agentic AI, and other critical AI topics. Use <strong><a href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=how_to_rag_pipeline&amp;eid=5082902844932096">this link</a></strong> to view your offers.</p></blockquote><div><hr></div><p>Building with LLMs is exciting&#8230; until your app confidently tells a user that the Eiffel Tower is in Berlin.</p><p>Many developers hesitate to work with AI because of its unpredictability. And for good reason. Major hallucinations kill user trust fast.</p><p>But there&#8217;s a proven architecture to reduce those mistakes: <strong>Retrieval-Augmented Generation (RAG)</strong>. Instead of asking the LLM to recall an answer, RAG involves giving your LLM the context needed to generate a better answer in real time.</p><p>The result is more accurate answers, fewer hallucinations, and way better UX.</p><p>Today, I&#8217;ll cover:</p><ul><li><p>How RAG actually works</p></li><li><p>How to build your first pipeline</p></li><li><p>Best practices and popular tooling</p></li></ul><p>Let&#8217;s dig in.</p><blockquote></blockquote><h2>How RAG works</h2><p>At a high level, RAG combines retrieval and generation in a tight loop. Instead of just prompting an LLM, you&#8217;re plugging it into a pipeline that feeds it curated, context-relevant info in real time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YGjW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YGjW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png 424w, https://substackcdn.com/image/fetch/$s_!YGjW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png 848w, https://substackcdn.com/image/fetch/$s_!YGjW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png 1272w, https://substackcdn.com/image/fetch/$s_!YGjW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YGjW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png" width="1120" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot 2025-11-14 at 2.53.50 PM&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot 2025-11-14 at 2.53.50 PM" title="Screenshot 2025-11-14 at 2.53.50 PM" srcset="https://substackcdn.com/image/fetch/$s_!YGjW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png 424w, https://substackcdn.com/image/fetch/$s_!YGjW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png 848w, https://substackcdn.com/image/fetch/$s_!YGjW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.png 1272w, https://substackcdn.com/image/fetch/$s_!YGjW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2efc534-b119-4604-9b0b-9f8a2b2acf78_1120x457.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 role="img" 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><title></title><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>Here&#8217;s what&#8217;s happening in a RAG-enabled system when a user submits a question:</p><ol><li><p><strong>Query comes in</strong></p><p>The user asks something like: &#8220;What&#8217;s our refund policy for enterprise clients?&#8221;</p><p>A clear, specific question = better retrieval = better answer.</p></li><li><p><strong>Retrieval kicks in</strong></p><p>The system embeds the query, runs a similarity search on your vector DB, and pulls back relevant chunks of context.</p></li><li><p><strong>Augmented prompt is built</strong></p><p>The original question + retrieved context + instructions (e.g. &#8220;Only answer using this info. Say &#8216;I don&#8217;t know&#8217; if it&#8217;s not there.&#8221;)</p></li><li><p><strong>LLM generates the response</strong></p><p>The model uses the prompt to generate a fluent, fact-grounded reply &#8212; now informed by your actual data.</p></li><li><p><strong>User gets an answer they can trust</strong></p><p>Hallucination risk drops, confidence goes up. Users get useful answers, not confident guesses.</p></li></ol><p>This is the conceptual flow of RAG, but to make it real, you need a few key pieces working together. Let&#8217;s walk through how to wire them up into an actual pipeline you can ship.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><blockquote></blockquote><h2>Your first basic RAG pipeline</h2><p>A lightweight, functional RAG stack can be built with a handful of tools and some Python glue code.</p><p>Here&#8217;s a simple version you can stand up today in 5 steps.</p><h3>1. Ingest your data</h3><p>You need to make your docs searchable.</p><p>That means:</p><ul><li><p>Chunking them (e.g. 500-token chunks)</p></li><li><p>Converting them into vector embeddings using a model like text-embedding-3-small</p></li></ul><p><strong>&#128736;&#65039; Tools</strong>: LangChain, LlamaIndex, or a simple script using OpenAI + FAISS.</p><h3>2. Store your vectors</h3><p>These embeddings go into a<strong> vector database</strong>, which lets you search by semantic similarity instead of keywords.</p><p><strong>&#128736;&#65039; Tools</strong>:</p><ul><li><p>Open-source: FAISS, Chroma</p></li><li><p>Managed: Pinecone, Weaviate, Qdrant</p></li></ul><h3>3. Handle the user query</h3><p>You get a user question like: &#8220;What&#8217;s the SLA for our enterprise customers?&#8221;</p><p>You embed that question the same way you did your docs, and run a similarity search against your vector DB. This pulls back relevant chunks (say, a paragraph from your internal policy doc).</p><h3>4. Construct the prompt</h3><p>Now you build a prompt that includes:</p><ul><li><p>The user&#8217;s question</p></li><li><p>The relevant retrieved context</p></li><li><p>Instructions for how to answer (this part matters more than you think)</p></li></ul><p><strong>Example</strong>:</p><p>&#8220;Use the following context to answer the question. If the answer isn&#8217;t in the context, just say &#8216;I don&#8217;t know.&#8217; Don&#8217;t make anything up.&#8221;</p><h3>5. Call the LLM</h3><p>You send the prompt to the model (OpenAI, Anthropic, Mistral, etc.) and get a response that&#8217;s:</p><ul><li><p>Grounded in your actual data</p></li><li><p>Less prone to hallucination</p></li><li><p>More trustworthy for users</p></li></ul><p>And congratulations, you&#8217;ve built your first RAG pipeline.</p><blockquote></blockquote><h2>RAG best practices</h2><p>The difference between a scrappy prototype and a system users can actually trust often comes down to how well you manage the details.</p><p>Here are a few principles that&#8217;ll save you hours of debugging (and some deeply unhinged LLM outputs):</p><ul><li><p><strong>Chunking size matters</strong>. Too big? You lose precision. Too small? You lose context. 300&#8211;500 tokens per chunk is a good default.</p></li><li><p><strong>&#8220;I don&#8217;t know&#8221; prompting is critical</strong>. Tell the model not to improvise when the answer isn&#8217;t in the context. Otherwise? It will.</p></li><li><p><strong>Eval early.</strong> Don&#8217;t wait until prod to find out your retrieval sucks. Manually check: &#8220;Does the retrieved context actually answer the query?&#8221;</p></li><li><p><strong>Don&#8217;t overcomplicate it.</strong> You can do basic RAG with a local FAISS index, 50 lines of Python, and OpenAI&#8217;s embedding API. Tools like LangChain are great &#8212; just know what&#8217;s under the hood.</p></li></ul><p>Stick to these, and you&#8217;ll <strong>avoid 90%</strong> of the most common RAG faceplants.</p><blockquote></blockquote><h2>When NOT to use RAG</h2><p>RAG is powerful, but it&#8217;s not a silver bullet.</p><p>It won&#8217;t help if:</p><ul><li><p>You&#8217;re doing complex reasoning across multiple documents (that&#8217;s better for agents or multi-step planners)</p></li><li><p>You need structured data from APIs or databases (use tools instead)</p></li><li><p>Your data is always changing in real-time (consider hybrid approaches)</p></li></ul><p>And if RAG doesn&#8217;t fit your use case, there are <strong>alternative approaches</strong> you could take:</p><ul><li><p><strong>Tool use and API calling</strong> for tasks that rely on dynamic or structured data,</p></li><li><p><strong>Fine-tuning</strong> might be more efficient if your domain is stable but highly specific.</p></li><li><p><strong>A hybrid approach</strong> &#8212; using RAG where flexibility is needed, and fine-tuning or tools where precision matters.</p></li></ul><blockquote></blockquote><h2>Ground your models now, thank yourself later</h2><p>If your app needs to ground its answers in real knowledge, you definitely need to learn RAG.</p><p>But don&#8217;t get blocked by tooling or perfectionism. Just build a scrappy prototype, test it with real users, and improve it from there.</p><p>The sooner you start, the sooner you stop shipping AI that just makes stuff up.</p><p>Here are some resources to help you get started:</p><ul><li><p>&#128073; <strong>New to RAG?</strong> <strong><a href="https://www.educative.io/courses/rag-llm?utm_campaign=gen_ai&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=how_to_rag_pipeline&amp;eid=5082902844932096">Fundamentals of Retrieval-Augmented Generation with LangChain</a></strong> shows you how to apply LangChain to implement RAG pipeline and build a frontend app for your pipeline with Streamlit.</p></li><li><p>&#128073;<strong> Ready for advanced RAG?</strong> <strong><a href="https://www.educative.io/courses/advanced-rag-techniques?utm_campaign=gen_ai&amp;utm_source=newsletter&amp;utm_medium=email&amp;utm_content=how_to_rag_pipeline&amp;eid=5082902844932096">Advanced RAG Techniques: Choosing the Right Approach</a></strong> covers different RAG approaches, post-retrieval optimization methods, and designing RAG-based chatbots.</p></li></ul><p>This is your last week to access these courses and more <strong>at 50% off (or more) </strong>for our Early Bird Black Friday Sale.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=how_to_rag_pipeline&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;View Early Bird Offers&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=how_to_rag_pipeline&amp;eid=5082902844932096"><span>View Early Bird Offers</span></a></p><blockquote></blockquote><p>Next week, we&#8217;ll <strong>demystify</strong> <strong>agents</strong> and how you can grok them to future-proof your career.</p><p><strong>Any questions about the future of development or AI?</strong> Leave a comment and let me know.</p><p><em>Happy learning!</em></p><p>- Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[How to go from "I don't get AI" to building with it]]></title><description><![CDATA[+ 3 key concepts for a strong foundation.]]></description><link>https://grokkingtechcareer.substack.com/p/how-to-go-from-i-dont-get-ai-to-building</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/how-to-go-from-i-dont-get-ai-to-building</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 12 Nov 2025 18:01:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XRan!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>A lot of developers have tried ChatGPT or Copilot. But when it comes to actually building something real, they&#8217;re not confident. If that&#8217;s you, you&#8217;re not alone.</p><p><strong>&#8230;but you are falling behind</strong>. LLMs are here to stay, and if you don&#8217;t learn how to build with them fast, the next few years will leave you in the dust.</p><p>To help you catch up, I&#8217;ll spend most of my efforts through the new year to address the AI topics that readers have requested the most: from RAG through 2026 must-have tools. But today I&#8217;m kicking it off with an overview of what makes building with AI fundamentally different.</p></blockquote><p>LLMs have transformed our development model.</p><p>In the 2010s, APIs became our go-to for connecting with third-party services. Building something like Uber didn&#8217;t mean reinventing the wheel for every feature&#8212;you stitched together services like Google Maps for directions and Stripe for payments. The API model was reliable and boring (in a good way).</p><p>But when you use LLMs via API, the output isn&#8217;t always precise.</p><p>Take the classic GPT 4o mistake: misspelling &#8220;strawberry&#8221; with three R&#8217;s:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wYu6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wYu6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png 424w, https://substackcdn.com/image/fetch/$s_!wYu6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png 848w, https://substackcdn.com/image/fetch/$s_!wYu6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png 1272w, https://substackcdn.com/image/fetch/$s_!wYu6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wYu6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png" width="626" height="334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:334,&quot;width&quot;:626,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;strawberry error&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="strawberry error" title="strawberry error" srcset="https://substackcdn.com/image/fetch/$s_!wYu6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png 424w, https://substackcdn.com/image/fetch/$s_!wYu6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png 848w, https://substackcdn.com/image/fetch/$s_!wYu6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.png 1272w, https://substackcdn.com/image/fetch/$s_!wYu6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F567866d3-ac46-4c77-9b34-24a0f510fba3_626x334.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 role="img" 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><title></title><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>You&#8217;d never expect this kind of mistake from a legacy API or SaaS platform (imagine if Google Maps guessed a location with 70% confidence). But with LLMs, this uncertainty is baked in.</p><p>Still, that&#8217;s not stopping any companies from adopting AI. 92% of companies plan to invest more in AI over the next three years. And if you don&#8217;t learn the skills to work with AI reliably, you&#8217;ll be competing in an AI-hungry market against developers who have.<a href="https://www.mckinsey.com/capabilities/tech-and-ai/our-insights/superagency-in-the-workplace-empowering-people-to-unlock-ais-full-potential-at-work"><sup>1</sup></a></p><p>Grokking AI is all about grasping how to work <em>with</em> its unpredictability.</p><p>To help you get there, I&#8217;ll cover this today:</p><ul><li><p>3 LLM components that drive unpredictability under the hood</p></li><li><p>The skills you need to build resiliently with AI</p></li></ul><p>Let&#8217;s get started.</p><blockquote></blockquote><h2>3 components that make LLMs powerful (and weird)</h2><p>The unpredictability you see in LLMs is a direct consequence of how they work under the hood. Let&#8217;s talk about how these 3 components contribute to that.</p><h2>1. Transformers</h2><p>At the heart of every LLM is the transformer &#8212; a neural network architecture built around a mechanism called attention. <strong>Attention</strong> lets the model weigh which parts of the input matter most when making a prediction.</p><p>Unlike older models that process text word by word, transformers read the entire input (called the context window) at once. Then, they predict what comes next based on the patterns they&#8217;ve seen before.</p><p>This means that transformers don&#8217;t understand meaning. Rather, they extend <strong>patterns</strong>. You&#8217;re getting what the model thinks is a likely continuation of the input, but not necessarily a logical result.</p><p>This is what causes weird behavior:</p><ul><li><p>The same input can produce different outputs, depending on the surrounding context.</p></li><li><p>Minor prompt changes can cause big differences in completions.</p></li><li><p>The model isn&#8217;t &#8220;following instructions&#8221; &#8212; it&#8217;s guessing what looks right next.</p></li></ul><h2>2. Tokenization &amp; Sampling</h2><p>Before an LLM can generate output, it first breaks down the input text into <strong>tokens</strong> &#8212; small chunks of text that may be whole words, word fragments, or even just characters &#8212; in a process called tokenization.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XRan!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XRan!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png 424w, https://substackcdn.com/image/fetch/$s_!XRan!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png 848w, https://substackcdn.com/image/fetch/$s_!XRan!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png 1272w, https://substackcdn.com/image/fetch/$s_!XRan!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XRan!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png" width="818" height="402" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15935c84-54df-4314-b15b-a48290c46816_818x402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:402,&quot;width&quot;:818,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;tokenization&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="tokenization" title="tokenization" srcset="https://substackcdn.com/image/fetch/$s_!XRan!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png 424w, https://substackcdn.com/image/fetch/$s_!XRan!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png 848w, https://substackcdn.com/image/fetch/$s_!XRan!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.png 1272w, https://substackcdn.com/image/fetch/$s_!XRan!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15935c84-54df-4314-b15b-a48290c46816_818x402.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 role="img" 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><title></title><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>For example, the word <em>unpredictability</em> might be split into several tokens like <em>un</em>, <em>predict</em>, and <em>ability</em>. Rather than seeing sentences, the model sees token sequences.</p><p>To generate output, the model generates a probability distribution over its vocabulary for the next token. This is called <strong>sampling</strong>: picking the next token at random, weighted by its probability.</p><p>That randomness is what makes LLMs feel <strong>creative</strong> &#8212; but it also makes them unpredictable:</p><ul><li><p>Change the temperature, and you change how random the output is.</p></li><li><p>Use different sampling strategies (like top-k or nucleus sampling), and the model may complete the same prompt in very different ways.</p></li><li><p>Even punctuation or emoji can split into multiple tokens and skew the results.</p></li></ul><p>While you can force consistency by setting the temperature to zero, doing that often kills the flexibility and fluency that make LLMs useful in the first place.</p><h2>3. Training Signals</h2><p>Most LLMs are trained in two big phases:</p><ol><li><p><strong>Pretraining</strong>: The model learns language by predicting the next token on massive text datasets.</p></li><li><p><strong>Fine-tuning</strong>: Humans step in and say &#8220;this output was helpful,&#8221; using techniques like Reinforcement Learning from Human Feedback (<strong>RLHF</strong>) to make the model more aligned with human preferences.</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_!5Ab_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5Ab_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png 424w, https://substackcdn.com/image/fetch/$s_!5Ab_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png 848w, https://substackcdn.com/image/fetch/$s_!5Ab_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png 1272w, https://substackcdn.com/image/fetch/$s_!5Ab_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5Ab_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png" width="1120" height="597" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:597,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;RLHF&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="RLHF" title="RLHF" srcset="https://substackcdn.com/image/fetch/$s_!5Ab_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png 424w, https://substackcdn.com/image/fetch/$s_!5Ab_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png 848w, https://substackcdn.com/image/fetch/$s_!5Ab_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.png 1272w, https://substackcdn.com/image/fetch/$s_!5Ab_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6ba6af-fa60-4afa-ac10-f70da31acda9_1120x597.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 role="img" 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><title></title><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>This <strong>fine-tuning and RLHF process</strong> makes a model more polite, friendly, and cooperative. But it also introduces some major issues:</p><ul><li><p>It&#8217;s rewarded for sounding helpful, not for being factually correct.</p></li><li><p>It might confidently hallucinate an answer instead of saying &#8220;I don&#8217;t know.&#8221;</p></li><li><p>Sometimes it&#8217;ll refuse to answer a valid query to avoid &#8220;sounding risky.&#8221;</p></li></ul><p>This means you&#8217;re not just debugging your code anymore &#8212; you&#8217;re also debugging the ghost of every human preference that got baked into the training loop. Fun.</p><blockquote></blockquote><h2>AI skills to mitigate uncertainty</h2><p>You can&#8217;t change how LLMs work, but you can still build reliably with them if you learn skills and strategies that help mitigate their pitfalls.</p><p>The <strong>most in-demand AI skills</strong> are a direct response to the quirks we unpacked:</p><ul><li><p><strong>Prompt engineering</strong>: Steers transformer behavior by reducing ambiguity and guiding attention.</p></li><li><p><strong>Retrieval-Augmented Generation (RAG):</strong> Injects real-world context to override hallucinations from pretraining or RLHF.</p></li><li><p><strong>Output validation and filtering</strong>: Catches bad outputs caused by token sampling randomness or training misalignment.</p></li><li><p><strong>Tool use and orchestration</strong>: Delegates tasks the model is bad at (math, APIs, logic) to more reliable systems.</p></li><li><p><strong>System Design for failure</strong>: Assumes the model will mess up and builds in retries, backups, and fallbacks.</p></li><li><p><strong>Evaluation strategies</strong>: Measures performance when &#8220;correctness&#8221; is fuzzy or probabilistic.</p></li></ul><p>If you&#8217;ve heard of these skills but didn&#8217;t understand why they&#8217;re useful, you do now.</p><blockquote></blockquote><h2>Reducing uncertainty in LLMs (and your career)</h2><p>The unpredictability in LLM outputs is a natural side effect of their architecture. If you can embrace uncertainty instead of fighting it, you&#8217;ll be ahead of the developers still treating LLMs like APIs.</p><p>Start now, with the <strong>skills that matter most</strong>:</p><ul><li><p>Learn prompt engineering to steer model behavior.</p></li><li><p>Add basic validation to catch bad outputs before they reach users.</p></li><li><p>Use RAG to ground your model in facts when accuracy matters.</p></li><li><p>Bring in tools and fallback logic as your system grows.</p></li><li><p>And when you&#8217;re deploying to real users, track what&#8217;s working with evaluation.</p></li></ul><p>You don&#8217;t need to master all of this overnight. But if you want to build with AI, now&#8217;s the time to move. The LLM wave isn&#8217;t slowing down &#8212; and waiting until the tooling is &#8220;mature&#8221; or the models are &#8220;perfect&#8221; is a gamble you will lose.</p><h3>To keep learning:</h3><ul><li><p>You can get hands-on experience with everything from prompting to RAG to fine-tuning to building agents in our comprehensive Skill Path: <a href="https://www.educative.io/path/become-an-llm-engineer?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=how_to_build_w_llms&amp;eid=5082902844932096">Become an LLM Engineer</a>.</p></li><li><p>If you&#8217;re ready for more advanced AI skills, explore our entire catalog of <a href="https://www.educative.io/generative-ai?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=how_to_build_w_llms&amp;eid=5082902844932096">Generative AI resources.</a></p></li></ul><p>For a limited time, you can access these courses and more at a 50% discount (or more) with our Early Bird Black Friday Sale.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=how_to_build_w_llms&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;View Early Bird Offers&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/unlimited?utm_campaign=gen_ai&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=how_to_build_w_llms&amp;eid=5082902844932096"><span>View Early Bird Offers</span></a></p><p><strong>Over the next few weeks</strong>, we&#8217;ll discuss some of the applied techniques you need to engineer successful AI systems, including:</p><ul><li><p>How to set up your first RAG pipeline</p></li><li><p>How to create reliable agentic systems.</p></li><li><p>Designing for failure with AI System Design</p></li></ul><p>Until then, do you have any <strong>burning questions</strong> about AI and software development? Leave a comment and let me know.</p><p><em>Happy learning!</em></p><p><em>&#8212; Fahim</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[An AWS post-mortem: When Amazon broke the internet ]]></title><description><![CDATA[+ what we can learn from it.]]></description><link>https://grokkingtechcareer.substack.com/p/an-aws-post-mortem-when-amazon-broke</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/an-aws-post-mortem-when-amazon-broke</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 29 Oct 2025 21:50:26 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0a2be7b1-21cd-4e8c-bf70-09e61db16c16_1100x612.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Hi there,</p><p>This week I wanted to do something a little different.</p><p>In light of the big AWS crash last week, we decided to make this week&#8217;s &#8220;post mortem&#8221; edition of our Educative Newsletter free for everyone. The Educative Newsletter is a perk for Educative Unlimited subscribers &#8212;&nbsp;who received insights on the crash the very next morning. </p><p>You can see a preview below, or use <a href="https://www.educative.io/newsletter/system-design/lessons-from-aws-outage?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=aws_outage_October_2025&amp;utm_term=&amp;eid=5082902844932096">this link</a> to read the whole thing. Enjoy!</p></blockquote><div><hr></div><h2>When (and why) Amazon $hat the bed</h2><p>At the start of last week, the internet was literally falling apart.</p><p>Netflix lost its chill.</p><p>DoorDashers went hungry.</p><p>Redditors around the world thought they were shadow banned from their favorite online communities.</p><p>And spookiest of all? You couldn&#8217;t even send a Slack.</p><p>(Hey, maybe that last part wasn&#8217;t so bad).</p><p>You likely experienced the <strong>AWS us-east-1 outage</strong> that broke the internet in your own way. But do you have a complete understanding of what actually caused the outage, and how it all went down?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.educative.io/newsletter/system-design/lessons-from-aws-outage?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=aws_outage_October_2025&amp;utm_term=&amp;eid=5082902844932096&quot;,&quot;text&quot;:&quot;Read Now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.educative.io/newsletter/system-design/lessons-from-aws-outage?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=aws_outage_October_2025&amp;utm_term=&amp;eid=5082902844932096"><span>Read Now</span></a></p><blockquote></blockquote><div><hr></div><h2>When systems break, we learn</h2><p>The internet is only as strong as the systems we design to hold it together.</p><p>If this kind of postmortem fascinates you, or if you&#8217;re thinking about how to make your own architecture more resilient, our courses dig deep into the principles that separate fragile systems from fault-tolerant ones.</p><p>Now&#8217;s the perfect time to learn something that won&#8217;t vanish when <strong>us-east-1</strong> does again.</p><ul><li><p><a href="https://www.educative.io/courses/grokking-the-system-design-interview?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=aws_outage_October_2025&amp;utm_term=&amp;eid=5082902844932096">Grokking Modern System Design Interview</a></p></li><li><p><a href="https://www.educative.io/courses/distributed-systems-practitioners?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=aws_outage_October_2025&amp;utm_term=&amp;eid=5082902844932096">Distributed Systems for Practitioners</a></p></li><li><p><a href="https://www.educative.io/courses/learn-the-a-to-z-of-amazon-web-services-aws?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=aws_outage_October_2025&amp;utm_term=&amp;eid=5082902844932096">Learn the A to Z of Amazon Web Services</a></p></li></ul><p>And you&#8217;ll also get topical post-mortems like today&#8217;s feature in your inbox as a subscriber. </p><p>&#127875; And remember &#8212; don&#8217;t forget to <a href="https://www.educative.io/unlimited?utm_campaign=system_design&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=aws_outage_October_2025&amp;utm_term=&amp;eid=5082902844932096">grab 50% off your Educative Unlimited</a> subscription before the Halloween sale ends on October 31st.</p><p><em>Happy learning!</em></p><p>- Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The interview horror story that still haunts me ]]></title><description><![CDATA[Plus: some juicy news about Meta's new AI-enabled coding round]]></description><link>https://grokkingtechcareer.substack.com/p/the-interview-horror-story-that-still</link><guid isPermaLink="false">https://grokkingtechcareer.substack.com/p/the-interview-horror-story-that-still</guid><dc:creator><![CDATA[Fahim ul Haq]]></dc:creator><pubDate>Wed, 22 Oct 2025 18:37:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/064cb466-3249-41e6-99fa-411afe42e94d_810x336.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>The Halloween countdown continues.</p><p>With that, we have an <strong>interview horror story</strong> that&#8217;ll leave even the most seasoned devs clutching their rubber duck &#8212; followed by some juicy MAANG news.</p><p>But first, don&#8217;t forget to take advantage of our most aggressive sale of the year: <a href="https://www.educative.io/unlimited?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=interview_horror_story_2025&amp;eid=5082902844932096">here&#8217;s the link</a> to get 50% off your Educative unlimited subscription.</p></blockquote><div><hr></div><p>Last week, a few of you replied to my request for interview horror stories. Thank you all for sharing.</p><p>Reading through them, this one stood out &#8212; not because it&#8217;s rare, but because it happens a <em>lot</em>. And I think I have some antidotes to share with you.</p><blockquote><p><em>&#8220;I was preparing for my first big MAANG interview: a Software Engineer (L3) role at Meta. I spent MONTHS doing technical prep for process management, distributed systems, and database scaling. I built mock APIs, designed fake backends, even ran through a few system design scenarios just in case. I really felt like I knew my stuff.</em></p><p><em>I crushed the coding round and the system design interview was probably my strongest. But then came the behavioral round.</em></p><p><em>Honestly, I thought it&#8217;d be the easy part. I had always gotten on well with teammates from previous roles, and never had an issue talking about my experience.</em></p><p><em>But every behavioral question hit harder than I expected: a time I failed, disagreed with a lead, or missed a deadline. And I froze. And when I came to, my answers were scattered, too technical, and didn&#8217;t really tell a story.</em></p><p><em>A couple days later, the rejection email hit my inbox. In typical fashion, the recruiter didn&#8217;t give an exact reason. But deep down I knew: I bombed because of the behavioral interview.&#8221;</em></p></blockquote><p>If you&#8217;ve ever struggled through a behavioral interview, you&#8217;re not alone.</p><p>Most engineers underestimate it, but as an interviewer myself, I can tell you that the behavioral round is a bigger decision-maker than ever before. Trust me: in today&#8217;s saturated market, you&#8217;re competing with hundreds of developers who have the same technical skills. So what makes you a real hire for the team is the sense of what kind of team player you are &#8212; how you communicate, prioritize, and support your team when things go sideways.</p><p>The good news? There&#8217;s a system for this part too. I&#8217;ll give you three strong frameworks.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><blockquote></blockquote><h2>3 behavioral frameworks every engineer should know</h2><h3><strong>1. STAR (Situation, Task, Action, Result) </strong></h3><p>This is the standard template most interviewers expect. It&#8217;s perfect when you need to walk through a project, challenge, or achievement from start to finish.</p><ul><li><p><strong>Situation:</strong> Give context (what was happening, who was involved).</p></li><li><p><strong>Task:</strong> Explain your specific responsibility or goal.</p></li><li><p><strong>Action:</strong> Describe what you did to tackle it.</p></li><li><p><strong>Result:</strong> Share the measurable or meaningful outcome.</p></li></ul><p><strong>&#128073; Why it works: </strong>STAR keeps your answer structured and easy to follow. It shows that you understand sequencing and can separate what you did from what happened around you &#8212; a key sign of self-awareness.</p><h3><strong>2. SOAR (Situation, Obstacle, Action, Result) </strong></h3><p>Some stories aren&#8217;t about steady progress, they&#8217;re about friction. SOAR helps you explain what went wrong and how you navigated through it.</p><ul><li><p><strong>Situation:</strong> Set the stage.</p></li><li><p><strong>Obstacle:</strong> What got in your way (technical, interpersonal, or organizational).</p></li><li><p><strong>Action:</strong> How you responded to the challenge.</p></li><li><p><strong>Result:</strong> What you achieved or learned in the process.</p></li></ul><p><strong>&#128073; Why it works:</strong> SOAR highlights resilience and adaptability. It&#8217;s ideal when your story involves conflict, resource constraints, or a project that didn&#8217;t go as planned.</p><h3><strong>3. CAR (Context, Action, Result) </strong></h3><p>Other questions don&#8217;t need a full four-part breakdown. That&#8217;s when CAR shines: it helps you keep things tight and relevant.</p><ul><li><p><strong>Context:</strong> Briefly explain the setup.</p></li><li><p><strong>Action:</strong> Focus on what <em>you</em> did.</p></li><li><p><strong>Result:</strong> Close with impact or takeaway.</p></li></ul><p><strong>&#128073; Why it works:</strong> CAR trims the fat. It&#8217;s great for rapid-fire follow-ups or when you&#8217;re short on time and need to move quickly through multiple examples.</p><p>At first glance, these frameworks might look interchangeable. But the key is in the subtleties and knowing <strong>when</strong> to use each (especially under a time constraint). Here&#8217;s how you can practice:</p><ul><li><p>Run a few <strong><a href="https://www.educative.io/mock-interview?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=interview_horror_story_2025&amp;eid=5082902844932096">mock interviews</a></strong> and challenge yourself to answer every question using a different framework.</p></li><li><p>Record your responses and note which one feels most natural for you.</p></li><li><p>Refine, repeat, and get comfortable shifting between them in real time.</p></li></ul><p>That way, when the real interview hits, you&#8217;re not guessing which story structure fits &#8212; you&#8217;re choosing it with confidence.</p><blockquote></blockquote><h2>AI-enabled coding rounds are officially a thing</h2><p>Speaking of interview rounds at Meta...</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oibx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oibx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png 424w, https://substackcdn.com/image/fetch/$s_!oibx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png 848w, https://substackcdn.com/image/fetch/$s_!oibx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png 1272w, https://substackcdn.com/image/fetch/$s_!oibx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oibx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png" width="500" height="188" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:188,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&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;:&quot;middle&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!oibx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png 424w, https://substackcdn.com/image/fetch/$s_!oibx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png 848w, https://substackcdn.com/image/fetch/$s_!oibx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png 1272w, https://substackcdn.com/image/fetch/$s_!oibx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd843ab51-dde4-4fcf-94f5-88007b51b656_500x188.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>There have been some murmurs that Meta&#8217;s new AI-enabled coding round is officially live, replacing one of the traditional onsite coding rounds. Here&#8217;s what it involves (big thanks to reddit user <a href="https://www.reddit.com/r/leetcode/comments/1o47lk2/officially_live_metas_new_aienabled_coding_round/">drCounterIntuitive</a> for the breakdown):</p><ul><li><p><strong>60-minute CoderPad session</strong> with an AI-assist chat window (GPT-4o mini, Claude 3.5 Haiku, or Llama 4 Maverick; you can switch models). Somewhat similar interface to github copilot&#8217;s chat window, but simplified.</p></li><li><p><strong>One thematic question</strong> with multiple checkpoints or stages (so it can be a multi-part question), not two separate LeetCode problems</p></li><li><p>You get a <strong>mini multi-file codebase</strong> (for Python: multiple .py files plus requirements.txt)</p></li><li><p><strong>You can run and debug code</strong> in real time (no dry-running needed)</p></li><li><p>The interview started appearing <strong>early October 2025</strong> for SWE and ML; likely rolling out to Production Engineers soon</p></li></ul><blockquote></blockquote><h2>Survive the season </h2><p>Behavioral, technical, or AI-assisted &#8212; every interview round tells a story. The best engineers know how to prepare for all of them. You can keep your skills sharp and your prep structured with our most popular resources:</p><ul><li><p><a href="https://www.educative.io/courses/grokking-the-behavioral-interview?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=interview_horror_story_2025&amp;eid=5082902844932096">Grokking the Behavioral Interview</a></p></li><li><p><a href="https://www.educative.io/courses/grokking-the-system-design-interview?utm_campaign=topic_interview_prep&amp;utm_source=substack&amp;utm_medium=text&amp;utm_content=interview_horror_story_2025&amp;eid=5082902844932096">Grokking Modern System Design Interview</a></p></li></ul><p>Stay prepared and stay out of the dark out there. </p><p><em>Happy learning!</em></p><p>- Fahim</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://grokkingtechcareer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Grokking the Tech Career! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item></channel></rss>