<head><style>@media only screen { .email * { word-break: break-word; } }
@media screen and (max-width: 384px) { .mail-message-content { width: 414px !important; } }
@media only screen and (max-width:600px) { .ck-mobile-font-size { font-size:50px !important; } }</style></head><div id="preview-text">
<span style="display: none; max-height: 0; overflow: hidden;">
</span>
<span style="display: none; max-height: 0; overflow: hidden;">
βΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝβΝΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒ
</span>
</div>
<table cellPadding="0" cellSpacing="0" style="width:100%;margin:0 auto"><tbody><tr><td><p>Have you ever wondered which books are on the bookshelf behind me in my videos?</p>
<p><img src="https://res.cloudinary.com/total-typescript/image/upload/c_fill,w_1200,ar_16:9,g_auto,q_auto,f_jpg/v1792351178/aihero/c5-launch/c5-02-matt-ddd-bookshelf.png" width="600" alt="Matt holding Domain-Driven Design in front of his bookshelf" style="display:block;width:100%;max-width:600px;height:auto;border:0;"></p>
<p>This year Iβve ordered <a href="https://www.aihero.dev/s/matt-bookshelf">a lot of programming books</a>, and despite my focus on the frontier of AI coding, Iβve found the most <em>valuable</em> books to be the classics.</p>
<p>If there were only 3 books I could hand every software engineer using AI coding tools today, they would be:</p>
<ul>
<li>A Philosophy of Software Design (2018)</li>
<li>The Pragmatic Programmer (1999)</li>
<li>Domain-Driven Design (2003)</li>
</ul>
<p>Iβve been coming back to these books (among others) again and again while working on my next two-week cohort <a href="https://www.aihero.dev/s/c5-books">Software Factories for Real Engineers</a>. <strong>Registration opens next Monday Oct 26</strong>, with a big 30% off early enrollment discount for the first week.</p>
<p>Mark your calendar now so you donβt miss the savings, and if you have a training budget that expires at the end of 2026, see if it can cover your enrollment!</p>
<p>For a better sense of how I think about software engineering in the era of AI coding, Iβve gathered a few choice ideas from each book and how I apply them today.</p>
<p>Starting withβ¦</p>
<h3>1. A Philosophy of Software Design, by John Ousterhout</h3>
<p>Ousterhout describes a type of developer he calls a "tactical tornado":</p>
<blockquote><p><em>"a prolific programmer who pumps out code far faster than others but works in a totally tactical fashion."</em></p></blockquote>
<p>They ship fast. And they leave behind a wake of destruction for everyone else to clean up.</p>
<p>Sound familiar?</p>
<p>This is exactly how agents feel to me, when left to their own devices. They churn out astonishing amounts of work with zero eye for the future.</p>
<p>AI dominates in tactical programming, which has understandably shaken up our industry quite a lot in a very short period of time.</p>
<p><strong>But agents being tactical tornadoes means that the <em>strategic</em> part of our job is extremely important.</strong></p>
<p>Our work still requires caring about the <em>shape</em> of the codebase, and keeping it easy to change and extend over time. Maybe more than ever.</p>
<p>Ousterhout's recommendation is deep modules, where simple interfaces can provide a lot of functionality behind them. For example, JSON.parse does loads of stuff under the hood, but offers a very simple and consistent interface that makes code changes easy and safe.</p>
<p>Give an agent a codebase built from deep modules, and it has far fewer ways to make a mess.</p>
<p>Of course, that assumes you're starting clean and most programmers donβt have that luxury.</p>
<p>Hold that thought, I'll come back to it.</p>
<h3>2. The Pragmatic Programmer, by Andy Hunt and Dave Thomas</h3>
<p>This one is my favourite programming book.</p>
<p>One line I quote most often:</p>
<blockquote><p><a href="https://www.aihero.dev/s/no-one-knows"><em>"No one knows exactly what they want."</em></a></p></blockquote>
<p>Whenever an agent builds the wrong thing, it's a classic symptom of under-specification.</p>
<p>Itβs actually pretty rare for an agent to βmisunderstand.β Odds are, you didn't actually know what you wanted yet, or even if you did, you didnβt know how to communicate it clearly.</p>
<p>That's why I use <code>/grill-me</code> to create a shared understanding with my agents before they can write a single line of code. It's why I prototype early and often.</p>
<h3>3. Domain-Driven Design, by Eric Evans</h3>
<p>Evans says your team should share one ubiquitous language with the code. The words you use in planning meetings should be the exact words in your codebase.</p>
<p>Meanwhile, naming things is <em>extremely</em> hard. Naming them consistently? Somehow harder.</p>
<p>I think this is why folks always say that <code>/grill-with-docs</code> feels like a magic trick. Rather than trying to define terms upfront, grilling allows a rich ubiquitous language glossary to emerge from natural discussion with the agent about what youβre trying to build.</p>
<p>That shared language glossary then keeps your agent aligned while itβs running, whether your fingers are on the keyboard or not.</p>
<p>Personally, the more work I put into my glossary of ubiquitous language, the more productive I feel and the more consistently my agents perform.</p>
<h2>Old books, new tools, same ideas</h2>
<p>These books were written long before the era of AI coding, but the problems they were written to solve donβt care who is writing the code.</p>
<p>More code only <em>accelerates</em> all of the problems weβve had to solve for the entire history of software engineering. All the more reason to return to these time-tested ideas now, and apply them to the way we use the newest tools for our craft.</p>
<p>If you only pick up one, start with Pragmatic Programmer, and go from there.</p>
<p>And remember when I said that most of us donβt get the luxury of starting from a clean, tidy codebase with well-designed deep modules?</p>
<p><strong>Hot take:</strong> a vibe-coded codebase is indistinguishable from a legacy codebase.</p>
<p>If an agent wrote most of your app and you've never properly read it, that's a legacy codebase. I've started thinking of it as working effectively with vibe code.</p>
<p>There's a fourth book that I didnβt mention here, all about rescuing a legacy codebase. It's outrageously good! I'll tell you which book it is, and how I use it, in a future email.</p>
<p><strong>And donβt forget, my next cohort <a href="https://www.aihero.dev/s/c5-books">Software Factories for Real Engineers</a> opens next week.</strong> Over two weeks youβll practice building a real, functioning, economical Software Factory for you and your team to expand and improve your existing codebase.</p>
<p>As always, you can enroll and complete the course from anywhere. All lessons drop on day one so you can go at your own pace, but you also get access to a community of learners working through the material alongside you and livestreamed office hours with me to answer your burning questions.</p>
<p>Itβs my most ambitious course yet, and Iβm excited to share it with you.</p>
<p>Mark your calendar and donβt miss out on a 30% discount during the first week of enrollment:</p>
<ul>
<li><strong>Doors open with 30% discount Monday Oct 26</strong></li>
<li><strong>Discount ends Monday Nov 2</strong></li>
<li><strong>Class starts Monday Nov 9</strong></li>
</ul>
<p>More details coming this week,</p>
<p>Matt</p>
<p>P.S. What's the one classic programming book you'd hand every engineer working with AI? Hit reply, I read every response.</p>
<p>P.P.S. Buying for your team? We offer bulk discounts on team seats, and we can put together a quote for procurement. Just reply to this email, or forward it to team@aihero.dev.</p></td></tr></tbody></table><div class="aih-footer"><p><a href="https://www.aihero.dev/unsubscribe?t=v1.eyJjIjoiMjJqOHN1ZDMiLCJpYXQiOjE3OTI0MDkwNjUsImoiOiJjb250YWN0LWRpcmVjdG9yeSIsIm0iOiJwKioqQHIqKiouaXQiLCJ0Ijoib3JnLWFpaGVybyJ9.KeTkvJFZ20DhgVJ-0UyPHtHewAatV2cXLAhF2X2bPzA&choice=all">Unsubscribe</a> at any time.</p><p>12333 Sowden Rd, Ste. B, PMB #97429, Houston, TX 77080</p></div>