<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Zul Mehdi</title>
    <description>The latest articles on DEV Community by Zul Mehdi (@zulmehdi).</description>
    <link>https://dev.to/zulmehdi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4053887%2F0ddca492-5cf0-4582-b130-93730932bc14.png</url>
      <title>DEV Community: Zul Mehdi</title>
      <link>https://dev.to/zulmehdi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zulmehdi"/>
    <language>en</language>
    <item>
      <title>12 Enterprise Architecture Principles for Multi-Agent Systems</title>
      <dc:creator>Zul Mehdi</dc:creator>
      <pubDate>Wed, 29 Jul 2026 20:51:04 +0000</pubDate>
      <link>https://dev.to/zulmehdi/12-enterprise-architecture-principles-for-multi-agent-systems-5338</link>
      <guid>https://dev.to/zulmehdi/12-enterprise-architecture-principles-for-multi-agent-systems-5338</guid>
      <description>&lt;p&gt;Most multi-agent systems start as a monolith: one agent, one runtime, one set of tools. It works for the demo. Then you add a second agent, then a third, and suddenly every failure brings everything down.&lt;/p&gt;

&lt;p&gt;I've seen this pattern repeat across teams and projects. The instinct is to fix the agents, add better prompts, or throw more compute at the problem. But the real issue isn't the agents. It's the architecture underneath them.&lt;/p&gt;

&lt;p&gt;The same principles that have kept enterprise software reliable for decades apply to multi-agent systems. Separation of concerns. Loose coupling. Shared-nothing state. Independent deployability. They're not glamorous, but they're the reason some systems survive production and others don't.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 12 principles
&lt;/h2&gt;

&lt;p&gt;I wrote down the 12 principles that matter most when building multi-agent systems that actually work in production:&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture fundamentals:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Separation of Concerns&lt;/strong&gt;: each agent does one thing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loose Coupling&lt;/strong&gt;: agents communicate through protocols, not shared code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared-Nothing State&lt;/strong&gt;: no shared conversation record to lock&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independent Deployability&lt;/strong&gt;: no coordinated release schedules&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Operational maturity:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Observability by Default&lt;/strong&gt;: you can't fix what you can't see&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graceful Degradation&lt;/strong&gt;: the system keeps working when components fail&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotency&lt;/strong&gt;: duplicate messages don't break anything&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Awareness&lt;/strong&gt;: not every agent needs the most expensive model&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Enterprise reality:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Defense in Depth&lt;/strong&gt;: never trust a single security control&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Least Privilege for Agents&lt;/strong&gt;: minimal permissions, maximal isolation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol Over Product&lt;/strong&gt;: A2A and MCP beat vendor lock-in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design for Evolution&lt;/strong&gt;: new agents join without touching existing ones&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The real lesson
&lt;/h2&gt;

&lt;p&gt;These principles aren't theoretical. They come from building production systems where failures have real consequences. The architecture isn't the hard part. The hard part is convincing teams to invest in it before the incident, not after.&lt;/p&gt;

&lt;p&gt;Want the full breakdown with Azure mappings, diagrams, and the reasoning behind each choice?&lt;/p&gt;

&lt;p&gt;Read the complete post at &lt;a href="https://zulmehdi.blog/12-enterprise-architecture-principles-for-multi-agent-systems/" rel="noopener noreferrer"&gt;zulmehdi.blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>principles</category>
      <category>enterprise</category>
    </item>
    <item>
      <title>RICE Framework for AI Prompting</title>
      <dc:creator>Zul Mehdi</dc:creator>
      <pubDate>Wed, 29 Jul 2026 20:42:50 +0000</pubDate>
      <link>https://dev.to/zulmehdi/rice-framework-for-ai-prompting-59fo</link>
      <guid>https://dev.to/zulmehdi/rice-framework-for-ai-prompting-59fo</guid>
      <description>&lt;p&gt;I used to think AI was unreliable. I'd write a prompt, get something vaguely in the right direction, tweak it, get closer, tweak it again, and after three or four rounds I'd finally have something usable. It worked, but it was expensive and exhausting. The model hadn't changed between attempts. My goal hadn't changed. So why did the same prompt produce brilliant architecture one day and useless fluff the next?&lt;/p&gt;

&lt;p&gt;That question bugged me enough to start studying not just the outputs, but the thought processes behind them. I traced how the model reasoned its way from my instructions to its response, and compared the prompts that landed with the ones that didn't. After a while, the pattern became impossible to ignore. It wasn't the model's fault. It was how I was talking to it.&lt;/p&gt;

&lt;p&gt;The same way I learned to write clearly for humans through years of reading and writing, I needed to learn to articulate for machines, not in code, but in structure, in clarity, in intent. Four elements kept surfacing in the prompts that worked consistently: Role, Intent, Context, and Expectations. I called it RICE.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why RICE works
&lt;/h2&gt;

&lt;p&gt;RICE forces you to articulate what you actually want at a level of detail a machine can act on, and the side effect is that it makes you think more clearly about what you're asking for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It saves money.&lt;/strong&gt; Every vague prompt means more iterations, more tokens, more time spent refining an output that could have been right the first time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It prevents the AI from making its own decisions.&lt;/strong&gt; Without clear articulation, the model fills the gaps with guesses, and those guesses compound into a result that's close to what you wanted but never quite there. RICE closes those gaps so the AI executes what you intended, not what it assumed. In other words: RICE reduces variance rather than guarantees correctness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It works everywhere.&lt;/strong&gt; RICE is not a strict checklist. You choose and combine the elements and attributes that fit your specific ask. Some prompts need deep context and minimal expectations. Others need a precise role and a clear intent. The framework adapts to what you're building, and scales from quick prompts to long-running projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It works for everyone.&lt;/strong&gt; Engineers get precise, reproducible outputs. Executives get faster results without needing to understand how the underlying technology works. Organizations can share effective prompt patterns instead of everyone reinventing their own approach.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Want the full framework?&lt;/strong&gt; Read the complete post about RICE elements and their attributes at &lt;a href="https://zulmehdi.blog/rice-framework-for-ai-prompting/" rel="noopener noreferrer"&gt;zulmehdi.blog&lt;/a&gt;, or explore the framework at &lt;a href="https://riceframe.work/" rel="noopener noreferrer"&gt;riceframe.work&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>rice</category>
      <category>framework</category>
      <category>ai</category>
      <category>prompts</category>
    </item>
  </channel>
</rss>
