<?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:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Manav Manocha on Medium]]></title>
        <description><![CDATA[Stories by Manav Manocha on Medium]]></description>
        <link>https://medium.com/@manav.mas?source=rss-c2a4a842c4bb------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*MTO7JImQIIRMVum1</url>
            <title>Stories by Manav Manocha on Medium</title>
            <link>https://medium.com/@manav.mas?source=rss-c2a4a842c4bb------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 06:50:30 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@manav.mas/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Standardize. Automate. Then Prompt.]]></title>
            <link>https://medium.com/@manav.mas/standardize-automate-then-prompt-ec9553e31560?source=rss-c2a4a842c4bb------2</link>
            <guid isPermaLink="false">https://medium.com/p/ec9553e31560</guid>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Manav Manocha]]></dc:creator>
            <pubDate>Mon, 06 Jul 2026 17:34:50 GMT</pubDate>
            <atom:updated>2026-07-06T17:34:50.872Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Part 2 of a series on engineering in the age of AI.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Pcqm04iF2q89cLJqna2q2A.png" /></figure><p>Everyone is talking about context engineering.</p><p>Most of the conversation focuses on giving AI <em>more</em>: better prompts, more files, more documentation, bigger context windows.</p><p>I think we’re solving the wrong problem.</p><p><em>This is Part 2 of a series on engineering in the age of AI. In </em><a href="https://medium.com/@manav.mas/the-more-ai-writes-code-the-more-tests-matter-20124a75c448"><em>Part 1</em></a><em>, I argued that as AI takes over implementation, the specification becomes the asset — and engineers are measured by how clearly they define correctness. This post is about the next step: making that correctness executable.</em></p><p>If AI generates the implementation and engineers define correctness, the obvious question is <em>how</em>.</p><p>How do you define “correct” in a way that survives AI producing five different implementations, each of which looks right?</p><p>You don’t do it in a prompt. You do it in your engineering system.</p><p>Before context engineering comes engineering discipline. And discipline, at scale, is really just standardization: the same rules applied the same way every time, enforced by machines rather than memory.</p><p>Think about what happens when your project has no automated tests, no static analysis, no accessibility checks, no performance budgets, no API contracts, no shared component library.</p><p>A large part of your “context” exists only in people’s heads.</p><p>AI can’t reliably infer unwritten rules. Worse, neither can the new hire, the contractor, or the version of you three months from now.</p><p>The more your engineering practices are standardized and automated, the less you need to explain implementation details to anyone — human or AI.</p><h3>What this looks like in practice</h3><p>Each of these takes a rule that usually lives in someone’s head and turns it into something a machine checks automatically.</p><h4>Coding standards and static analysis</h4><p>Instead of describing your conventions in a prompt, encode them.</p><p>Linters like ESLint and formatters like Prettier make style non-negotiable and invisible — the standard is the config file, not a paragraph of instructions. Type checkers like TypeScript catch whole categories of errors before anyone reviews a line.</p><h4>Automated tests</h4><p>A test suite is a specification you can execute — the executable spec from Part 1, made real.</p><p>Unit tests (Jest, Vitest), integration tests, and end-to-end tests (Playwright, Cypress) describe what “correct” means in a form that doesn’t drift. When AI generates an implementation, the tests tell you immediately whether it works — no need to trust that it followed your description.</p><h4>Accessibility checks</h4><p>Rules like “every image needs alt text” or “contrast must meet WCAG AA” shouldn’t live in tribal knowledge.</p><p>Tools like axe-core or Lighthouse’s accessibility audits enforce them in CI, so accessible output is the default rather than something you have to remember to ask for.</p><h4>Performance budgets</h4><p>“Keep it fast” is not a spec. A performance budget is.</p><p>Lighthouse CI, or the assertions in WebPageTest let you set hard limits — bundle size, Largest Contentful Paint, time to interactive — and fail the build when they’re exceeded. The standard enforces itself.</p><h4>API contracts</h4><p>Define the interface once, formally, with OpenAPI/Swagger, GraphQL schemas, or Protocol Buffers.</p><p>Contract tests (Pact) then guarantee that producers and consumers stay in sync. The contract becomes the shared source of truth instead of a shared assumption.</p><h4>A standard UI component library</h4><p>When “a button” means your Button component—variants, states, and accessibility already baked in—there&#39;s nothing to describe.</p><p>Design systems built with Storybook turn visual and interaction standards into reusable, verifiable building blocks.</p><h4>Architecture diagrams and docs</h4><p>Even structure can be standardized and checked.</p><p>Diagrams-as-code (Mermaid, PlantUML etc) keep the picture in version control.</p><h3>Why this matters more with AI, not less</h3><p>Instead of writing a prompt like:</p><blockquote><em>“Generate code that follows our conventions, is performant, accessible, secure, and maintainable…”</em></blockquote><p>you provide the specification and let your automation verify the result.</p><p>The implementation becomes almost interchangeable, because the guardrails don’t care who — or what — wrote the code.</p><blockquote><strong><em>AI is probabilistic. Your engineering system shouldn’t be.</em></strong></blockquote><p>Every standard you leave unwritten is something you’ll re-explain in every prompt, and hope the model gets right every time.</p><p>Every standard you automate is one you never have to explain again.</p><p>That’s why the biggest investment to make <em>before</em> adopting AI isn’t better prompts — it’s better automation.</p><p>Automation is executable context. Every test you write, every check you enforce in CI, every standard you encode is context that no longer needs to live in a prompt or someone’s memory. It’s standardized, executable, and impossible to forget.</p><p>Part 1 ended with a principle: AI generates the implementation, engineers define correctness. This is how you enforce it.</p><p>Standardize what “good” means. Automate the checks that hold the line. Only then, prompt.</p><p>Get those first two right, and context engineering becomes surprisingly simple.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ec9553e31560" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The More AI Writes Code, the More Tests Matter]]></title>
            <link>https://medium.com/@manav.mas/the-more-ai-writes-code-the-more-tests-matter-20124a75c448?source=rss-c2a4a842c4bb------2</link>
            <guid isPermaLink="false">https://medium.com/p/20124a75c448</guid>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Manav Manocha]]></dc:creator>
            <pubDate>Thu, 02 Jul 2026 10:49:03 GMT</pubDate>
            <atom:updated>2026-07-06T17:22:51.135Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Part 1 of a series on “Engineering in the age of AI”</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ScrIxVd0_VUcJuoLR6pVyg.png" /></figure><p><strong>When AI can generate hundreds of lines of code in seconds, what is a software engineer actually paid to do?</strong></p><p>Over the past few weeks, I’ve been brainstorming about this and discussing it with several colleagues. We kept coming back to one question:</p><p><strong>What skills become more valuable in a world where generating code is becoming a commodity?</strong></p><p>History suggests that automation doesn’t reduce human value — it redefines it. Every generation has resisted a new tool because it feared losing a core skill. Instead, the skills that mattered simply moved up the value chain.</p><ul><li><strong>Calculators</strong> automated arithmetic. We stopped valuing manual calculations and started valuing mathematical reasoning and problem-solving.</li><li><strong>Excel</strong> automated repetitive calculations, reconciliation, and reporting. The value shifted from manual bookkeeping to financial modeling, data analysis, and decision-making.</li><li><strong>Cloud computing</strong> automated infrastructure provisioning and operations. Instead of managing servers, engineers focused on architecture, scalability, security, reliability, and cost optimization.</li></ul><p>AI feels like the next step in this evolution. As it becomes increasingly capable of generating code, documentation, and even tests, the value of manually writing every line of code naturally decreases. Our contribution shifts toward defining problems, providing context, designing systems, reviewing solutions, and making engineering decisions.</p><h3>AI’s Fundamental Difference</h3><p>Unlike the technologies before it, AI is <strong>non-deterministic</strong>.</p><p>A calculator always returns the same answer for the same equation. An Excel formula always produces the same result for the same inputs. A cloud API follows a defined contract.</p><p>AI doesn’t.</p><p>The same prompt can generate multiple implementations. Each may look correct, follow best practices, and even pass a quick review — yet one might fail under an edge case that another handles perfectly.</p><p>That leads me to a simple conclusion:</p><blockquote><strong><em>AI doesn’t make testing more important because it writes bad code. It makes testing more important because it can produce many different implementations, all of which must satisfy the same behavior.</em></strong></blockquote><h3>The Specification Becomes the Asset</h3><p>As AI gets better at implementation, the implementation itself becomes less valuable. The enduring asset is the <strong>specification</strong>.</p><p>Requirements, acceptance criteria, business rules, edge cases, invariants, and automated tests don’t just verify software anymore — they define what “correct” means. They become executable specifications that constrain AI-generated code and make the overall development process predictable, even when the code generation itself isn’t.</p><p>Perhaps that’s where software engineering is heading.</p><p>As AI continues to lower the cost of implementation, engineers won’t be measured by how many lines of code they write. They’ll be measured by how clearly they define the problem, how thoroughly they capture expected behavior, and how effectively they validate the solution.</p><p>AI may generate the implementation.</p><p><strong>Engineers define correctness.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=20124a75c448" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>