<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Code Generation on MacWorks</title><link>https://macworks.dev/tags/code-generation/</link><description>Recent content in Code Generation on MacWorks</description><generator>Hugo</generator><language>en</language><atom:link href="https://macworks.dev/tags/code-generation/index.xml" rel="self" type="application/rss+xml"/><item><title>Engineer Reads</title><link>https://macworks.dev/docs/week/blogs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://macworks.dev/docs/week/blogs/</guid><description>&lt;h1 id="engineering-reads--week-of-2026-04-02-to-2026-04-10"&gt;Engineering Reads — Week of 2026-04-02 to 2026-04-10&lt;a class="anchor" href="#engineering-reads--week-of-2026-04-02-to-2026-04-10"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="week-in-review"&gt;Week in Review&lt;a class="anchor" href="#week-in-review"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This week&amp;rsquo;s reading reflects a fundamental inflection point: raw LLM intelligence is no longer the bottleneck in software development. Instead, the industry is pivoting toward the hard systems engineering required to constrain probabilistic models—whether through strict data ledgers, living specifications, or formal verification harnesses. The dominant debate centers on how we preserve architectural taste, mechanical sympathy, and system ethics as the mechanical act of writing code becomes increasingly commoditized.&lt;/p&gt;</description></item><item><title>2026-04-09</title><link>https://macworks.dev/docs/week/blogs/engineer-blogs-2026-04-09/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://macworks.dev/docs/week/blogs/engineer-blogs-2026-04-09/</guid><description>&lt;h1 id="engineering-reads--2026-04-09"&gt;Engineering Reads — 2026-04-09&lt;a class="anchor" href="#engineering-reads--2026-04-09"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="the-big-idea"&gt;The Big Idea&lt;a class="anchor" href="#the-big-idea"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AI is shifting the bottleneck of software engineering from writing syntax to exercising taste and defining specifications. Whether it&amp;rsquo;s iterating on high-level specs for autonomous agents, evaluating generated APIs, or ruthlessly discarding over-engineered platforms for boring architecture, the defining engineering skill is now human judgment, not raw keystrokes.&lt;/p&gt;
&lt;h2 id="deep-reads"&gt;Deep Reads&lt;a class="anchor" href="#deep-reads"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://martinfowler.com/fragments/2026-04-09.html"&gt;Fragments: April 9&lt;/a&gt;&lt;/strong&gt; · Martin Fowler
Fowler&amp;rsquo;s fragment touches on several current events, but the technical meat lies in his analysis of Lalit Maganti&amp;rsquo;s attempt to build an SQLite parser using Claude. The core insight is that AI excels at generating code with objectively checkable answers, like passing test suites, but fails catastrophically at public API design because it fundamentally lacks &amp;ldquo;taste&amp;rdquo;. Maganti&amp;rsquo;s first AI-driven iteration produced complete spaghetti code; his successful second attempt relied heavily on continuous human-led refactoring and using the AI for targeted restructuring rather than blind generation. This exposes a critical tradeoff in the current AI era: coding agents can blast through long-standing architectural &amp;ldquo;todo piles,&amp;rdquo; but human engineers must remain tightly in the loop to judge whether an interface is actually pleasant to use. Engineers exploring AI-assisted development should read this to understand where to effectively deploy agents and where to stubbornly rely on their own architectural judgment.&lt;/p&gt;</description></item></channel></rss>