<?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[Insights & Iterations]]></title><description><![CDATA[Insights & Iterations explores AI’s technical depths and everyday impact. While most content is technical, AI touches everything we do—from professional workflows to family life. As a father, I’m particularly focused on how AI shapes the next generation.]]></description><link>https://insightsiterations.com</link><image><url>https://substackcdn.com/image/fetch/$s_!r2zy!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e78f9f-5b03-46c6-a6a4-c25a375a41e4_600x600.png</url><title>Insights &amp; Iterations</title><link>https://insightsiterations.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 18 Apr 2026 22:51:36 GMT</lastBuildDate><atom:link href="https://insightsiterations.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Chuck Conway]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[chuckconway@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[chuckconway@substack.com]]></itunes:email><itunes:name><![CDATA[Chuck Conway]]></itunes:name></itunes:owner><itunes:author><![CDATA[Chuck Conway]]></itunes:author><googleplay:owner><![CDATA[chuckconway@substack.com]]></googleplay:owner><googleplay:email><![CDATA[chuckconway@substack.com]]></googleplay:email><googleplay:author><![CDATA[Chuck Conway]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[I Failed a Coding Interview — And It Doesn't Matter]]></title><description><![CDATA[Here&#8217;s a question I can&#8217;t figure out: Am I a software engineer who codes, or a system designer who directs AI?]]></description><link>https://insightsiterations.com/p/i-failed-a-coding-interview-and-it</link><guid isPermaLink="false">https://insightsiterations.com/p/i-failed-a-coding-interview-and-it</guid><dc:creator><![CDATA[Chuck Conway]]></dc:creator><pubDate>Sun, 12 Apr 2026 13:34:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gzMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gzMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gzMQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gzMQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gzMQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gzMQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gzMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:523585,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/193945353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gzMQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gzMQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gzMQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gzMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4b80bf3-3c46-4588-aca0-26ec81eb2584_1376x768.jpeg 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>Here&#8217;s a question I can&#8217;t figure out: Am I a software engineer who codes, or a system designer who directs AI?</p><p>Because the job market doesn&#8217;t seem to know either.</p><h2><strong>The Interview That Changed Everything</strong></h2><p>I had a pretty standard first-round interview with a startup recently. We talked about the company, the role, and my experience &#8212; it was a good conversation. Then, at the end, the recruiter surprised me with a coding challenge.</p><p>I was honest with him.</p><p>&#8220;Look, if I&#8217;d known there was a coding portion, I would have brushed up, but I haven&#8217;t written code since November. AI does all my coding now.&#8221;</p><p>He wasn&#8217;t ready for that answer. Honestly, neither was I.</p><p>But it made me realize something important. As a job seeker in 2026, I don&#8217;t know what I&#8217;m supposed to be preparing for&#8212;and I think a lot of us are in that same boat.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://insightsiterations.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://insightsiterations.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>The Mismatch Nobody&#8217;s Talking About</strong></h2><p>The role is changing faster than the interview process.</p><p>Companies are still testing for algorithm skills, whiteboard coding, and LeetCode-style problems. But in my actual job? <strong>I haven&#8217;t touched a keyboard to write code in months.</strong></p><p>AI writes the code. I design the system. I articulate the features. I review the output.</p><p>There&#8217;s a fundamental mismatch between what companies test for and what the job actually requires now. And that mismatch has forced me to ask a harder question:</p><p><em>What are the skills that actually matter?</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_!r3X6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r3X6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!r3X6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!r3X6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!r3X6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r3X6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7640646,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/193945353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!r3X6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!r3X6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!r3X6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!r3X6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eb9eff-de8c-4094-9f2e-c38c685f130b_5504x3072.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><strong>What the Right Interviews Look Like</strong></h2><p>In the interviews I&#8217;ve had recently, the ones that felt right weren&#8217;t coding tests. They were:</p><ul><li><p><strong>System design conversations</strong></p></li><li><p><strong>Architecture pattern discussions</strong></p></li><li><p><strong>How you structure an application</strong></p></li><li><p><strong>How do you guide an AI agent to build the right thing</strong></p></li></ul><p>Coding knowledge is still relevant&#8212;but not for writing code. It&#8217;s for <em>reviewing</em> it. For <em>directing</em> it.</p><h2><strong>Why AI Can&#8217;t See the Forest</strong></h2><p>Here&#8217;s what I&#8217;ve learned working with AI every day:</p><blockquote><p><em>AI can&#8217;t see the forest. It&#8217;s incredible at implementing the feature&#8212;it sees the trees&#8212;but it doesn&#8217;t know the existing patterns in your application. It doesn&#8217;t understand the architecture.</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_!U7yO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U7yO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!U7yO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!U7yO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!U7yO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U7yO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7602700,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/193945353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!U7yO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!U7yO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!U7yO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!U7yO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe2e925-459b-44ce-b7e7-a7b15079db8f_5504x3072.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>You can tell it. I do that in Claude every day. But it&#8217;s <em>my job</em> to hold that vision.</p><p>That&#8217;s the gap. That&#8217;s the new engineering role.</p><p>The human&#8217;s job is to:</p><ol><li><p><strong>Communicate the architecture</strong> clearly</p></li><li><p><strong>Guide the agents</strong> toward the right pattern</p></li><li><p><strong>Make sure the pieces fit together</strong></p></li></ol><p>AI writes the code. I make sure it&#8217;s the <em>right</em> code.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ISQE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ISQE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ISQE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ISQE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ISQE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ISQE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5982792,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/193945353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ISQE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ISQE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ISQE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ISQE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ad6b6e8-ba03-424d-826f-b26672f7a0f8_5504x3072.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><strong>The Role That&#8217;s Emerging</strong></h2><p>So when I think about what I&#8217;m preparing for now, I&#8217;m not preparing for coding tests anymore.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GoK5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GoK5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GoK5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GoK5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GoK5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GoK5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6218849,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/193945353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GoK5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GoK5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GoK5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GoK5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2e4007-f092-4b27-9ca8-f3a6636e2189_5504x3072.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>I&#8217;m focusing on:</p><ul><li><p><strong>System design</strong> and how to think about complex applications</p></li><li><p><strong>Architecture patterns</strong> and when to apply them</p></li><li><p><strong>Clear articulation</strong>&#8212;how to describe what I want precisely enough that an agent can build it</p></li></ul><p>If a company wants me to grind LeetCode-style problems and whiteboard algorithms, we&#8217;re not aligned on what the role is.</p><p>Because the role I&#8217;m preparing for&#8212;the role I think is emerging&#8212;isn&#8217;t &#8220;engineer who codes.&#8221;</p><p>That role is gone. That role was five years ago.</p><p>The new role is an engineer who designs systems and directs AI to build them<strong>.</strong></p><h2><strong>What This Means for You</strong></h2><p>If you&#8217;re a job seeker right now, you&#8217;re caught in the same transition I am.</p><p>The market hasn&#8217;t caught up yet. Some companies still test for the old skills, but the actual work is shifting&#8212;and fast.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dANh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dANh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dANh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dANh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dANh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dANh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7185163,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/193945353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dANh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dANh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dANh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dANh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F109386aa-71a2-464c-8efa-afa28d7241e0_5504x3072.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><strong>Don&#8217;t feel bad if you haven&#8217;t been coding.</strong> That&#8217;s not the skill gap.</p><p>Instead, focus on:</p><ul><li><p><strong>System design</strong> fundamentals</p></li><li><p><strong>Architecture</strong> and how applications fit together</p></li><li><p><strong>Communication skills</strong> for working with AI agents</p></li></ul><p>The role is changing. Make sure you&#8217;re prepared for the role that&#8217;s coming, not the one that&#8217;s disappearing.</p><h2><strong>My New Approach</strong></h2><p>I don&#8217;t know if I failed that interview or if that interview failed to test for the right thing.</p><p>But I know this: <strong>I&#8217;m not grinding LeetCode anymore.</strong></p><p>It just doesn&#8217;t make sense. It feels like a waste of my time. Instead, I&#8217;m building the skills for the role I actually want.</p><div><hr></div><p>Have you been in an interview recently that felt misaligned with the actual work you do? I&#8217;m curious if I&#8217;m the only one feeling this shift.</p><p><em>If this resonated, I&#8217;ve got more content on AI engineering and how the space is evolving. <a href="https://chuckconway.substack.com/">Subscribe to my newsletter</a> so you don&#8217;t miss what&#8217;s coming next.</em></p>]]></content:encoded></item><item><title><![CDATA[From 8 Hours to 47 minutes - 12 Proven AI Coding Strategies to Make You More Productive]]></title><description><![CDATA[AI built a feature in 47 minutes, which would have taken me 8 hours of work a few years ago.]]></description><link>https://insightsiterations.com/p/from-8-hours-to-47-minutes-12-proven</link><guid isPermaLink="false">https://insightsiterations.com/p/from-8-hours-to-47-minutes-12-proven</guid><dc:creator><![CDATA[Chuck Conway]]></dc:creator><pubDate>Wed, 03 Dec 2025 07:23:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Qo7F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qo7F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qo7F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qo7F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qo7F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qo7F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qo7F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:583825,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/180575121?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qo7F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qo7F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qo7F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qo7F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6168364-5164-4966-b550-434a739af4cb_1376x768.jpeg 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>AI built a feature in 47 minutes, which would have taken me 8 hours of work a few years ago. But here&#8217;s what nobody tells you: without the right strategies, that same AI will waste three hours building the wrong thing.</p><p>Hi, I&#8217;m Chuck, and I&#8217;ve been writing code for 30 years. In 2023, I realized I had to either embrace AI or find a new career. I chose to embrace it. Since then, I&#8217;ve built a dozen applications using coding agents, and today I&#8217;m sharing every strategy learned with you.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insightsiterations.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">Insights &amp; Iterations is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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>AI changes everything, most notably, it speeds everything up. What took a day now takes an hour.</p><p>The speed means a few things:</p><p><strong>First</strong>, your feedback cycle is much faster, errors and wrong directions surface faster, and getting to success surfaces faster. </p><p><strong>Second</strong>, a lot of code is now throwaway. It&#8217;s cost-effective primarily to write and discard rather than to write and refactor. </p><p><strong>Third</strong>, software development potholes that took years to run into now surface in weeks or months. </p><p><strong>Fourth</strong>, without guidance, AI quickly goes off the rails and over the cliff. </p><p>In my time using coding agents like Cursor, I&#8217;ve discovered 12 strategies that help keep AI from going over the cliff.  These were learned the hard way, by trial and error.</p><h2>1. Use the Agent.md</h2><p>One of the many things I noticed about LLMs is that they all want to add &#8220;fallbacks.&#8221; </p><p>Fallbacks are conditional code that executes when the first condition fails. This is great when your code is going to Mars, but most code isn&#8217;t going to Mars, certainly not mine. To make matters worse, Fallbacks are inherently buggy and aren&#8217;t needed most of the time.</p><p>This is where an Agent.md file comes in. You can instruct the LLM not to use fallbacks. In fact, you can tell it to do anything. Anything you would add to a prompt can be added to the Agent.md. The file is automatically added to each new context.</p><p>At the moment, each coding agent has their own agent.md file. Cursor calls their&#8217;s .cursorrules, Claude Code calls their&#8217;s claude.md. I suspect that in the near future, coding agents will standardize on a common name. </p><p>In my Agent.md, I define the software patterns, the testing strategy, and the architecture I want to use. Anything I find the agent doing repeatedly due to a lack of context or direction, I add to the file.</p><p>Here&#8217;s a <a href="https://github.com/steipete/agent-rules">link</a> to a repository of agent rules. </p><p>Once your Agent.md file is set up, you&#8217;ll want to use AI unhindered.</p><h2>2. Going Full Throttle</h2><p>Both Claude Code and Cursor AI start in a &#8220;safe mode&#8221; out of the box. Safe mode requires permission for each tool call. After a few minutes of approving EVERY tool call, I was done with safe mode. </p><p>Fortunately, each Coding Agent allows you to opt out of &#8220;safe mode&#8221;. The risk is that AI can go off and do undesirable things, but in the time I&#8217;ve used coding agents, I&#8217;ve never had it do anything irreversible. </p><p>I do keep an eye on what the LLM is doing, but I don&#8217;t feel comfortable walking away from the Coding Agent just yet.</p><p>Honestly, unless you&#8217;re asking the LLM to work on live production code, and I don&#8217;t know why you&#8217;d want safe mode.</p><p>Now that you&#8217;ve freed your coding agent, we need to define the problem.</p><h2>3. Defining your problem</h2><p>AI is a literalist. You get what you ask for, which means vague prompts produce vague results.</p><p>I&#8217;ve found that providing AI with detailed requirements and asking for an &#8220;assessment&#8221; gets the best results. This allows AI to look for gaps in the design and respond with follow-up questions. After a couple of back-and-forths, you&#8217;ll have a solid plan. </p><p>In recent releases, both Cursor and Claude Code have added &#8220;Plan Mode,&#8221; which formalizes the above process. </p><p>I take it a step further and have another LLM review the plan. For example, I use ChatGPT for the first AI assessment. It generates a markdown doc with all the requirements. I then give that document to Claude for feedback, and Claude&#8217;s second review always finds missed gaps.</p><p>This is a taste thing, but AI tends to over-architect for me. Again, AI seems to think the code is on its way to Mars. </p><p>Once you&#8217;ve settled on a plan, ask AI to save it to a document in your project.</p><p>Which brings me to the next point.</p><h2>4. Create a Phased Plan</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lUN0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lUN0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lUN0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lUN0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lUN0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lUN0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:415315,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/180575121?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lUN0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lUN0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lUN0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lUN0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2aa7cc-a72e-4939-9174-d9ac2a1595b4_1376x768.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>After you&#8217;ve created a plan, ask AI to break the work up into phases. You want small units of work; the smaller the better. The smaller the unit, the higher the chance of success.</p><p>Some coding agents do this out of the box, but if they don&#8217;t, ask them to.</p><p>The best plan will still fail if you can&#8217;t track progress. This is where checklists come in.</p><h2>5. Ask for a Checklist</h2><p>Ask AI for a checklist and tell it you need one to track progress. Many of the coding agents have added the checklist to the agent prompt and ui, but sometimes I still need a checklist to track progress or track long-running work. </p><p>The checklist also gives AI something to measure itself against, so it knows when it&#8217;s done. </p><p>Checklists are great, but how do we span contexts with checklists? This is where our handoff document comes in.</p><h2>6. Create a Handoff Document</h2><p>What is a handoff document?</p><p>A handoff document is a high-level description of the application. Its purpose is to bring an empty context up to speed on your application&#8217;s domain, code, and architecture. </p><p>Ideally, the agent picks up in stride, where the previous context left off.</p><p>In my Agents.MD, I instruct the agent to update my handoff document with high-level changes. What we don&#8217;t want is every detail in the document; I need a high-level summary, and I let AI determine what is.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gp-v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gp-v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Gp-v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Gp-v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Gp-v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gp-v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:624361,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/180575121?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Gp-v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Gp-v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Gp-v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Gp-v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15211d31-3e61-4311-9560-9ea46f1c9f26_1376x768.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></p><p>My workflow goes a bit like this:</p><p>Each time I started a new context, I included my handoff document and instructed AI on the new feature. AI picks up the task and begins working like it&#8217;s been on the project for 6 months.</p><p>The handoff document is great for smaller applications, but in larger applications, it consumes too many tokens and isn&#8217;t practical. I&#8217;m considering other options, such as a vector database or a graph database.</p><p>But I&#8217;m still experimenting.</p><p>I&#8217;d love to hear how you&#8217;re approaching this problem. Leave a comment below.</p><p>Even with checklists and a handoff document, AI makes mistakes. This is where commits come in.</p><h2>7. Check in Often</h2><p>Make small commits.  Small commits let you revert to a known good state. I&#8217;ve found that sometimes AI goes down the rabbit hole, and there is no recovery. </p><p>Just reset. </p><h2>8. Reset the Context</h2><p>Be ruthless in resetting the context. </p><p>Sometimes AI goes down the wrong path or makes a mistake, eject and start over. When all of your documents are in order, it&#8217;s a breeze to start a new context. This is the brilliance of the handoff document.</p><p>But I&#8217;ll be honest, when working with AI &#8211; I humanize AI because it feels like I&#8217;m working with another human, and hitting that reset button sometimes tugs at my humanity. </p><p>One way to limit the rabbit-holes is through testing.</p><h2>9. Testing</h2><p>When I was a software engineer, testing sucked. Writing testing code is some of the most mundane work for a software engineer. </p><p>With AI, there is no reason you shouldn&#8217;t be testing your code. AI will write all the tests for you. In fact, you can specify 80% test coverage in the agent.md, and the coding agent magically adds the tests.</p><p>I&#8217;ve found testing beneficial; beyond the quality component, it gives AI a structure to validate its work. This leads to higher-quality code and better use of AI. </p><p>A word of caution, I often have AI make code changes without updating the tests. After the code is working, I ask AI to update the tests.  Sometimes AI takes the tests too seriously and changes production code to match the tests, undoing all the changes we just made.</p><p>Another way I&#8217;ve found to improve quality is through automation.</p><h2>10. Automate, Automate, Automate</h2><p>Make things as easy as possible. </p><p>Before AI, I&#8217;d often heard: &#8220;One-touch deployments, that would be great, but we don&#8217;t have the time.&#8221; Now there is no excuse, AI will automate everything for you.</p><p>My goal is to have every action be a single command. For example:</p><p>- If I want to start the application? ./start.sh. </p><p>- I want to run the tests. ./test.sh. </p><p>- Deploy the application? You guessed it ./deploy.sh</p><p>Automation serves two purposes: </p><p>- First, it saves you time. </p><p>- Second, it removes human error from the process.</p><p>Any place there is friction and multiple steps, I want to automate it away. But to solve the more complex problems, I sometimes need more capable LLMs.</p><h2>11. Use the Best LLM</h2><p>Don&#8217;t skimp on model performance. The latest models are expensive, but in an effort to save money, they might end up costing you. </p><p>Occasionally, Cursor recommends using Auto mode to save tokens. Ok, that sounds good, what could go wrong? I&#8217;m always open to saving money. So I turned it on and implemented a feature. It turned into a disaster. I spent the next 3 hours unwinding the mess using the latest models, and it cost twice as much as I would have paid if I hadn&#8217;t used auto mode. My point isn&#8217;t that auto mode is bad; it&#8217;s that working on complex problems requires the best models.</p><p>But sometimes, even the best models aren&#8217;t enough; you need the right tools.</p><h2>12. Tools</h2><p>Think of AI as the brain; it thinks, but it can&#8217;t do anything. This is the power of a tool. It gives AI the ability to act. </p><p>I put coding agent tools into two classes: </p><p>First are tools designed to enhance software development. Think of GitHub&#8217;s MCP or Anthropic&#8217;s Sequential Thinking MCP; these tools generally make coding agents more capable.</p><p>Second are tools that interact with the project. For example, a database MCP or a command-line tool. These tools enable coding agents to write code, run it, and test the results, completing a full feedback cycle. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sToF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sToF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sToF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sToF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sToF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sToF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:564158,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://insightsiterations.com/i/180575121?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sToF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sToF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sToF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sToF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a2be49-21d9-46d3-bcf3-62b087bb381d_1376x768.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></p><p>The brilliant thing about AI is that if you need a tool and there isn&#8217;t one, AI can create it for you. </p><p>Here are the tools I use with Cursor:</p><p>The first tool is called <strong><a href="https://github.com/oraios/serena">Serena</a></strong>. Serena attempts to offload tasks like reading files and saving data to memory that would normally have AI generate commands to execute the operation. The goal of this project is to reduce the number of tokens used and keep common operations local. </p><p>The next tool I use is called <strong><a href="https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking">Sequential Thinking</a></strong> by Anthropic. If it&#8217;s by Anthropic, it&#8217;s almost guaranteed to be good. What this tool does is break down complex problems into manageable steps. It adds dynamic and reflective problem-solving through a structured thinking process. </p><p>The last tool I use is project-specific; it&#8217;s called <strong>Neo4j MCP</strong>, and AI created it. It&#8217;s been invaluable in working with Neo4j. Before, AI would ask me to run queries and then paste the results into the chat. This became cumbersome very quickly. With the tool, AI runs its own queries, and no human intervention is needed. </p><p>It&#8217;s beautiful, and it&#8217;s quicker. If you find friction in your development process, ask AI to help; you might be surprised what comes up.</p><h2>In Closing</h2><p>Let&#8217;s be honest here, working with Coding Agents feels a lot like pairing with a brilliant junior programmer who occasionally forgets everything we just told them. These 12 strategies are how I manage this relationship. And they might not work for everyone, or you, and that&#8217;s ok. Find what works for you. </p><p>So my question to you is: What&#8217;s working for you? Drop a comment below and let me know.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insightsiterations.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">Insights &amp; Iterations is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[4 Ways I'm Preparing My 3-Year-Old for an AI World]]></title><description><![CDATA[Last week, I watched my three-year-old daughter talk to Siri on her iPad.]]></description><link>https://insightsiterations.com/p/4-ways-im-preparing-my-3-year-old</link><guid isPermaLink="false">https://insightsiterations.com/p/4-ways-im-preparing-my-3-year-old</guid><dc:creator><![CDATA[Chuck Conway]]></dc:creator><pubDate>Sat, 26 Jul 2025 07:20:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k-fP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k-fP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k-fP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k-fP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k-fP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k-fP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k-fP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg&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;:1517163,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://chuckconway.substack.com/i/169288024?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k-fP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k-fP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k-fP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k-fP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb5a6b27-6a1e-4729-914a-30b512695867_6720x4480.jpeg 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>Last week, I watched my three-year-old daughter talk to Siri on her iPad. I wasn&#8217;t sure what to think. Should she be talking to AI at such a young age?</p><p>A new study from MIT shows that using AI can weaken critical thinking. Here is how I&#8217;m preparing my daughter for a world with AI, and why I think AI is like processed food.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insightsiterations.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">Insights &amp; Iterations is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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>The Study</strong></h2><p>MIT sought to answer the question: &#8220;What is the cognitive cost of using AI when writing an essay?&#8221;</p><p>Fifty-five participants ranging from 18 to 54 years old, with an average age of 23.</p><p>The participants were broken up into three groups:</p><ul><li><p><strong>The Brain Only</strong> - no tools</p></li><li><p><strong>The Search Engine</strong> - access to a search engine</p></li><li><p><strong>The LLM Group</strong> - access to ChatGPT</p></li></ul><p>Each participant had 20 minutes to write one essay.</p><p>How did each group fare? Let's look at the results.</p><h2><strong>The Results</strong></h2><p>Both the Brain Only and the Search Engine Group had similar results. However, the LLM Group fared much worse on recall and critical thinking tests.</p><p>Why? Because The Brain Only and The Search Engine Groups organically wrote their essays, and had intimate knowledge of the content. Conversely, the LLM Group participants copied and pasted their answers directly from ChatGPT. When asked why, the LLM Group said they felt pressured by the 20-minute time limit.</p><p>The results? LLMs weaken critical thinking. In some young adults, critical thinking has never developed. Relying solely on AI for critical thinking left participants gullible and lacking in creativity.</p><h2><strong>AI is Processed Food for the Brain</strong></h2><p>After reading the study, I now watch my daughter&#8217;s interactions with AI differently. I&#8217;m more aware of the conversations and the need to put guardrails on those conversations. I view AI similarly to how I view processed foods; it&#8217;s not malicious, but it can still be harmful over time if used incorrectly.</p><p>So, how do I prepare my daughter for a world where she&#8217;ll be interacting with AI on a daily basis?</p><h2><strong>Four Strategies</strong></h2><p>My first reaction was forbidding my daughter access to AI, but that&#8217;s not realistic. So instead of banning AI, I need to find a balanced approach. But what does that look like?</p><p>I&#8217;ve identified four strategies to help my daughter navigate AI.</p><h3><strong>1. Mastery before Automation</strong></h3><p>My daughter must learn the skill before automating it.</p><p>An insight from the study reveals that understanding the subject and doing the work is key to expanding your knowledge and building critical thinking skills. AI&#8217;s instant answer doesn&#8217;t serve my daughter. When AI gives instant answers, the &#8220;ah ha or &#8220;why&#8221; is lost. Being told and experiencing it are vastly different, even though they end in the same place.</p><p>For example, she&#8217;ll need to learn math before using AI to solve math problems. Why? Because when she figures out 7x3, she&#8217;ll not only know the answer, but learn patterns that she can apply to other math problems. Using AI robs her of that insight.</p><p>This is the same approach that master woodworkers take with their apprentices. Apprentices must first master joinery before they create joints with power tools.</p><h3><strong>2. AI is Magical, but Fallible</strong></h3><p>What&#8217;s lost in all the AI hype is that AI is often wrong.</p><p>For example, AI recently included glue as a key ingredient in pizza when asked for the perfect pizza.</p><p>When my daughter has the knowledge, she can recognize when AI is wrong. But she needs the knowledge.</p><p>Knowledge layers like sediment settling in a pond &#8211; each &#8216;why&#8217;, every book, each moment of curiosity adds another layer. Leaving an accumulated understanding that lets her spot AI&#8217;s wrong answers.</p><h3><strong>3. Hard is OK</strong></h3><p>&#8216;Hard&#8217; is where growth happens. What the study showed is that those who did &#8216;hard'work grew in critical thinking skills and memory. Those who did &#8216;easy&#8217; lost critical thinking skills and couldn&#8217;t recall specifics. The study also showed that there is no middle ground. You&#8217;re either gaining or losing.</p><p>I can&#8217;t tell you how many times I&#8217;ve heard, &#8220;But Daddy, it&#8217;s tooo hard! Can you do it for me?&#8221; This is when I say, &#8220;Yes, it is hard, but that means you&#8217;re learning and growing.&#8221; To which she replies with, &#8220;But Daddy, I don&#8217;t want to grow right now.&#8221;</p><p>We live in an instant culture, and AI is yet another extension of it. Some things just take time - learning is one of those things.</p><p>When my daughter struggles with an activity, she becomes frustrated. I guide her in one of two directions:</p><ul><li><p>Help her overcome her challenge; sometimes, a little nudge in the right direction is all she needs.</p></li><li><p>Or &#8220;let&#8217;s step away for a few minutes&#8221; and come back to the activity; this break allows her to collect herself and return to the activity fresh.</p></li></ul><p>While my daughter isn&#8217;t quite old enough, another suggestion is using a &#8220;struggle jar.&#8221; Put hard-earned wins or almost wins in the jar. And celebrate the process of struggling, even if they&#8217;re not successful.</p><h2><strong>4. AI is a Thinking Partner, Not a Replacement</strong></h2><p>AI is here, and it&#8217;s only getting more intertwined with our daily lives. Some might interpret the study&#8217;s results as a warning against using AI. That&#8217;s a wrong interpretation.</p><p>Much like processed foods, there&#8217;s a responsible way to use AI. Offloading your thinking to AI is the wrong way.</p><p>Think of AI as a study buddy who is sometimes wrong. The best study sessions are collaborative, where you question each other.</p><p>While my daughter is only three years old and this conversation is a few years away, I&#8217;m already thinking about what to say.</p><p>In my interactions with AI, I use a framework called &#8220;<strong>Think-Check-Create</strong>.&#8221; This helps me get the best out of AI without offloading my thinking to AI.</p><p><strong>THINK First</strong><br>Create the first draft. Think about the topic, the problem, and the possible solutions. The more you explore your idea, the stronger the foundation you&#8217;ll start with.</p><p><strong>CHECK with AI</strong><br>Ask for feedback on your first draft. Ask AI to qualify its answers. Challenge AI on it&#8217;s response. If needed, provide additional information for the conversation.</p><p><strong>CREATE Something New</strong><br>Combine what you learned from AI with your knowledge and create something new. Don&#8217;t copy AI&#8217;s responses, instead internalize them and write them in your voice, this forces you to make them your own.</p><p>Here is a simplified version:</p><p><strong>Think:</strong> &#8220;Brain first.&#8221;<br><strong>Check:</strong> &#8220;AI feedback.&#8221;<br><strong>Create:</strong> &#8220;Combine in your voice.&#8221;</p><p>For example:</p><p><strong>Think:</strong> Write all you know about elephants.<br><strong>Check:</strong> Ask AI for feedback on what you wrote and any facts about elephants you missed.<br><strong>Create:</strong> Combine the feedback from AI to create something new in your own words about elephants.</p><p>This makes AI a tool that helps my daughter think and grow, and not an AI crutch that weakens her.</p><h2><strong>Closing</strong></h2><p>AI is here.</p><p>It&#8217;s not whether our children will use AI, it&#8217;s a matter of when. The question is: will they use it as a <em>crutch</em> or a <em>tool</em>? The next time my daughter tells me: &#8220;It&#8217;s too hard Daddy!&#8221; I&#8217;ll remember that it means she&#8217;s learning and the best thing I can do is support her. This might be a small nudge over the finish line or taking a break and going for a walk.</p><p>References</p><ul><li><p><a href="https://readwise-assets.s3.amazonaws.com/media/wisereads/articles/your-brain-on-chatgpt-accumula/2506.08872v1.pdf">Your Brain on ChatGPT: Accumulation of Cognitive Debt when Using an AI</a></p></li><li><p>Claude used to critique and explore different idea threads</p></li><li><p><a href="https://autogenai.com/uk/blog/what-is-an-ai-hallucination/">https://autogenai.com/uk/blog/what-is-an-ai-hallucination/</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insightsiterations.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">Insights &amp; Iterations is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[3 Essential Steps to Take Before Leaving Your Job]]></title><description><![CDATA[At some point, most of us will switch jobs.]]></description><link>https://insightsiterations.com/p/3-essential-steps-to-take-before</link><guid isPermaLink="false">https://insightsiterations.com/p/3-essential-steps-to-take-before</guid><dc:creator><![CDATA[Chuck Conway]]></dc:creator><pubDate>Tue, 13 May 2025 05:04:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lxvJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lxvJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lxvJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!lxvJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!lxvJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!lxvJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lxvJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1397283,&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://chuckconway.substack.com/i/163451702?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.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_!lxvJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!lxvJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!lxvJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!lxvJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F776123de-abc1-460f-96e6-4a636f7d4a9b_1024x1024.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>At some point, most of us will switch jobs. Being unprepared when you leave can make finding your next opportunity much harder, but it doesn't need to be this way. I've found there are three important steps you should take before leaving your company that can save you a truckload of stress in your job search.</p><p>After spending multiple decades building software, I've experienced both quitting and being laid off. The advice I'm sharing comes from both my successes and mistakes along the way.</p><p>I understand that in some situations, when you're let go, you're asked to leave immediately. However, some companies allow you to wrap up your work and transfer knowledge to other employees. This remaining time is a great opportunity to start working on your stories and updating your resume in preparation for your job search.</p><h2>Step #1 - Document Your Job Descriptions and Impact</h2><p>The best time to document your impact and responsibilities is when you have access to the project and its documentation. Trust me, years down the road, you'll appreciate having these details.</p><p>I've had many positions over my career, and I can't remember everything I did at every company. I maintain a document I call "Experience Details" that outlines positions I've held. I try to capture:</p><ul><li><p>My official job responsibilities </p></li><li><p>Projects I led or contributed to</p></li><li><p>Measurable impacts (cost savings, efficiency improvements, etc.) </p></li><li><p>Technologies and methodologies I used </p></li><li><p>Challenges I overcame</p></li></ul><p>Don't just write "Improved database performance" &#8211; that's worthless. Instead, note specific metrics like response time improvements or reduced server load. These specific metrics will make your resume stand out and give you concrete talking points in interviews.</p><p>The purpose of this documentation is to refresh my memory when discussing my successes during interviews and on my resume. It also allows me to revisit my projects and identify responsibilities that weren't apparent at the time.</p><p>For example, I worked on a greenfield project where I created everything from the first line of code to setting up the production deployments. At the time, I framed the position as a Senior Software Engineer. But as I moved through my career and started to see myself as a Software Architect, I realized a lot of the work I did on that project was actually defining the software architecture.</p><p>I was able to revisit my work, reframe it as a Software Architecture position, and speak to that aspect in subsequent interviews.</p><h2>Step #2 - Ask Co-workers for References and Recommendations</h2><p>Identify team members who will give you recommendations and serve as your references. Companies always want to talk to previous co-workers about your performance and what it's like working with you. It's much easier to ask your co-workers while you work with them than reaching out after the fact.</p><p>Make sure you have 4 or 5 people willing to give you a good recommendation.</p><p>During one of my hiring cycles, I received an offer and provided 3 references.  However, when the hiring manager reached out, two references ghosted the hiring manager. And when I reached out they ghosted me also. Luckily, I had two other references who came through, and I landed the position.</p><p>Had I only secured those three references, I might have lost the opportunity. The lesson? Prepare for the unexpected &#8212; people's circumstances change, and your career shouldn't depend on any single person.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://insightsiterations.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://insightsiterations.com/subscribe?"><span>Subscribe now</span></a></p><h2>Step #3 - Say Proper Goodbyes</h2><p>People often overlook goodbyes, but you shouldn't. You don't know how you might encounter your former co-workers in the future. I've worked with the same co-workers across multiple jobs. Sometimes I'm the boss, and sometimes they are. The more goodwill you can build, the better.</p><p>I know some don't want a lot of attention, while others want to celebrate your time at the company with events like a team lunch. </p><p>I get it.</p><p>I once left a company, and my team took me out to dinner to celebrate my new "freedom." The waiter, seeing our jubilant crowd, asked what we were celebrating. Someone shouted out, "Chuck getting fired!" It was an awkward moment. I understand not wanting to be the center of attention.</p><p>My advice on goodbyes: Don't leave people hanging. They will notice you're gone and might be disappointed because they didn't have the opportunity to say goodbye. Give them that opportunity&#8212;it provides closure.</p><p>It's how I feel when I've found out someone's left without having the opportunity to say goodbye and wish them the best. </p><p>When I leave a company, I always say goodbye and offer to connect, usually via LinkedIn.</p><h2>Bonus Step</h2><p>Here's a bonus step: This isn't something you do when you're leaving, but rather as you change positions and responsibilities. Update your Experience Document every 6 months. This way, you can speak to your responsibilities on your resume or in your interviews, even if you're escorted out of the building with no warning.</p><h2>Bringing It All Together</h2><p>Whether you're leaving on your own terms or facing an unexpected layoff like I did, these three steps&#8212;documenting your impact, securing multiple references, and saying proper goodbyes&#8212;create a foundation for your next opportunity. The preparation I'm suggesting creates lasting career resilience.</p><p>Remember, career transitions happen to most people. It's not the transition itself but how prepared you are that determines what comes next.</p><h2>Moving Forward</h2><p>Building a strong professional network and maintaining good documentation of your achievements are ongoing practices that will serve you throughout your career journey.</p><p><em>Remember that preparation is key&#8212;the best time to prepare for your next position is while you're still in your current one.</em></p><div><hr></div><p><em>Author: Chuck Conway specializes in software engineering and AI Engineering. Connect with him on social media: <a href="https://x.com/chuckconway">X</a> or visit him on </em><a href="https://www.youtube.com/@charlesconway">YouTube</a>.</p><div><hr></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Can Dependency Injection Make Me a Better Python Programmer?]]></title><description><![CDATA[Dependency Injection is a main stay in static languages, but does it make sense to use it in Python?]]></description><link>https://insightsiterations.com/p/can-dependency-injection-make-me</link><guid isPermaLink="false">https://insightsiterations.com/p/can-dependency-injection-make-me</guid><dc:creator><![CDATA[Chuck Conway]]></dc:creator><pubDate>Mon, 17 Feb 2025 05:44:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!e3gS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e3gS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e3gS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e3gS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e3gS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e3gS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e3gS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102688,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!e3gS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e3gS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e3gS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e3gS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45a51c02-1bce-4685-920b-568c0beb971b_1280x720.jpeg 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>Dependency Injection is a main stay in static languages, but does it make sense to use it in Python? Will it make me a better Python programmer?</p><p>And, wait, what is dependency injection again?</p><p>First, let's answer the question: What is dependency injection (DI)?</p><p>Dependency injection is a pattern that, when used, moves the construction of an object outside of the class. Instead, the class takes a dependency on an abstraction.</p><p>In static languages like C# and Java, dependency injection is heavily used to reduce coupling and facilitate testing. In fact, you'll find dependency injection frameworks whose sole purpose is to maintain dependencies and their relationships to each other.</p><p>Dependency injection serves two main purposes:</p><p>First, it reduces complexity by taking a dependency on an abstraction.</p><p>Second, depending on an abstraction allows different implementations, including mocks for testing, to be passed into the class or function.</p><p>Let me demonstrate with some code:</p><pre><code># Before 
class User:
    def __init__(self):
        self.database = SqlServerDatabase()

    def get_details(self, user_id: int):
        self.database.get_user_details(user_id)

# After  
class User:
    def __init__(self, database: Database):
        self.database = database

    def get_details(self, user_id: int):
        self.database.get_user_details(user_id)</code></pre><p>This is dependency injection in its simplest form. While the concept is straightforward, its power lies in enabling flexible designs.</p><p>In the <code>Before</code> example, the <code>User</code> class is tightly coupled to the <code>SqlServerDatabase</code> class. If we want to test the `User` class, we need to create a new <code>SqlServerDatabase</code> instance.</p><p>In the <code>After</code> example, the <code>User</code> class is loosely coupled to the <code>Database</code> abstraction. We can pass in a different implementation of the <code>Database</code> abstraction to the <code>User</code> class.</p><p>Let me demonstrate this flexibility with a practical example that shows how we can switch between different database implementations:</p><pre><code>date_string = "2023-10-01"  # Example date string
date_format = "%Y-%m-%d"    # Input string format
birthday = datetime.strptime(date_string, date_format) 
turn_of_the_century = datetime.strptime('2000-01-01', date_format)

database = PostgresDatabase("")

if birthday &lt; turn_of_the_century:
    database = SqlServerDatabase("")

user = User(database=database)
user.get_details(user_id=1)</code></pre><p>On line 6 (<code>if birthday &lt; turn_of_the_century:</code>), dependency injection allows us to swap implementations easily based on the different conditions. While this flexibility is valuable for production code, one of the most common uses for dependency injection, especially in static languages, is in testing.</p><p>Here's an example:</p><pre><code>class UserTests(unittest.TestCase):
    def test_is_authenticated(self):
        database = MockDatabase('connection_string')
        
        is_authenticated = User(database).is_authenticated('user', 'pass')

        self.assertTrue(is_authenticated)</code></pre><p>This is a simple example using a <code>MockDatabase</code> class. In Python, we could also use the built-in <code>Mock</code> class to achieve the same outcome.</p><p>Interestingly, dependency injection wasn't widely used in the Python projects I've worked on. Coming from a static language background, I was surprised &#8212; and it seemed counterintuitive.</p><p>However, there's a reason for this limited adoption. Python's built-in patch functionality already provides excellent testing capabilities, eliminating one of dependency injection's main benefits. While Dependency Injection can still help reduce complexity, Python has other approaches to achieve the same goal.</p><p>I'm not saying that Dependency Injection shouldn't be used in Python. Quite the contrary, like all tools and patterns, there is a place and time to use them. And Dependency Injection is just another tool in your tool belt that will improve the quality of your code.</p><p>I think Dependency Injection would generally increase the code quality in most Python projects.</p><p>If you're interested in exploring Dependency Injection further, I recommend checking out two popular Python frameworks:</p><ul><li><p>Injector (github.com/python-injector/injector)</p></li><li><p>Dependency Injector (python-dependency-injector.ets-labs.org)</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://insightsiterations.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://insightsiterations.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[5 Ways to Boost Your Coding Productivity with Generative AI]]></title><description><![CDATA[As a Software Craftsman with years of experience in the field, I've witnessed the impact of Generative AI on software development since the introduction of ChatGPT in 2023.]]></description><link>https://insightsiterations.com/p/5-ways-to-boost-your-coding-productivity</link><guid isPermaLink="false">https://insightsiterations.com/p/5-ways-to-boost-your-coding-productivity</guid><dc:creator><![CDATA[Chuck Conway]]></dc:creator><pubDate>Fri, 31 Jan 2025 08:15:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2P1m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2P1m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2P1m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2P1m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2P1m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2P1m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2P1m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg&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;:80240,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2P1m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2P1m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2P1m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2P1m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90db4b19-ab29-4a51-bd54-9fc79130131b_1920x1280.jpeg 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>As a Software Craftsman with years of experience in the field, I've witnessed the impact of Generative AI on software development since the introduction of ChatGPT in 2023. Through practical application, I've identified five powerful ways to leverage this technology to enhance productivity.</p><h2>1. Enhanced Code Search</h2><p>The most frequent way I utilize Generative AI is to search for technical information. Traditional search engines require precise terminology, while Generative AI understands concepts and context. For instance, when searching for the principle of method parameter optimization, I ask:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insightsiterations.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">Chuck Conway is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><em>Prompt</em></p><pre><code><code>What's the name of the programming concept where you should only pass parameters that are actually used by the method? Passing parameters to a method that aren't used by the method creates unneeded dependencies. </code></code></pre><p>Generative AI understands the concept I'm describing (Law of Demeter) and provides the correct answer, eliminating the need for multiple searches.</p><h2>2. Efficient Code Generation</h2><p>Generative AI excels at automating repetitive coding tasks. Recently, I needed to convert a large JSON file into database insert statements. Instead of writing tedious conversion code, I provided the JSON data to the AI with clear instructions for generating MS SQL Server insert statements. This approach saved hours of manual coding time and reduced the possibility of errors.</p><p><em>Prompt:</em></p><pre><code><code>Use the JSON data provided below and generate insert statements for MS SQL Server to be inserted into the dbo.Users table.
</code></code></pre><pre><code><code>
[  
{  
"Username": "musiclover87",  
"Lastname": "Smith",  
"Firstname": "Alice",  
"Birthdate": "1987-06-12",  
"Password": "password123",  
"FavoriteIceCream": "Chocolate Chip Cookie Dough",  
"FavoriteSuperhero": "Spider-Man"  
},  
{  
"Username": "bookworm92",  
"Lastname": "Johnson",  
"Firstname": "Bob",  
"Birthdate": "1992-03-21",  
"Password": "securePassword",  
"FavoriteIceCream": "Mint Chocolate Chip",  
"FavoriteSuperhero": "Batman"  
},  
{  
"Username": "gamergirl01",  
"Lastname": "Williams",  
"Firstname": "Carol",  
"Birthdate": "2001-11-05",  
"Password": "gamer4life",  
"FavoriteIceCream": "Strawberry",  
"FavoriteSuperhero": "Wonder Woman"  
},  
{  
"Username": "techieguy95",  
"Lastname": "Brown",  
"Firstname": "David",  
"Birthdate": "1995-08-18",  
"Password": "techmaster",  
"FavoriteIceCream": "Vanilla Bean",  
"FavoriteSuperhero": "Iron Man"  
},  
{  
"Username": "foodiequeen89",  
"Lastname": "Davis",  
"Firstname": "Emily",  
"Birthdate": "1989-04-29",  
"Password": "delicious123",  
"FavoriteIceCream": "Salted Caramel",  
"FavoriteSuperhero": "Captain Marvel"  
},  
{  
"Username": "traveler76",  
"Lastname": "Miller",  
"Firstname": "Frank",  
"Birthdate": "1976-12-02",  
"Password": "adventuretime",  
"FavoriteIceCream": "Coffee",  
"FavoriteSuperhero": "Thor"  
},  
{  
"Username": "fitnessfanatic98",  
"Lastname": "Wilson",  
"Firstname": "Grace",  
"Birthdate": "1998-09-15",  
"Password": "strongandfit",  
"FavoriteIceCream": "Mango Sorbet",  
"FavoriteSuperhero": "Black Widow"  
},  
{  
"Username": "photographylover85",  
"Lastname": "Moore",  
"Firstname": "Henry",  
"Birthdate": "1985-05-23",  
"Password": "pictureperfect",  
"FavoriteIceCream": "Pistachio",  
"FavoriteSuperhero": "Superman"  
},  
{  
"Username": "musicjunkie93",  
"Lastname": "Taylor",  
"Firstname": "Isabella",  
"Birthdate": "1993-02-08",  
"Password": "musicislife",  
"FavoriteIceCream": "Rocky Road",  
"FavoriteSuperhero": "Black Panther"  
},  
{  
"Username": "sportsfanatic88",  
"Lastname": "Anderson",  
"Firstname": "Jack",  
"Birthdate": "1988-10-30",  
"Password": "goteamgo",  
"FavoriteIceCream": "Cookies and Cream",  
"FavoriteSuperhero": "Captain America"  
}  
]
</code></code></pre><p><em>Output:</em></p><pre><code><code>
-- Inserting records into dbo.Users table

INSERT INTO dbo.Users (Username, Lastname, Firstname, Birthdate, Password, FavoriteIceCream, FavoriteSuperhero)
VALUES 
('musiclover87', 'Smith', 'Alice', '1987-06-12', 'password123', 'Chocolate Chip Cookie Dough', 'Spider-Man'),
('bookworm92', 'Johnson', 'Bob', '1992-03-21', 'securePassword', 'Mint Chocolate Chip', 'Batman'),
('gamergirl01', 'Williams', 'Carol', '2001-11-05', 'gamer4life', 'Strawberry', 'Wonder Woman'),
('techieguy95', 'Brown', 'David', '1995-08-18', 'techmaster', 'Vanilla Bean', 'Iron Man'),
('foodiequeen89', 'Davis', 'Emily', '1989-04-29', 'delicious123', 'Salted Caramel', 'Captain Marvel'),
('traveler76', 'Miller', 'Frank', '1976-12-02', 'adventuretime', 'Coffee', 'Thor'),
('fitnessfanatic98', 'Wilson', 'Grace', '1998-09-15', 'strongandfit', 'Mango Sorbet', 'Black Widow'),
('photographylover85', 'Moore', 'Henry', '1985-05-23', 'pictureperfect', 'Pistachio', 'Superman'),
('musicjunkie93', 'Taylor', 'Isabella', '1993-02-08', 'musicislife', 'Rocky Road', 'Black Panther'),
('sportsfanatic88', 'Anderson', 'Jack', '1988-10-30', 'goteamgo', 'Cookies and Cream', 'Captain America');</code></code></pre><h2>3. Seamless Code Translation</h2><p>Code translation is another area where Generative AI proves invaluable. During a recent project to convert a C# application to Python, we utilized AI in two crucial ways:</p><ol><li><p>Direct function conversion from Python to C#</p></li><li><p>Complex ORM translation from Entity Framework to SQLAlchemy</p></li></ol><p>This capability significantly accelerated our migration process and ensured consistency across translations.</p><p>Converting Python to C#:</p><p><em>Prompt:</em></p><pre><code><code>Convert the following Python code to C#.</code></code></pre><pre><code><code>def reverse_string(text): 
"""
Reverses a given string. 
&#9;Args: text: The string to be reversed. 

Returns: The reversed string.

""" 
return text[::-1]
</code></code></pre><p><em>Output:</em></p><pre><code><code>/// &lt;summary&gt;
/// Reverses a given string.
/// &lt;/summary&gt;
/// &lt;param name="text"&gt;The string to be reversed.&lt;/param&gt;
/// &lt;returns&gt;The reversed string.&lt;/returns&gt;
public static string ReverseString(string text)
{
&#9;return new string(text.Reverse().ToArray());
}</code></code></pre><h2>4. Automated Code Documentation</h2><p>Documentation is essential but often tedious. Generative AI streamlines this process in two ways:</p><ol><li><p>Code summarization: Analyzing existing code and providing clear, concise summaries</p></li><li><p>Documentation header generation: Creating comprehensive method documentation that maintains code quality standards</p></li></ol><p>For example, when documenting sorting algorithms or complex business logic, AI can generate clear, accurate documentation that follows team standards and best practices.</p><p><em>Prompt:</em></p><pre><code><code>Generate a doc header for the below function adding the header and printing the complete function with the doc header.</code></code></pre><pre><code><code>def bubble_sort(list_):
  n = len(list_) 
  for i in range(n):
    # Flag to optimize, if no swaps occur, the list is sorted
    swapped = False
    # Last i elements are already in place
    for j in range(0, n-i-1):
      # Swap if the element found is greater than the next element
      if list_[j] &gt; list_[j+1]:
        list_[j], list_[j+1] = list_[j+1], list_[j]
        swapped = True
    # If no two elements were swapped in inner loop, the list is sorted
    if not swapped:
      break
  return list_
</code></code></pre><p><em>Output:</em></p><pre><code><code>def bubble_sort(list_):
    """
    Sorts a given list using the Bubble Sort algorithm.

    Args:
        list_: The list of elements to be sorted. Elements must be comparable.

    Returns:
        A new list containing all elements from the original list in ascending order.
        
    Example:
        &gt;&gt;&gt; bubble_sort([64, 34, 25, 12, 22, 11, 90])
        [11, 12, 22, 25, 34, 64, 90]
    """
    n = len(list_) 
    for i in range(n):
        # Flag to optimize, if no swaps occur, the list is sorted
        swapped = False
        # Last i elements are already in place
        for j in range(0, n-i-1):
            # Swap if the element found is greater than the next element
            if list_[j] &gt; list_[j+1]:
                list_[j], list_[j+1] = list_[j+1], list_[j]
                swapped = True
        # If no two elements were swapped in inner loop, the list is sorted
        if not swapped:
            break
    return list_</code></code></pre><h2>5. Application Scaffolding</h2><p>Perhaps the most impressive application of Generative AI is its ability to generate initial application structures. Given a clear schema or specification, AI can create:</p><ul><li><p>Database creation scripts</p></li><li><p>ORM mappings</p></li><li><p>Basic API endpoints</p></li><li><p>Initial UI implementations</p></li></ul><p>This capability significantly reduces the time spent on boilerplate code and ensures a consistent foundation for further development.</p><p><em>Prompt:</em></p><pre><code><code>You are a Software Engineer working at a large corporation. Using the following database schema, generate the SQL scripts necessary to create these tables in Postgres. Then, generate the SQL Alchemy mapping files to use with FastAPI. Lastly, generate a simple web UI using FastAPI to list the orders.</code></code></pre><pre><code><code>User
- UserId
- FirstName
- LastName
- Address
- Address2
- City
- State
- ZipCode
- Username
- Password
- IsActive

Client
- ClientId
- Name
- Address
- Address2
- City
- State
- ZipCode
- IsActive

Order
- OrderId
- OrderDate
- InvoiceNumber
- DueDate
- ClientId
- UserId

OrderDetail
- OrderDetailId
- OrderId
- Description
- Rate
- Quantity
- LineTotal

Ledger
- TransactionId
- Debit
- Credit
- OrderId
- TransactionDate</code></code></pre><p><em>Output:</em></p><pre><code><code>...
I'm saving you from the output, but it generated an entire application using FastAPI.
...</code></code></pre><p>Let&#8217;s ask what we can do to improve upon the initial design.</p><p><em>Prompt 2:</em></p><pre><code><code>That's a great start. What can we do to improve the application design?</code></code></pre><p><em>Output:</em><br>Implement logging for better debugging and error handling.</p><p>logging.py <strong>(Optional)</strong></p><pre><code><code>import logging

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)

def log_error(error):
    logger.error(f"An error occurred: {error}")</code></code></pre><p><em>Prompt 3:</em></p><pre><code><code>Can you implement your suggestion to use Error Handling and generate the code for me?</code></code></pre><p><em>Output:</em><br>You can also define global exception handlers in your <code>main.py</code> file if you want to handle specific exceptions globally.</p><p><code>main.py</code></p><pre><code><code>from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
import app.routers.order_router as order_router
from .exceptions import OrderNotFoundException, InvalidInvoiceNumberException

app = FastAPI()

# Include the router
app.include_router(order_router.router)

@app.exception_handler(OrderNotFoundException)
async def order_not_found_exception_handler(request: Request, exc: OrderNotFoundException):
    return JSONResponse(
        status_code=exc.status_code,
        content={"detail": exc.detail},
    )

@app.exception_handler(InvalidInvoiceNumberException)
async def invalid_invoice_number_exception_handler(request: Request, exc: InvalidInvoiceNumberException):
    return JSONResponse(
        status_code=exc.status_code,
        content={"detail": exc.detail},
    )
</code></code></pre><h2>Best Practices and Considerations</h2><p>While Generative AI is powerful, it's important to:</p><ul><li><p>Review and validate generated code</p></li><li><p>Maintain consistency with existing codebases</p></li><li><p>Consider security implications</p></li><li><p>Test generated code thoroughly</p></li><li><p>Use AI as an assistant rather than a replacement for engineering judgment</p></li></ul><h2>Conclusion</h2><p>Generative AI has become an indispensable tool in modern software development. By leveraging these five approaches - enhanced searching, code generation, translation, documentation, and application scaffolding - developers can significantly increase their productivity while maintaining code quality.</p><p>The key is understanding these tools' capabilities and limitations and strategically using them to enhance rather than replace human expertise. As these technologies evolve, their integration into development workflows will become increasingly valuable.</p><div><hr></div><p><em>Author's Note: Chuck Conway specializes in software engineering and AI. Connect with him on social media: <a href="https://x.com/chuckconway">X(@chuckconway)</a> or visit him on <a href="https://www.youtube.com/@charlesconway">YouTube</a>.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://insightsiterations.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">Chuck Conway is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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></channel></rss>