<?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: Paulo Victor Leite Lima Gomes</title>
    <description>The latest articles on DEV Community by Paulo Victor Leite Lima Gomes (@pvgomes).</description>
    <link>https://dev.to/pvgomes</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F109646%2F27accb17-594d-4776-b421-db7cca109bfe.jpg</url>
      <title>DEV Community: Paulo Victor Leite Lima Gomes</title>
      <link>https://dev.to/pvgomes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pvgomes"/>
    <language>en</language>
    <item>
      <title>Claude code and 512000 Becoming Public</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Wed, 01 Apr 2026 11:00:24 +0000</pubDate>
      <link>https://dev.to/pvgomes/claude-code-and-512000-becoming-public-4f74</link>
      <guid>https://dev.to/pvgomes/claude-code-and-512000-becoming-public-4f74</guid>
      <description>&lt;h2&gt;
  
  
  The Moment Every Engineer Knows
&lt;/h2&gt;

&lt;p&gt;You publish a package.&lt;/p&gt;

&lt;p&gt;Everything seems fine.&lt;/p&gt;

&lt;p&gt;Then someone on the internet discovers something you absolutely did &lt;strong&gt;not&lt;/strong&gt; intend to ship.&lt;/p&gt;

&lt;p&gt;And suddenly half a million lines of your internal code are circulating on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0uhqkunzeptttm7pseni.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0uhqkunzeptttm7pseni.gif" alt="oops" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s essentially what just happened with &lt;strong&gt;Claude Code&lt;/strong&gt;, Anthropic’s command-line developer tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Actually Happened
&lt;/h2&gt;

&lt;p&gt;Anthropic released version &lt;strong&gt;2.1.88&lt;/strong&gt; of the &lt;code&gt;claude-code&lt;/code&gt; npm package.&lt;/p&gt;

&lt;p&gt;Inside the package there was a &lt;strong&gt;source map file&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For people outside the frontend / JS ecosystem, a quick explanation:&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;source map&lt;/strong&gt; is normally used to map compiled JavaScript back to the original TypeScript source files for debugging.&lt;/p&gt;

&lt;p&gt;But if the source map accidentally includes references to the original sources &lt;strong&gt;and the sources are embedded or accessible&lt;/strong&gt;, anyone can reconstruct the &lt;strong&gt;entire codebase&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that’s exactly what happened.&lt;/p&gt;

&lt;p&gt;The result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;~ &lt;strong&gt;2,000 TypeScript files&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;~ &lt;strong&gt;512,000 lines of code&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;internal architecture exposed&lt;/li&gt;
&lt;li&gt;instantly mirrored and forked across GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Within hours, developers were already exploring the internals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhjbc01d3kndr3k0yprh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhjbc01d3kndr3k0yprh.gif" alt="developers digging" width="370" height="208"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Important: The Models Were NOT Leaked
&lt;/h2&gt;

&lt;p&gt;Let’s be clear about something.&lt;/p&gt;

&lt;p&gt;The leak &lt;strong&gt;did not expose the Claude models&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No weights.&lt;br&gt;&lt;br&gt;
No training data.&lt;br&gt;&lt;br&gt;
No internal datasets.&lt;/p&gt;

&lt;p&gt;What leaked is &lt;strong&gt;the CLI developer experience layer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Think of it as the &lt;strong&gt;operating system around the AI&lt;/strong&gt;, not the AI itself.&lt;/p&gt;

&lt;p&gt;Still, that layer is extremely valuable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Many people underestimate developer tooling.&lt;/p&gt;

&lt;p&gt;But tools like &lt;strong&gt;Claude Code, Copilot CLI, Cursor, etc.&lt;/strong&gt; are not simple wrappers.&lt;/p&gt;

&lt;p&gt;They are complex systems with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tool execution frameworks&lt;/li&gt;
&lt;li&gt;memory management&lt;/li&gt;
&lt;li&gt;query orchestration&lt;/li&gt;
&lt;li&gt;prompt pipelines&lt;/li&gt;
&lt;li&gt;plugin systems&lt;/li&gt;
&lt;li&gt;guardrails&lt;/li&gt;
&lt;li&gt;verification loops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;According to early analysis of the leaked code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;~ &lt;strong&gt;40k lines&lt;/strong&gt; for the plugin/tool system&lt;/li&gt;
&lt;li&gt;~ &lt;strong&gt;46k lines&lt;/strong&gt; for the query engine&lt;/li&gt;
&lt;li&gt;complex &lt;strong&gt;memory rewriting pipelines&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;multi-step &lt;strong&gt;memory validation&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;background context refinement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which confirms something many engineers already suspected:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;These tools are &lt;strong&gt;production-grade software systems&lt;/strong&gt;, not thin wrappers around LLM APIs.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why Competitors Will Study This Carefully
&lt;/h2&gt;

&lt;p&gt;This leak gives a &lt;strong&gt;rare look at how a modern AI developer tool is built&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Competitors can now analyze:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;architecture decisions&lt;/li&gt;
&lt;li&gt;orchestration patterns&lt;/li&gt;
&lt;li&gt;prompt pipeline design&lt;/li&gt;
&lt;li&gt;tool execution safety models&lt;/li&gt;
&lt;li&gt;memory persistence strategies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even if companies don't copy code directly (which would be legally risky), they can learn &lt;strong&gt;a lot&lt;/strong&gt; from the design choices.&lt;/p&gt;

&lt;p&gt;It's basically a &lt;strong&gt;blueprint of a modern AI coding assistant.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapx6f29x7ibau69ccxs4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapx6f29x7ibau69ccxs4.gif" alt="engineers reading leaked code" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Security Angle
&lt;/h2&gt;

&lt;p&gt;There's also a darker side.&lt;/p&gt;

&lt;p&gt;Whenever internal architecture becomes public, attackers can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;analyze guardrail logic&lt;/li&gt;
&lt;li&gt;probe validation layers&lt;/li&gt;
&lt;li&gt;search for weaknesses in tool execution&lt;/li&gt;
&lt;li&gt;discover bypass patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security through obscurity is never a real defense, but suddenly giving attackers &lt;strong&gt;a full architectural map&lt;/strong&gt; does raise the stakes.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Irony
&lt;/h2&gt;

&lt;p&gt;Claude Code itself exists to &lt;strong&gt;help engineers ship code faster&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And the leak happened because of a &lt;strong&gt;release packaging mistake&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not a hack.&lt;/p&gt;

&lt;p&gt;Not a breach.&lt;/p&gt;

&lt;p&gt;Just a build artifact that shouldn't have been published.&lt;/p&gt;

&lt;p&gt;Every engineer reading this knows the feeling.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4wsqt8fmtyhjxgmcj70.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4wsqt8fmtyhjxgmcj70.gif" alt="deploy panic" width="640" height="360"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  My Take
&lt;/h2&gt;

&lt;p&gt;From an engineering perspective, two things stand out.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The sophistication is real
&lt;/h3&gt;

&lt;p&gt;People often say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"These AI tools are just wrappers around an API."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s clearly &lt;strong&gt;not true anymore&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Half a million lines of orchestration code tells a different story.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. This will accelerate the ecosystem
&lt;/h3&gt;

&lt;p&gt;Ironically, leaks like this often &lt;strong&gt;speed up innovation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now thousands of developers can study:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;memory strategies&lt;/li&gt;
&lt;li&gt;prompt pipelines&lt;/li&gt;
&lt;li&gt;tool orchestration&lt;/li&gt;
&lt;li&gt;AI developer UX design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And build their own versions faster.&lt;/p&gt;

&lt;p&gt;That’s how software ecosystems evolve.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;AI development tools are becoming something closer to &lt;strong&gt;operating systems for programming&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They orchestrate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;context&lt;/li&gt;
&lt;li&gt;tools&lt;/li&gt;
&lt;li&gt;models&lt;/li&gt;
&lt;li&gt;memory&lt;/li&gt;
&lt;li&gt;safety&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude Code is just one example of this emerging layer.&lt;/p&gt;

&lt;p&gt;Seeing its internals confirms something many of us suspected:&lt;/p&gt;

&lt;p&gt;We are not just building &lt;strong&gt;AI models&lt;/strong&gt; anymore.&lt;/p&gt;

&lt;p&gt;We are building &lt;strong&gt;AI runtime environments for developers.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Some engineers are probably embarrassed about this release.&lt;/p&gt;

&lt;p&gt;But if we’re honest…&lt;/p&gt;

&lt;p&gt;Every developer has shipped something accidentally.&lt;/p&gt;

&lt;p&gt;Most of the time it's harmless.&lt;/p&gt;

&lt;p&gt;Sometimes it's &lt;strong&gt;half a million lines of proprietary code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpc2x3xnxsvwvnka1lm2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpc2x3xnxsvwvnka1lm2.gif" alt="ship it" width="350" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>OpenClaw is infrastructure, not intelligence</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Mon, 09 Feb 2026 10:14:34 +0000</pubDate>
      <link>https://dev.to/pvgomes/openclaw-is-infrastructure-not-intelligence-3d5o</link>
      <guid>https://dev.to/pvgomes/openclaw-is-infrastructure-not-intelligence-3d5o</guid>
      <description>&lt;p&gt;There is a new hype going around called OpenClaw, and Yes, it is a hype. Early AGI? no.&lt;/p&gt;

&lt;p&gt;OpenClaw is an agent orchestration framework. A good one. Clean. Opinionated. Well documented.&lt;br&gt;
But conceptually, it is not new.&lt;/p&gt;

&lt;p&gt;What OpenClaw actually is? Based on their own docs and code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenClaw lets you define agents&lt;/li&gt;
&lt;li&gt;Each agent can run tools, call LLMs, keep state, and execute steps&lt;/li&gt;
&lt;li&gt;You can run it locally on your own machine&lt;/li&gt;
&lt;li&gt;You control the infrastructure and the data flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;that’s it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is not intelligence. This is software plumbing for LLM-powered workflows 😒&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoze5eq2tffqu1ndt097.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoze5eq2tffqu1ndt097.gif" alt="calmdown" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  We have seen this before
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Nothing here is magic or unprecedented.&lt;/li&gt;
&lt;li&gt;You can do the same thing today with &lt;a href="https://n8n.io/?utm_source=pvgomes" rel="noopener noreferrer"&gt;n8n&lt;/a&gt; more scalable and way more guardrails&lt;/li&gt;
&lt;li&gt;You can do the same thing with LangChain-style agent loops&lt;/li&gt;
&lt;li&gt;You can do the same thing with custom workers + queues + LLM APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lets be honest, the difference is not capability, is ergonomics.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvkt762gdpnt9zsu0jejj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvkt762gdpnt9zsu0jejj.gif" alt="ergonomics" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OpenClaw gives you a cleaner mental model and less glue code. I see this as a more “developer-first” way to define agents, and as we say in polish 🇵🇱 &lt;strong&gt;oczywiście&lt;/strong&gt;, which means, &lt;strong&gt;offcourse&lt;/strong&gt; That is valuable, not AGI.&lt;/p&gt;

&lt;p&gt;“But it runs locally, that’s new”&lt;/p&gt;

&lt;p&gt;Not really.&lt;/p&gt;

&lt;p&gt;OpenAI themselves shipped local / semi-local execution environments in the past:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tool calling&lt;/li&gt;
&lt;li&gt;Code execution sandboxes&lt;/li&gt;
&lt;li&gt;Agent-like runtimes that could call external systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those experiments came and went. Some were removed.&lt;br&gt;
The idea stayed.&lt;/p&gt;

&lt;p&gt;OpenClaw is simply doing this outside OpenAI, in an open-source, self-hosted way.&lt;/p&gt;

&lt;p&gt;Their difference? Router and messaging apps, WhatsApp, iMessage, Telegram... you named it.&lt;/p&gt;

&lt;p&gt;But again:&lt;br&gt;
You can already do this with n8n, webhooks, and LLM APIs.&lt;/p&gt;

&lt;p&gt;The real difference is cost and control:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;With OpenClaw, you might run everything on a custom local computer&lt;/li&gt;
&lt;li&gt;With n8n or cloud setups, you usually pay more over time&lt;/li&gt;
&lt;li&gt;This is a deployment choice, not a breakthrough.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So what is the right framing?&lt;/p&gt;

&lt;h4&gt;
  
  
  OpenClaw is:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Not AGI&lt;/li&gt;
&lt;li&gt;Not consciousness&lt;/li&gt;
&lt;li&gt;Not reasoning in the human sense&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  OpenClaw is:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;An elegant agent framework&lt;/li&gt;
&lt;li&gt;A solid abstraction over LLM workflows&lt;/li&gt;
&lt;li&gt;A good tool if you want local-first, controlled execution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is already enough.&lt;br&gt;
It does not need AGI branding to be useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  My conclusion
&lt;/h3&gt;

&lt;p&gt;Calling OpenClaw “AGI” is marketing-driven confusion. Calling it a clean, modern way to build agents is accurate. And accuracy matters more than hype. I see this is game changing for some cool things, you have now some agent working eventually 24 hours a day, but this one still needs tons of triggers and guidelines as well as will halucinate as we already see in a common openai chat. You can use it,  you can deliver awesome job with it, bit it will not replace a human. yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Docs: &lt;a href="https://docs.openclaw.ai/start/getting-started" rel="noopener noreferrer"&gt;https://docs.openclaw.ai/start/getting-started&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;https://github.com/openclaw/openclaw&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;n8n: &lt;a href="https://n8n.io/?utm_source=pvgomes" rel="noopener noreferrer"&gt;https://n8n.io/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>openclaw</category>
      <category>agi</category>
      <category>ai</category>
    </item>
    <item>
      <title>VS Code now has agents: what changed</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Sun, 08 Feb 2026 15:24:13 +0000</pubDate>
      <link>https://dev.to/pvgomes/vs-code-now-has-agents-what-changed-d39</link>
      <guid>https://dev.to/pvgomes/vs-code-now-has-agents-what-changed-d39</guid>
      <description>&lt;p&gt;&lt;strong&gt;Keeping up with AI coding tools is exhausting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First we had simple chat assistants.&lt;/li&gt;
&lt;li&gt;Then multiple modes like ask, edit, plan, agent.&lt;/li&gt;
&lt;li&gt;Then different models.&lt;/li&gt;
&lt;li&gt;And now… VS Code added something new: agent execution environments like: Local, Background, Cloud, Claude&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you feel lost, good.&lt;br&gt;
Me too.&lt;br&gt;
So let’s simplify what is actually happening.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F17ghmco2na88oq2wukyl.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F17ghmco2na88oq2wukyl.gif" alt="tired" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  From chat assistants to real agents
&lt;/h3&gt;

&lt;p&gt;At the beginning, which was like two years ago😅, AI in coding was basically:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Here’s some code. Fix it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;That was the Ask era&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then tools started editing files directly, that became the Edit era.&lt;/p&gt;

&lt;p&gt;After that, AI began planning multi-step changes.&lt;br&gt;
Welcome to Plan.&lt;/p&gt;

&lt;p&gt;And now we are here where AI can run tasks, monitor progress, and execute workflows.&lt;br&gt;
&lt;strong&gt;That is the Agent era&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the real shift 💩 and is part of the thausand options we have with AI, also with all companies chasing attention in AI initiatives&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftv0f8hv1g02skrybp4w9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftv0f8hv1g02skrybp4w9.gif" alt="agents-are-real" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why VS Code suddenly has more options on the side panel
&lt;/h3&gt;

&lt;p&gt;Before, the decision was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which mode?&lt;/li&gt;
&lt;li&gt;Which model?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now there is a third dimension:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where the agent runs ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is more like from "AI that answers and are our copilot" to be more like "AI that does the work"&lt;/p&gt;

&lt;p&gt;This is off course not something new, this was the idea before, and now the biggest trend, and yes its getting harder to follow. Reasons why we are here, to organize it mentally.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3to3vua6mpqpv2zmyl9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3to3vua6mpqpv2zmyl9.gif" alt="mental" width="245" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to think about the new VS Code Agents (simple mental model)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;first, forget the complexity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modes = what the AI should do: ask, edit, plan, agent&lt;/li&gt;
&lt;li&gt;Model = how smart it is more or less&lt;/li&gt;
&lt;li&gt;Execution environment = where it runs: local, background, cloud, claude&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;That’s it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now its it more than a autocomplete, or copilot or an step-by-step doing work, its more really delegating the work using your IDE.&lt;/p&gt;

&lt;p&gt;For the full official explanation from Microsoft, &lt;a href="https://code.visualstudio.com/docs/copilot/agents/overview" rel="noopener noreferrer"&gt;read here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>ai</category>
      <category>agents</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Java in 2026: still boring, still powerful, still printing money</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Sat, 07 Feb 2026 14:16:00 +0000</pubDate>
      <link>https://dev.to/pvgomes/java-in-2026-still-boring-still-powerful-still-printing-money-5ehj</link>
      <guid>https://dev.to/pvgomes/java-in-2026-still-boring-still-powerful-still-printing-money-5ehj</guid>
      <description>&lt;p&gt;Let’s be honest.&lt;/p&gt;

&lt;p&gt;Java is not sexy.&lt;br&gt;
Nobody wakes up excited thinking “wow, I hope today I can write some beautiful enterprise Java code.”&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75fnob3k4cxnddi9r7et.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75fnob3k4cxnddi9r7et.gif" alt="Java boring meme" width="480" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And yet…&lt;/p&gt;

&lt;p&gt;Banks, fintechs, payment processors, credit engines, risk platforms, and trading systems are still massively powered by Java in 2026.&lt;br&gt;
And they’re not moving away anytime soon. With AI taking up to 70% of written code? Not a problem.&lt;/p&gt;

&lt;p&gt;I have worked as a software engineer for more than 17 years, and since I've started, people talking about java becoming legacy was just part of my day.&lt;/p&gt;

&lt;p&gt;we are in 2026, american debt is skyrocketing, BTC is melting and dollar losing value... while Java? Well, looks like this guy is a tough dinosaur&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpa9bizu6qwc3ctb9vid2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpa9bizu6qwc3ctb9vid2.gif" alt="java bad" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Quick Java timeline (why this dinosaur refuses to die)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;1995 → Java is born. “Write once, run anywhere.”&lt;/li&gt;
&lt;li&gt;2006 → Open-sourced. Enterprise adoption explodes.&lt;/li&gt;
&lt;li&gt;2014 → Java 8. Lambdas. Streams. Real modern Java begins.&lt;/li&gt;
&lt;li&gt;2018–2021 → 6-month release cycle. JVM performance goes crazy.&lt;/li&gt;
&lt;li&gt;2021 → Java 17 LTS becomes enterprise default.&lt;/li&gt;
&lt;li&gt;2023 → Java 21 LTS ships with virtual threads (Project Loom). Massive scalability shift.&lt;/li&gt;
&lt;li&gt;2026 → Java 25 era. Cloud-native, AI-assisted dev, still dominating finance production systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So yeah…&lt;br&gt;
Not dead. Not even close.&lt;/p&gt;
&lt;h3&gt;
  
  
  Why finance still trusts Java more than anything else
&lt;/h3&gt;

&lt;p&gt;financial systems do not care about hype.&lt;/p&gt;

&lt;p&gt;They care about, predictability, latency stability, memory safety, tooling maturity and last but not least a huge hiring pool&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JVM stability is unmatched if you run:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;loan engines&lt;/li&gt;
&lt;li&gt;payment authorization&lt;/li&gt;
&lt;li&gt;anti-fraud scoring&lt;/li&gt;
&lt;li&gt;card transaction routing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;JVM gives:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;battle-tested GC (even with its problems)&lt;/li&gt;
&lt;li&gt;insane observability&lt;/li&gt;
&lt;li&gt;deterministic performance tuning&lt;/li&gt;
&lt;li&gt;backwards compatibility across decades&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Concurrency changed the game (virtual threads)
&lt;/h3&gt;

&lt;p&gt;Before Java 21:&lt;/p&gt;

&lt;p&gt;threads were expensive and async code was ugly, now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;executor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Executors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;newVirtualThreadPerTaskExecutor&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;IntStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;range&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;
        &lt;span class="n"&gt;executor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;submit&lt;/span&gt;&lt;span class="o"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;processTransaction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
    &lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is millions of concurrent operations with simple blocking code and no reactive nightmare.&lt;br&gt;
&lt;strong&gt;For fintech backends, this is huge.&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxatd8ndwt8d1zkzaapb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxatd8ndwt8d1zkzaapb.gif" alt="huge" width="248" height="244"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Spring ecosystem still dominates enterprise
&lt;/h3&gt;

&lt;p&gt;Yes, people complain about Spring Boot, but look at reality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;80%+ of fintech APIs run on Spring&lt;/li&gt;
&lt;li&gt;security + observability + config = solved problems&lt;/li&gt;
&lt;li&gt;onboarding engineers is easy&lt;/li&gt;
&lt;li&gt;production support is predictable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example minimal API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@RestController&lt;/span&gt;
&lt;span class="nd"&gt;@RequestMapping&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/loans"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;LoanController&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@GetMapping&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/{id}"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Loan&lt;/span&gt; &lt;span class="nf"&gt;getLoan&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@PathVariable&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Loan&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;BigDecimal&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;valueOf&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Boring?&lt;br&gt;
Yes, but every engineer can get it easily, even in an eventual case of some AI-code-creationg halucination.&lt;br&gt;
Finance chooses boring.&lt;/p&gt;
&lt;h3&gt;
  
  
  Performance is no longer an excuse
&lt;/h3&gt;

&lt;p&gt;Modern JVM gives ZGC/Shenandoah which is ultra-low latency GC, JIT + profiling that optimizes the runtime, theres also a GraalVM native images for faster startup on any cloud provider&lt;/p&gt;
&lt;h3&gt;
  
  
  The real shift in 2026: AI-augmented Java developers
&lt;/h3&gt;

&lt;p&gt;This is where things get interesting, guess what? java is a big winner here, if I can't check everything is being created, how about I rely on a very deterministic well shapped programming language?&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9cbsa2eiy796dt8q3qmi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9cbsa2eiy796dt8q3qmi.gif" alt="essential" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  A simple example on putting claude code/github copilot to work for you
&lt;/h3&gt;

&lt;p&gt;Example: generate a Spring service instantly&lt;/p&gt;

&lt;p&gt;Prompt in editor:&lt;br&gt;
&lt;code&gt;create a service that calculates compound interest with validation and unit tests&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result in seconds:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Service&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;InterestService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;BigDecimal&lt;/span&gt; &lt;span class="nf"&gt;compound&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
        &lt;span class="nc"&gt;BigDecimal&lt;/span&gt; &lt;span class="n"&gt;principal&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
        &lt;span class="nc"&gt;BigDecimal&lt;/span&gt; &lt;span class="n"&gt;rate&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;periods&lt;/span&gt;
    &lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;principal&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;signum&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;rate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;signum&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;periods&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;IllegalArgumentException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Invalid input"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;principal&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;multiply&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
            &lt;span class="nc"&gt;BigDecimal&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ONE&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rate&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;pow&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;periods&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;tests look like a charming...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Test&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;compound_shouldGrow&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;InterestService&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;compound&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
        &lt;span class="nc"&gt;BigDecimal&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;valueOf&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt;
        &lt;span class="nc"&gt;BigDecimal&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;valueOf&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt;
        &lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="o"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;assertEquals&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;BigDecimal&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"1210.00"&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setScale&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Time saved with control.&lt;/p&gt;

&lt;h3&gt;
  
  
  How about using claude for refactoring and architecture?
&lt;/h3&gt;

&lt;p&gt;Some things that were a nightmare before, now are just a task in jira like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;migrating legacy Java 8 → Java 21&lt;/li&gt;
&lt;li&gt;converting blocking code → virtual threads&lt;/li&gt;
&lt;li&gt;generating integration tests&lt;/li&gt;
&lt;li&gt;explaining weird enterprise codebases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real workflow:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;inline or chat with the legacy class&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;modernize for Java 21 + clean architecture
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;tadah: get production-ready refactor&lt;/p&gt;

&lt;p&gt;This is insane leverage.&lt;/p&gt;




&lt;p&gt;Lets talk about career now, this moment a lot of software engineers are actually loosing their jobs, one more reason why java careers are still strong...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everyone wants to learn:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rust&lt;/li&gt;
&lt;li&gt;Go&lt;/li&gt;
&lt;li&gt;A new AI-agent-ish of work&lt;/li&gt;
&lt;li&gt;shiny new things&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But banks still run on Java, and guess what?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;So supply ↓&lt;/li&gt;
&lt;li&gt;Demand ↑&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opportunity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lets finish here...
&lt;/h3&gt;

&lt;p&gt;Java in 2026 is like:&lt;br&gt;
a boring Swiss bank account that quietly keeps getting richer&lt;br&gt;
Not hype.&lt;br&gt;
Not trendy.&lt;br&gt;
But extremely powerful where it matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And in finance…, and somehow, even this boring guy is leveraging himself on AI to get fun a nice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm not saying sitck with java, java is more than a programming language, it is a technology, we have for example Clojure that is a lisp way of coding that runs on JVM, how about Kotlin? My point is to be aware and awake, Java still rocks.&lt;/p&gt;

&lt;p&gt;posted &lt;a href="https://pvgomes.com/2026/02/07/java-in-2026-still-boring-powerful-and-money/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>backend</category>
      <category>discuss</category>
      <category>java</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why LLM predictions are dangerous for Finance?</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Thu, 21 Aug 2025 12:40:00 +0000</pubDate>
      <link>https://dev.to/pvgomes/why-llm-predictions-are-dangerous-for-finance-j2i</link>
      <guid>https://dev.to/pvgomes/why-llm-predictions-are-dangerous-for-finance-j2i</guid>
      <description>&lt;p&gt;Thats right, prediction are not the same as calculations, and LLMs don't calculate, they predict the next word.&lt;/p&gt;

&lt;p&gt;Stanford's HELM report shows GPT-4 hits 90%+ accuracy on math tasks. But 90% accuracy in financial calculations means 1 in 10 transactions could be wrong. Would you ship that to production?&lt;/p&gt;

&lt;h3&gt;
  
  
  Why FinTech Can't Ignore This
&lt;/h3&gt;

&lt;p&gt;If you're building payment systems, trading algorithms, or accounting software, AI math errors aren't just bugs—they're customer and compliance nightmares:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regulatory scrutiny&lt;/strong&gt;: Wrong calculations in financial reports = SEC problems&lt;br&gt;
&lt;strong&gt;Customer trust&lt;/strong&gt;: One miscalculated portfolio balance destroys credibility, FOR EVER. Who will trust in a financial company that doesn't calculate right?&lt;br&gt;
&lt;strong&gt;Audit trails&lt;/strong&gt;: How do you explain "the AI got confused" to auditors?&lt;br&gt;
&lt;strong&gt;Compound errors&lt;/strong&gt;: Small mistakes in interest calculations become massive losses, I mean, if you know the power of interest bearing you might get me&lt;/p&gt;

&lt;p&gt;I can say to you, I tested the most famous AI assistants and vibe-code tools in the market: &lt;code&gt;VScode with Github copilot, Cursor, Claude  code, Replit, you named it...&lt;/code&gt; All of them do a really good job to kick-off, they work also very well for some classical CRUD features and some next level coding as well, like improving the scalability of some parts of the code. But, when you let they go, just doing calculations and validating by them-selves, the problem start to get serious...&lt;/p&gt;
&lt;h3&gt;
  
  
  Real Code, Real Problems
&lt;/h3&gt;

&lt;p&gt;Let's see how AI math failures could break financial systems:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 1&lt;/strong&gt;: Interest Calculation Gone Wrong (Clojure by Claude Opus 4.1)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight clojure"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;defn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;compound-interest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;principal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="c1"&gt;;; AI confidently writes this...&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;principal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;Math/pow&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rate&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;;; Looks right, but what about edge cases?&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;compound-interest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;;; =&amp;gt; 162889.46&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;;; But AI might miss precision issues:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;compound-interest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;100000.01&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;;; Floating point errors&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;compound-interest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;-0.05&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c1"&gt;;; Negative rates break everything&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;compound-interest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;;; Edge case: time = 0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;: AI generates plausible code but misses edge cases that financial systems must handle. Negative interest rates, floating-point precision, and boundary conditions aren't just theoretical—they're regulatory requirements. &lt;/p&gt;

&lt;p&gt;And this is still very surface of the problem, we are still not mixing the problems, like a customer with a Credit Card bill that gets late, he pays a minimum and buys a new think of other interest rate that needs to consider the tax of the country. This is a perfect place for AI halucinations. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 2&lt;/strong&gt;: Portfolio Rebalancing Logic (Rust by DeepSeek-R1)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="n"&gt;rust&lt;/span&gt;&lt;span class="c1"&gt;// AI-suggested portfolio rebalancing&lt;/span&gt;
&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;rebalance_portfolio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;assets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="k"&gt;mut&lt;/span&gt; &lt;span class="nb"&gt;Vec&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Asset&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target_weights&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;total_value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;assets&lt;/span&gt;&lt;span class="nf"&gt;.iter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="nf"&gt;.map&lt;/span&gt;&lt;span class="p"&gt;(|&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="py"&gt;.value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nf"&gt;.sum&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="c1"&gt;// AI logic seems reasonable...&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;asset&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;assets&lt;/span&gt;&lt;span class="nf"&gt;.iter_mut&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="nf"&gt;.enumerate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;target_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;total_value&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;target_weights&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
        &lt;span class="n"&gt;asset&lt;/span&gt;&lt;span class="py"&gt;.value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;target_value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Wait... this isn't how rebalancing works!&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Asset&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;shares&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;: AI confidently generates code that looks mathematically sound but completely misunderstands the business logic. Real rebalancing involves buying/selling shares at market prices, not magically changing asset values.&lt;/p&gt;

&lt;p&gt;The AI pattern-matched "rebalancing" with "adjusting proportions" but missed the crucial financial mechanics.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's Missing in AI Math
&lt;/h3&gt;

&lt;p&gt;Real mathematical reasoning needs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Symbolic reasoning&lt;/strong&gt;: Apply rules systematically, not guess patterns&lt;br&gt;
&lt;strong&gt;Persistent memory&lt;/strong&gt;: Remember that principal = 100000 throughout the calculation&lt;br&gt;
&lt;strong&gt;Domain knowledge&lt;/strong&gt;: Understand that negative interest rates are possible in modern finance, also all possible caveats and laws&lt;br&gt;
&lt;strong&gt;Formal verification&lt;/strong&gt;: Prove that functions handle all valid inputs correctly&lt;br&gt;
&lt;strong&gt;Meta-cognition&lt;/strong&gt;: Know when it's uncertain about financial regulations&lt;/p&gt;

&lt;p&gt;But ok, and what...?&lt;br&gt;
Should we avoid AI in all financial systems? Of course not, also I'll never be this person saying that AI is useless, also not being this person saying AI is already replacing everything it sees. The fact is that this AI revolution, as everything in life lives in the middle term, I mean, neither black, neither white, besides we as a humans like to see polarization, the world doesn't work like that. That said, I suggest you, full usage of AI on financial world, but keep your aware and cautions ON, kind of creating your own guidelines, you can start from mine ones:&lt;/p&gt;

&lt;p&gt;AI usage guidelines for Finance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Double-check all AI-generated financial calculations&lt;/li&gt;
&lt;li&gt;Use math-optimized models (GPT-4, Claude Opus) but never trust them blindly&lt;/li&gt;
&lt;li&gt;Implement comprehensive validation layers&lt;/li&gt;
&lt;li&gt;Never let AI directly touch critical financial paths without supervision&lt;/li&gt;
&lt;li&gt;Maintain audit trails for all AI-assisted calculations&lt;/li&gt;
&lt;li&gt;Identify errors fast, rollback and learn from it&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Future
&lt;/h3&gt;

&lt;p&gt;Mathematics is the foundation of financial systems. An AI that truly understands math—not just mimics it—could revolutionize risk management, fraud detection, and algorithmic trading.&lt;/p&gt;

&lt;p&gt;But we're not there yet. Current LLMs can bluff convincingly, but financial markets don't accept "close enough."&lt;/p&gt;

&lt;p&gt;The future belongs to AI that knows the difference between prediction and calculation. Until then, trust but verify—especially with other people's money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2201.11903" rel="noopener noreferrer"&gt;The Limitations of Language Models&lt;/a&gt; - Academic deep dive&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crfm.stanford.edu/helm/" rel="noopener noreferrer"&gt;Stanford HELM Report&lt;/a&gt; - Comprehensive AI model evaluations&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=xYhkdO1esMM" rel="noopener noreferrer"&gt;SEC Guidance on AI in Finance - systemic risk on capital markets&lt;/a&gt; - Regulatory perspective&lt;br&gt;
&lt;a href="https://machinelearning.apple.com/research/illusion-of-thinking" rel="noopener noreferrer"&gt;Apple paper the Illusion of Thinking&lt;/a&gt; - Understanding the Strengths and Limitations of Reasoning Models via the Lens of Problem Complexity&lt;br&gt;
&lt;a href="https://arxiv.org/abs/2108.02897" rel="noopener noreferrer"&gt;Formal Verification in Financial Systems&lt;/a&gt; - Why math matters in finance&lt;br&gt;
&lt;a href="https://openai.com/index/gpt-4-research/" rel="noopener noreferrer"&gt;Mathematical Reasoning in AI&lt;/a&gt; - Current capabilities and limitations&lt;/p&gt;

</description>
      <category>fintech</category>
      <category>finance</category>
      <category>crypto</category>
      <category>llm</category>
    </item>
    <item>
      <title>Why I’m Betting on UTCP as a Serious Alternative to MCP</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Fri, 01 Aug 2025 13:37:03 +0000</pubDate>
      <link>https://dev.to/pvgomes/why-im-betting-on-utcp-as-a-serious-alternative-to-mcp-mhe</link>
      <guid>https://dev.to/pvgomes/why-im-betting-on-utcp-as-a-serious-alternative-to-mcp-mhe</guid>
      <description>&lt;p&gt;Over the past few years, I’ve worked on large-scale distributed systems where messaging, streaming, observability, and backpressure weren’t just technical details. They were daily blockers. Every protocol decision mattered, especially as teams scaled and complexity grew.&lt;/p&gt;

&lt;p&gt;That’s why when &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; was introduced in late 2024, I was genuinely excited. It brought a structured way to manage AI model contexts, enabling execution orchestration, consistent context propagation, and model-aware communication. In many ways, MCP filled a much-needed gap in the AI stack.&lt;/p&gt;

&lt;p&gt;But like any new protocol, it still has room to evolve.&lt;/p&gt;

&lt;p&gt;Recently, I spent some time reviewing a new proposal called &lt;strong&gt;UTCP (Unified Transport Control Protocol)&lt;/strong&gt;. After reading the RFC and supporting documentation, I believe it deserves serious consideration. Not because MCP is broken, but because UTCP addresses a different set of system-level needs that will likely become more relevant over time.&lt;/p&gt;

&lt;p&gt;If you’re working with MCP today or planning to adopt it, I think it’s worth understanding what UTCP is offering. Here’s why.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🧠 A Simple Code Comparison: MCP vs UTCP in Clojure&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before jumping to recommendations, here’s a simplified Clojure example that helps explain the difference in scope and philosophy between MCP and UTCP.&lt;/p&gt;

&lt;p&gt;This code is conceptual. It’s not connected to real-world libraries. The goal is to visualize the design mindset of each protocol.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;MCP – Wrapping Context Around Model Execution&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight clojure"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;defn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;run-inference&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;\[&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="sc"&gt;\]&lt;/span&gt;&lt;span class="w"&gt;  
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;\[&lt;/span&gt;&lt;span class="n"&gt;merged-context&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;merge&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:trace-id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;java.util.UUID/randomUUID&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="sc"&gt;\]&lt;/span&gt;&lt;span class="w"&gt;  
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:model&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="w"&gt;  
     &lt;/span&gt;&lt;span class="no"&gt;:input&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="w"&gt;  
     &lt;/span&gt;&lt;span class="no"&gt;:context&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;merged-context&lt;/span&gt;&lt;span class="w"&gt;  
     &lt;/span&gt;&lt;span class="no"&gt;:result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Inference result for input: "&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;)}))&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;;; Example usage  &lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;run-inference&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"gpt-4"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Summarize this article"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:user-id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"abc123"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MCP helps structure model requests by embedding metadata such as trace IDs, user roles, or request origin. The focus is on organizing context per call.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;UTCP – Streaming-Aware Transport with Flow Control&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight clojure"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;defn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;send-stream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;\[&lt;/span&gt;&lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="sc"&gt;\]&lt;/span&gt;&lt;span class="w"&gt;  
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;\[&lt;/span&gt;&lt;span class="n"&gt;session-id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;java.util.UUID/randomUUID&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="sc"&gt;\]&lt;/span&gt;&lt;span class="w"&gt;  
    &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;doseq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;\[&lt;/span&gt;&lt;span class="n"&gt;chunk&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="sc"&gt;\]&lt;/span&gt;&lt;span class="w"&gt;  
      &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sc"&gt;\&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;rand&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;;; simulate backpressure  &lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;println&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Transmitting chunk:"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chunk&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"with session:"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;session-id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;  
        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;println&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Backpressure triggered, delaying chunk:"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;&lt;span class="w"&gt;  
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:status&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;:ok&lt;/span&gt;&lt;span class="w"&gt;  
     &lt;/span&gt;&lt;span class="no"&gt;:session&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;session-id&lt;/span&gt;&lt;span class="w"&gt;  
     &lt;/span&gt;&lt;span class="no"&gt;:trace&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Trace ID: "&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;:trace-id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;))}))&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;;; Example usage  &lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;send-stream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;\[&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"world"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"this"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"is"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"UTCP"&lt;/span&gt;&lt;span class="sc"&gt;\]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:trace-id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"xyz789"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UTCP focuses on message flow, backpressure handling, and streaming behavior. It’s meant for transporting data in motion across services.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Quick Comparison&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;MCP&lt;/th&gt;
&lt;th&gt;UTCP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Purpose&lt;/td&gt;
&lt;td&gt;Contextual model execution&lt;/td&gt;
&lt;td&gt;Streaming-aware transport and control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Handles Streams?&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;Context passed manually&lt;/td&gt;
&lt;td&gt;Tracing built-in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backpressure&lt;/td&gt;
&lt;td&gt;Not handled&lt;/td&gt;
&lt;td&gt;Handled natively&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usage Style&lt;/td&gt;
&lt;td&gt;Wrap model calls&lt;/td&gt;
&lt;td&gt;Transmit and control stream behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Why I Think UTCP Is Worth Watching&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Designed for Streaming from the Start&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;UTCP handles continuous data flows as a first-class concern. It fits naturally into systems where data is not just requested but streamed, processed, and forwarded in near real-time.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Observability Is Built Into the Protocol&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;UTCP includes native support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Tracing identifiers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Telemetry at each node&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A simple message recorder to track flow paths&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don’t need extra tooling or manual hooks to understand how your system behaves.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Clear Separation of Layers&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;UTCP introduces a modular protocol structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Transport Layer&lt;/strong&gt; for message delivery and retries&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Control Layer&lt;/strong&gt; for routing and QoS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extension Layer&lt;/strong&gt; for optional features like compression, authentication, or domain-specific plugins&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easier to evolve and maintain in production environments.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Built-In Backpressure Handling&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Consumers can signal capacity to upstream producers directly within the protocol. That avoids the need for application-level workarounds and keeps message flow stable even under load.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Multiple Reliability Modes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;UTCP allows you to choose what level of message delivery makes sense:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;At-most-once&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At-least-once&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exactly-once (through optional extensions)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This kind of flexibility helps you avoid overengineering while still covering critical paths.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Attention to Security and Governance&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The protocol includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Support for tagging and metadata for policy enforcement&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hooks for authentication and authorization&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Audit-friendly structure out of the box&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is essential for teams operating in regulated industries or complex internal environments.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;My Recommendation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Am I saying you should drop MCP and move to UTCP, even though MCP just launched?&lt;/p&gt;

&lt;p&gt;Not really.&lt;/p&gt;

&lt;p&gt;I understand it’s an overwhelming amount of information, and we’re still learning how to extract more value from MCP. It’s early days, and MCP still has a lot of potential to fulfill.&lt;/p&gt;

&lt;p&gt;So my point is this: keep your eye on UTCP. It’s being built by people solving the right problems. If more people contribute to it, test it, and share feedback, we might end up with something that grows through the community. And who knows — maybe one day it becomes more powerful than anything released by the big tech players.&lt;/p&gt;

&lt;p&gt;If you’re someone who cares about protocol design, system behavior, and software that lasts, I think UTCP is worth your time.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;References&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;UTCP&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;UTCP RFC&lt;/strong&gt;: &lt;a href="https://github.com/utcp/specification/blob/main/utcp-RFC.md" rel="noopener noreferrer"&gt;utcp-RFC.md&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;UTCP Full Specification&lt;/strong&gt;: &lt;a href="https://github.com/utcp/specification" rel="noopener noreferrer"&gt;https://github.com/utcp/specification&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP Launch Announcement&lt;/strong&gt;: &lt;a href="https://openai.com/blog/dev-day-2024" rel="noopener noreferrer"&gt;OpenAI Dev Day 2024&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP Reference Docs&lt;/strong&gt;: &lt;a href="https://platform.openai.com/docs/guides/gpt/mcp" rel="noopener noreferrer"&gt;platform.openai.com/docs/guides/gpt/mcp&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP Overview Article&lt;/strong&gt;: &lt;a href="https://www.aisciences.ac/articles/introducing-mcp-model-context-protocol" rel="noopener noreferrer"&gt;Introducing the Model Context Protocol (MCP)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>utcp</category>
    </item>
    <item>
      <title>Now the layoffs … later software engineers will clean the vibecoding mess</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Fri, 01 Aug 2025 10:40:55 +0000</pubDate>
      <link>https://dev.to/pvgomes/now-the-layoffs-later-software-engineers-will-clean-the-vibecoding-mess-g43</link>
      <guid>https://dev.to/pvgomes/now-the-layoffs-later-software-engineers-will-clean-the-vibecoding-mess-g43</guid>
      <description>&lt;p&gt;Let’s get straight to the point: AI is taking &lt;strong&gt;Software Engineers place&lt;/strong&gt;, its faster to setup and bugless in the beginning… &lt;strong&gt;How about later&lt;/strong&gt;? How about after some changes and some adjustments in the core of the applications because of business decisions and world changes? What will happen? Get ready and lets analyze it together.&lt;/p&gt;

&lt;h2&gt;
  
  
  A shift that’s already underway
&lt;/h2&gt;

&lt;p&gt;AI is already changing the way software is built. It’s not a matter of &lt;em&gt;if&lt;/em&gt;, but &lt;em&gt;how fast&lt;/em&gt; you’re willing to accept, understand, and adapt to it. &lt;a href="https://finance.yahoo.com/news/minimum-salary-required-considered-upper-230037556.html?guccounter=1&amp;amp;guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&amp;amp;guce_referrer_sig=AQAAAGBxNs1QdYH_ZD5Ms7ZRoxpVRjcJLP6BX2vKdP3K4XuGTU3L3CWOb9sUjEIPbNF8be1Ayk_u8Kf4TgqsP_s3rSRzfi8E71v6cxgOY4Cmo_C4ztNmAbgA_lzIZ9ViXderUH3rQ7OCqTmhB-AJKzc1E5ikKmedrtb6bgtEexNIQPQ2" rel="noopener noreferrer"&gt;Many predict that by the end of this decade&lt;/a&gt;, AI will be responsible for producing up to &lt;strong&gt;90% of all code&lt;/strong&gt;. From powerfull code assistants like cursor to vibecoding nocode like Replit…&lt;br&gt;&lt;br&gt;
However, in the next two to three years, that number is unlikely to &lt;strong&gt;exceed 30%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why the gap&lt;/strong&gt;? While AI is excellent at producing results quickly, it struggles with the kind of complexity that emerges in large systems. Especially those tied to the messy logic of &lt;a href="https://www.infoq.com/articles/technology-change-human/" rel="noopener noreferrer"&gt;&lt;strong&gt;human behavior and business priorities&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Systems program building is an entropy-decreasing process, hence inherently metastable. Program maintenance is an entropy-increasing process, and even its most skillful execution only delays the subsidence of the system into unfixable obsolescence.”&lt;/em&gt;&lt;br&gt;&lt;br&gt;
― &lt;strong&gt;Frederick P. Brooks Jr.,&lt;/strong&gt; &lt;a href="https://www.goodreads.com/work/quotes/1905885" rel="noopener noreferrer"&gt;&lt;strong&gt;The Mythical Man-Month: Essays on Software Engineering&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s be clear: &lt;strong&gt;AI doesn’t struggle with logic&lt;/strong&gt;. It struggles with &lt;strong&gt;&lt;em&gt;us&lt;/em&gt;&lt;/strong&gt;. With people. Our decisions are influenced by emotion, intuition, and experience, not just data, even the most rational CEO’s and leaders. Think about when your partner says “I’m fine,” but you know they’re not. Or when a CEO kills a profitable project simply because they don’t trust the person behind it. AI can’t make sense of those things. And yet, the software it writes often needs to reflect and support decisions driven by them.&lt;/p&gt;

&lt;p&gt;In these situations, the issue isn’t just AI’s limitations, it’s the loop of translation: a human expresses intent in a prompt, an AI writes the code, and then another human needs to adapt and evolve that code within a real system. That back-and-forth creates cracks, especially when the system grows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rush for Speed
&lt;/h2&gt;

&lt;p&gt;Tools like GitHub Copilot and ChatGPT already help developers get more done, faster. Tasks that used to take days now take minutes. One developer using AI can produce what once took a team. This kind of acceleration will continue to attract businesses chasing quick results.&lt;/p&gt;

&lt;p&gt;Founders with limited technical knowledge, junior engineers, and even experienced developers are using AI to release features in record time. The benefits, faster launches, reduced costs, and smaller teams , are impossible to ignore.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hidden Cost
&lt;/h3&gt;

&lt;p&gt;But speed comes at a price. And that price is complexity, particularly when it’s invisible until too late.&lt;/p&gt;

&lt;p&gt;AI-generated code often lacks cohesion when integrated into bigger platforms. It might work in isolation, but struggles to scale or adapt when things change. As systems grow, AI can’t keep up with the ripple effects of design choices, performance bottlenecks, or architecture decisions that require long-term thinking.&lt;/p&gt;

&lt;p&gt;Many people using AI tools lack the background to recognize these challenges. They’re deploying code that solves today’s needs, but unintentionally creating massive maintenance costs down the line.&lt;/p&gt;

&lt;p&gt;AI doesn’t (yet) have a strong grasp of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;*   How to structure systems for adaptability&lt;/li&gt;
&lt;li&gt;*   When to prioritize performance over simplicity&lt;/li&gt;
&lt;li&gt;*   How one change can introduce cascading issues across multiple components&lt;/li&gt;
&lt;li&gt;*   Design patterns that keep software stable and understandable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without this knowledge, teams relying too heavily on AI will face rising error rates, longer recovery times, and growing frustration as systems break under pressure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hitting the Wall
&lt;/h2&gt;

&lt;p&gt;Yes, we’re heading toward a future where AI writes most of the code. But before that, many companies will face a harsh reality. Over the next few years, teams will hit a wall. Projects rushed with AI will become harder to maintain. Bugs will increase. Flexibility will vanish. The result? A growing demand for experienced engineers who can step in and make sense of the mess.&lt;/p&gt;

&lt;p&gt;This is why AI-generated code will likely plateau around 30% in the short term. Not because the technology isn’t powerful, but because building reliable systems takes more than outputting lines of code.. it takes real understanding.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Coming
&lt;/h2&gt;

&lt;p&gt;Eventually, AI tools will improve. They’ll learn to include context, track intent, and help design better systems, not just generate functions. Teams will also become more thoughtful in how they use AI, blending its speed with human insight.&lt;/p&gt;

&lt;p&gt;But for now, we need to stay cautious. The coming years will divide those who use AI to strengthen their codebase from those who use it to patch together short-term results.&lt;/p&gt;

&lt;p&gt;Software complexity won’t disappear just because AI can write quickly. And writing fast is not the same as writing well.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Case in Point
&lt;/h2&gt;

&lt;p&gt;Here’s a simple example from a study I’m currently finishing:&lt;/p&gt;

&lt;p&gt;A trading startup created a platform for currency exchange. Their five-year plan aimed to capture a large share of the global market. Instead of hiring 20 engineers, they used AI to build the entire platform with just two developers and a small team of product managers and analysts steering the process.&lt;/p&gt;

&lt;p&gt;The results were impressive, at first. They reduced bugs by over 40% compared to traditional teams, and their output was 70% higher.&lt;/p&gt;

&lt;p&gt;But then the market shifted. A new U.S. president introduced tariffs that made currency trading unprofitable. The company pivoted to focus on energy and oil trading instead.&lt;/p&gt;

&lt;p&gt;And this is where the problems began.&lt;/p&gt;

&lt;p&gt;Rebuilding the platform for the new strategy wasn’t just difficult, it was nearly impossible. What should have taken weeks would now take months. Why? Because the code was built by AI to solve specific problems with no clear documentation, no architectural foresight, and no long-term planning. The AI-generated scripts weren’t designed to adapt. And the people operating the system didn’t fully understand how it worked under the surface.&lt;/p&gt;

&lt;p&gt;Without experienced engineers, the company faced massive delays and rework. They had saved time upfront, but at the cost of flexibility when it mattered most.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This is why software engineers will matter more than ever in the years to come. Especially those with mid to senior-level experience. They won’t just write code, they’ll be the ones called in to fix what was built too fast, too recklessly, and with too little thought.&lt;/p&gt;

&lt;p&gt;AI might lead the charge, but humans will still be needed to make sense of the chaos that follows.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>techlayoffs</category>
      <category>layoffs</category>
    </item>
    <item>
      <title>Memory vs. Context in AI: Why ChatGPT Is Ahead , and Why That Matters</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Fri, 01 Aug 2025 10:36:54 +0000</pubDate>
      <link>https://dev.to/pvgomes/memory-vs-context-in-ai-why-chatgpt-is-ahead-and-why-that-matters-98o</link>
      <guid>https://dev.to/pvgomes/memory-vs-context-in-ai-why-chatgpt-is-ahead-and-why-that-matters-98o</guid>
      <description>&lt;p&gt;In the current AI arms race, everyone’s talking about models, benchmarks, multimodal capabilities, and token context windows. But &lt;strong&gt;very few talk about the most important differentiator for real-world usefulness: persistent memory.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you care about &lt;strong&gt;long-term productivity, personal assistants, or AI that actually understands you&lt;/strong&gt;, this is the piece you need.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤯 First: Memory ≠ Context
&lt;/h2&gt;

&lt;p&gt;This is where most misunderstandings begin. People assume that because an AI like Claude or Gemini “remembers” what they said 2 minutes ago, it has memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s the real difference:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;What it really means&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Temporary chat history , only visible in the current conversation&lt;/td&gt;
&lt;td&gt;Ask something, get a reply, it “remembers” it… until you close the tab.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Long-term, persistent knowledge across sessions&lt;/td&gt;
&lt;td&gt;Tell it your project goals today, it brings them up automatically next week.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Context is like short-term RAM. Memory is like a persistent database.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Why Memory Is Game-Changing
&lt;/h2&gt;

&lt;p&gt;If you’re building anything that takes more than one session , like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An investment strategy
&lt;/li&gt;
&lt;li&gt;A health or fitness tracking system
&lt;/li&gt;
&lt;li&gt;A language-learning roadmap
&lt;/li&gt;
&lt;li&gt;A long-term coding or business project
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…then memory turns ChatGPT into something more than a chatbot.&lt;/p&gt;

&lt;p&gt;It becomes a &lt;strong&gt;personal AI operating system&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Remember this as part of my Poland tax planning.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This fitness routine is temporary , don’t store it long-term.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then weeks later:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What was my Polish safe plan again?”&lt;br&gt;&lt;br&gt;
→ ✅ &lt;em&gt;Instant recall.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🏆 Why ChatGPT Is Ahead of Claude, Gemini, DeepSeek, and Mistral
&lt;/h2&gt;

&lt;p&gt;Let’s be direct:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Memory Support?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;Full persistent memory. You can view, edit, delete memory.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;Great summarizer. No memory between chats.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemini&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No (yet)&lt;/td&gt;
&lt;td&gt;Only has session-based context. Memory is experimental.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeepSeek&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;Great at coding. No long-term memory.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mistral&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;Open-weight model. Memory must be built externally.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;ChatGPT is currently the only mainstream model with memory you can interact with, control, and build on.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 But Here’s the Trap: More Data ≠ More Intelligence
&lt;/h2&gt;

&lt;p&gt;Let’s kill a myth:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If I upload all my Google Drive, I’ll have the smartest AI assistant ever!”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🚨 False.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dumping massive data without structure = chaos.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;LLMs aren’t designed to handle unfiltered, redundant, outdated, or low-signal content.&lt;/li&gt;
&lt;li&gt;Memory slots are &lt;strong&gt;limited&lt;/strong&gt; (about 100–300 facts/pieces of context).&lt;/li&gt;
&lt;li&gt;Without prioritization, your AI assistant becomes a hallucination machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of sharp answers, you get:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Based on that 2019 PDF and one random bullet in a meeting note, I recommend…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nope. Not useful. Not smart.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧱 The Right Way: Build a Personal AI OS
&lt;/h2&gt;

&lt;p&gt;If you want to &lt;strong&gt;build an actual assistant that works&lt;/strong&gt;, here's the high-level approach:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Organize your knowledge&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Group your files and info into areas: &lt;code&gt;Finance&lt;/code&gt;, &lt;code&gt;Health&lt;/code&gt;, &lt;code&gt;Projects&lt;/code&gt;, &lt;code&gt;Legal&lt;/code&gt;, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Curate, don’t dump&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Feed in only the relevant conclusions, not raw documents. You want distilled insights, not clutter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Assign Relevance&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Tag info as: &lt;code&gt;Core&lt;/code&gt;, &lt;code&gt;Important&lt;/code&gt;, &lt;code&gt;Reference&lt;/code&gt;, or &lt;code&gt;Temporary&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use Memory Intentionally&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Tell ChatGPT:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Remember this as part of my Finance path.”&lt;br&gt;&lt;br&gt;
Or:&lt;br&gt;&lt;br&gt;
“Forget this ankle injury stuff from July , not important anymore.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Avoid Data Hoarding&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
More memory ≠ better output. High-quality context &amp;gt; massive memory dumps.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧠 Final Thought: Memory Is the Real AI Breakthrough
&lt;/h2&gt;

&lt;p&gt;Everyone’s talking about longer context windows and flashy benchmarks, but they’re missing the point:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The future isn’t just smart AI , it’s AI that knows &lt;em&gt;you&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ChatGPT is leading that future right now.&lt;/p&gt;

&lt;p&gt;So instead of asking, “Which model is smartest?” start asking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Which model &lt;em&gt;knows me&lt;/em&gt;?”&lt;/li&gt;
&lt;li&gt;“Which one improves over time with my goals?”&lt;/li&gt;
&lt;li&gt;“Which one helps me build a system, not just answer a prompt?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Memory is not a feature , it’s the &lt;strong&gt;foundation of a real relationship with your AI.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Want help designing your personal memory architecture?&lt;br&gt;&lt;br&gt;
DM me, or just start with this:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“ChatGPT, remember this as part of my personal operating system.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s build something smarter than a search bar.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>memory</category>
      <category>context</category>
    </item>
    <item>
      <title>staging and QA will not save your systems</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Fri, 20 Dec 2024 16:20:32 +0000</pubDate>
      <link>https://dev.to/pvgomes/staging-and-qa-will-not-save-your-systems-363p</link>
      <guid>https://dev.to/pvgomes/staging-and-qa-will-not-save-your-systems-363p</guid>
      <description>&lt;p&gt;In the now named "traditional" software development workflows, staging environments and QA testing have been treated as essential steps to ensure software quality, right? However, in our current fast-crazy-ia-uncertain environments, these practices often fall short. Let’s explore why this approach is flawed and how a more clear/problem-solving approach addresses these shortcomings.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Limitations of Staging Environments
&lt;/h4&gt;

&lt;p&gt;A staging environment is intended to replicate production as closely as possible, or at least this is the goal. However, this replication is never perfect, leading to some problems like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Environmental Drift&lt;/strong&gt;: Staging environments rarely mirror production completely. Differences in configurations, data, and scale mean issues encountered in production might not surface in staging, even having a perfect infra as code you have and having perfect isolated containers configurations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Maintenance Overhead&lt;/strong&gt;: Keeping a staging environment in sync with production requires constant effort, adding operational complexity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;False Security&lt;/strong&gt;: A successful test in staging does not guarantee that the software will work flawlessly in production. Relying on staging can create a false sense of confidence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cost&lt;/strong&gt;: Staging environments consume resources and increase costs without necessarily providing commensurate value.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Why QA Cannot Fully Represent Customer Behavior
&lt;/h4&gt;

&lt;p&gt;QA engineers focus at identifying edge cases, as funny illustrated in the classic meme:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A QA engineer walks into a bar. Orders a beer. Orders 0 beers. Orders a lizard. Orders -1 beers. Orders a alijskjficcckk.&lt;/p&gt;

&lt;p&gt;First real customer walks in and asks where the bathroom is. The bar bursts into flames, killing everyone.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This rigorous testing is essential to ensure the system handles unexpected inputs gracefully. However, QA processes often miss real-world scenarios that customers encounter. For instance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Unpredictable User Behavior&lt;/strong&gt;: Customers interact with software in ways that no QA process can fully anticipate. For example, a QA engineer might focus on functional correctness, while a customer might inadvertently trigger a critical bug by navigating an uncommon path.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Environment Differences&lt;/strong&gt;: Real customers operate in diverse environments with varying network speeds, devices, and configurations that QA tests might not cover.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the joke’s conclusion, the real customer asks, “Where’s the bathroom?”—an ordinary scenario—and the entire system fails. This underscores the gap between QA testing and real-world usage.&lt;/p&gt;

&lt;h4&gt;
  
  
  A Better Validation Flow for Modern Companies
&lt;/h4&gt;

&lt;p&gt;To mitigate these challenges, modern software development practices emphasize a validation flow designed to identify and address issues in production quickly and efficiently:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Unit Tests&lt;/strong&gt;: These form the foundation by validating individual components in isolation, ensuring basic correctness.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integration Tests&lt;/strong&gt;: These ensure that components work together as expected, catching issues that unit tests might miss.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Canary Deployments&lt;/strong&gt;: Instead of using a staging environment, deploy changes to a small subset of production users. This allows teams to observe real-world behavior with minimal risk.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feature Flags&lt;/strong&gt;: Feature flags enable teams to release features to specific user groups, providing granular control over the rollout process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rollout Approach&lt;/strong&gt;: Gradually increase the user base for new features, monitoring for issues at each step. This minimizes the impact of potential problems.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Advantages of the real problem-solving approach
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-World Validation&lt;/strong&gt;: By testing directly in production, teams gain insight into actual customer behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster Feedback Loops&lt;/strong&gt;: Canary deployments and feature flags enable rapid iteration, reducing time to resolution for issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Efficiency&lt;/strong&gt;: Eliminating staging environments reduces operational overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Customer Experience&lt;/strong&gt;: A gradual rollout with real-time monitoring ensures issues are addressed before they impact a large user base.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recommended Libraries and Tools
&lt;/h4&gt;

&lt;p&gt;To implement this approach effectively, consider these tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unit Testing&lt;/strong&gt;: &lt;a href="https://junit.org/junit5/" rel="noopener noreferrer"&gt;JUnit&lt;/a&gt;, &lt;a href="https://mochajs.org/" rel="noopener noreferrer"&gt;Mocha&lt;/a&gt;, &lt;a href="https://pytest.org/" rel="noopener noreferrer"&gt;PyTest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration Testing&lt;/strong&gt;: &lt;a href="https://www.cypress.io/" rel="noopener noreferrer"&gt;Cypress&lt;/a&gt;, &lt;a href="https://www.postman.com/" rel="noopener noreferrer"&gt;Postman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canary Deployments&lt;/strong&gt;: &lt;a href="https://argoproj.github.io/argo-rollouts/" rel="noopener noreferrer"&gt;Argo Rollouts&lt;/a&gt;, &lt;a href="https://launchdarkly.com/" rel="noopener noreferrer"&gt;LaunchDarkly&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature Flags&lt;/strong&gt;: &lt;a href="https://www.getunleash.io/" rel="noopener noreferrer"&gt;Unleash&lt;/a&gt;, &lt;a href="https://www.flagsmith.com/" rel="noopener noreferrer"&gt;Flagsmith&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring&lt;/strong&gt;: &lt;a href="https://www.datadoghq.com/" rel="noopener noreferrer"&gt;Datadog&lt;/a&gt;, &lt;a href="https://newrelic.com/" rel="noopener noreferrer"&gt;New Relic&lt;/a&gt;, &lt;a href="https://grafana.com/" rel="noopener noreferrer"&gt;Grafana&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;Staging environments and QA testing have their place but are insufficient to ensure software quality in modern, customer-centric organizations. By leveraging a combination of unit tests, integration tests, canary deployments, feature flags, and gradual rollouts, teams can validate software in real-world conditions, reducing risk and delivering a superior user experience. This approach not only aligns with modern practices but also ensures that systems are truly ready for customer use.&lt;/p&gt;

</description>
      <category>staging</category>
      <category>qa</category>
    </item>
    <item>
      <title>Understanding Conways Law and Its Impact on Software Engineering teams</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Fri, 20 Dec 2024 16:17:18 +0000</pubDate>
      <link>https://dev.to/pvgomes/understanding-conways-law-and-its-impact-on-software-engineering-teams-4b52</link>
      <guid>https://dev.to/pvgomes/understanding-conways-law-and-its-impact-on-software-engineering-teams-4b52</guid>
      <description>&lt;h1&gt;
  
  
  Understanding Conway's Law and Its Impact on Software Engineering Teams
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Conway's Law&lt;/strong&gt;, introduced by computer scientist Melvin Conway in 1968, states:&lt;br&gt;&lt;br&gt;
&lt;em&gt;"Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure."&lt;/em&gt;  &lt;/p&gt;

&lt;p&gt;This observation implies that the architecture of a software system will inherently reflect the communication patterns of the teams that develop it. While Conway's Law provides insight into the relationship between organizational structure and system design, it can have significant negative effects on software engineering if not managed properly.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How Conway's Law Can Negatively Impact Software Engineering Teams&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fragmented Systems Reflect Team Silos&lt;/strong&gt;
When teams are structured around specific functions (e.g., frontend, backend, QA), their communication boundaries often create systems with poor integration. This can lead to overly complex architectures, such as tightly coupled components that are hard to scale or maintain.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example: A team responsible for APIs may build services optimized for their goals, while the frontend team struggles to use those APIs effectively due to mismatched requirements.  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduced Collaboration and Innovation&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Communication gaps between teams often result in misaligned goals. This leads to technical debt, duplicated efforts, and missed opportunities for innovation, as teams focus on isolated objectives rather than holistic outcomes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Difficulty Scaling&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
As organizations grow, rigid team structures often exacerbate the challenges of scaling software. Misaligned teams may create software components that work well independently but fail under the stress of integration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Suboptimal User Experience&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
When teams are organized based on internal considerations rather than user needs, the resulting product often fails to deliver a seamless user experience. For instance, a customer-facing app might feel disjointed because the teams responsible for different features don't communicate effectively.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Why Define the Software Platform First&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Instead of organizing teams first and letting Conway's Law dictate system design, a better approach is to define the software platform and architecture first. Then, structure teams to align with the system's goals and user needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits of This Approach
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User-Centric Design&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
By prioritizing the platform's architecture, organizations ensure the system meets user needs. Teams can then be aligned around specific user journeys or services, leading to cohesive and optimized user experiences.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Modularity&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A platform-first approach encourages a modular architecture (e.g., microservices), which is easier to scale and maintain. Teams can then be structured to own distinct modules, reducing dependencies and promoting autonomy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cross-Functional Collaboration&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Defining the software system first often highlights the need for cross-functional teams, where members with diverse skills collaborate to own end-to-end delivery. This minimizes communication bottlenecks and fosters innovation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flexibility and Scalability&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Teams organized around a well-defined system architecture are better equipped to adapt as the platform evolves. This agility is critical in dynamic industries where software requirements change frequently.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Examples and References&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Spotify Model
&lt;/h3&gt;

&lt;p&gt;Spotify structures its teams into "squads" that own specific user-facing or system-level functionalities. This organizational approach supports their modular platform architecture, enabling faster feature development and scaling.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Industry Case Study
&lt;/h3&gt;

&lt;p&gt;The failure of monolithic systems like the healthcare.gov rollout in the U.S. highlights how mismatched team structures can hinder project success. Conversely, companies like Amazon organize teams around their microservices platform, ensuring high autonomy and efficiency.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Conway's Law reveals the inherent connection between organizational structure and software architecture. To mitigate its negative effects, companies should prioritize designing their software platform before defining their team structure. This ensures the system reflects user needs rather than internal silos, fostering innovation, scalability, and better collaboration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Melvin Conway's original paper on the topic: &lt;em&gt;How Do Committees Invent?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;"Team Topologies" by Matthew Skelton and Manuel Pais: A practical guide on aligning team structures with software architecture.
&lt;/li&gt;
&lt;li&gt;Spotify Engineering Culture, Part 1: Insights into their team-first, system-driven approach to scaling.
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>conwayslaw</category>
    </item>
    <item>
      <title>We Need to Talk About Cloud Repatriation</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Wed, 07 Aug 2024 17:34:52 +0000</pubDate>
      <link>https://dev.to/pvgomes/we-need-to-talk-about-cloud-repatriation-62o</link>
      <guid>https://dev.to/pvgomes/we-need-to-talk-about-cloud-repatriation-62o</guid>
      <description>&lt;p&gt;The tech world, like almost everything in this world, is cyclical, right? In this new cycle, a new wave is coming, and it’s within the infrastructure world. After a boom in cloud computing and then code as a service, the new trend is the opposite: cloud repatriation. It's a term that has been popping up more frequently in tech circles, but what exactly does it mean? The bigger question is, why?&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Cloud Repatriation
&lt;/h3&gt;

&lt;p&gt;Cloud repatriation describes a shift away from the cloud and back to on-premises infrastructure. Cloud repatriators move their data, applications, or workloads from a public cloud environment back to an on-premises or local data center. "While the cloud certainly has its merits, it's not a one-size-fits-all solution." This sentiment encapsulates the core reason behind the repatriation trend. Companies are recognizing that although cloud computing offers significant advantages, it also presents challenges that can make on-premises solutions more appealing in certain contexts. And now that we have more tools that make it easier to set up a full infrastructure with Infrastructure as Code (IaC), like Terraform, Ansible, Pulumi, and OpenTofu, why not do it on our own servers?&lt;/p&gt;

&lt;h3&gt;
  
  
  The Motivations Behind Cloud Repatriation
&lt;/h3&gt;

&lt;p&gt;After years of being told that migrating to the cloud would save money and provide flexibility, many businesses are rethinking their strategy. Several factors have driven the rise of cloud repatriation. But make no mistake, cost is the big one. While a move to the cloud could theoretically save you money, the promise often falls short.&lt;/p&gt;

&lt;h4&gt;
  
  
  Cost
&lt;/h4&gt;

&lt;p&gt;Many companies hit hardest by cloud costs made their move to the cloud with a "lift-and-shift" strategy, where existing applications are moved to the cloud without any modifications to leverage the cloud's scalable and elastic infrastructure. While this method seems straightforward, these applications, by their nature, are not inherently optimized for the cloud environment. Consequently, they can consume more resources and become more expensive to operate than anticipated.&lt;/p&gt;

&lt;h4&gt;
  
  
  Control
&lt;/h4&gt;

&lt;p&gt;With on-premises infrastructure, companies have full control over their data and applications, something not always possible with cloud services. This control allows for customization and fine-tuning to suit specific business needs, which can be a big factor for many businesses.&lt;/p&gt;

&lt;h4&gt;
  
  
  Internal Policies and Compliance
&lt;/h4&gt;

&lt;p&gt;Certain industries, particularly those dealing with sensitive data, internal policies, and compliance requirements, may necessitate moving away from the cloud. In such cases, having direct control over data can help meet stringent security standards.&lt;/p&gt;

&lt;h4&gt;
  
  
  Storage
&lt;/h4&gt;

&lt;p&gt;With the explosion of data, some organizations need vast and growing amounts of it, which can get expensive on the cloud. Repatriating this data can be a cost-effective solution for managing large-scale storage needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Downsides of Cloud Repatriation
&lt;/h3&gt;

&lt;p&gt;Of course, like any major shift, cloud repatriation has its challenges. Infrastructure needs, such as the requirement for physical space and hardware, can pose hurdles. There's also the need to have in-house expertise to manage and maintain this equipment, which can be costly.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Upsides of On-Premises Infrastructure
&lt;/h3&gt;

&lt;p&gt;Despite the potential drawbacks, returning to on-premises infrastructure has its benefits. Apart from cost savings and better control, businesses may find that performance is improved when data and applications are stored locally. This can lead to quicker response times and better service for customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Navigating the Shift Back to On-Premises
&lt;/h3&gt;

&lt;p&gt;If your business is considering cloud repatriation, careful planning is crucial. Begin by evaluating your needs and resources. Identify which applications and data would benefit most from being brought in-house. Also, consider seeking advice from IT professionals with cloud repatriation experience to help guide your transition.&lt;/p&gt;

&lt;h3&gt;
  
  
  How About a Hybrid Approach?
&lt;/h3&gt;

&lt;p&gt;As with many IT business decisions, the answer may lie somewhere in between. A hybrid approach to IT infrastructure is an effective strategy for businesses seeking to balance the benefits of cloud services and on-premises solutions. With this model, you can leverage the scalability and flexibility of the cloud while maintaining critical data and applications in your own infrastructure for enhanced control and security. By adopting a hybrid approach, you can tailor your IT landscape to fit your unique needs, optimizing for cost, performance, and compliance.&lt;/p&gt;

&lt;p&gt;A hybrid environment can also be a stepping stone if you're wary of full cloud adoption or reconsidering your cloud-first strategies. It offers a middle ground, permitting a more gradual transition that can be adjusted over time. Finally, you can keep sensitive workloads in-house while still enjoying the innovation and modernization opportunities that cloud computing brings. This flexibility can prove invaluable as technology and business requirements continue to evolve at a rapid pace.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Thoughts
&lt;/h3&gt;

&lt;p&gt;Sure, no crazy CTO or director will turn the wheal without thinking, and sure the cloud certainly has its merits, it's not a one-size-fits-all solution. As more businesses explore cloud repatriation, it's clear that a balanced approach that combines the strengths of both on-premises and cloud-based solutions might be the best strategy moving forward.&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;"Cloud Computing: Concepts, Technology &amp;amp; Architecture"&lt;/strong&gt; by Thomas Erl, Ricardo Puttini, and Zaigham Mahmood - This book provides a comprehensive understanding of cloud computing, including various strategies and architectures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;"Architecting the Cloud: Design Decisions for Cloud Computing Service Models (SaaS, PaaS, and IaaS)"&lt;/strong&gt; by Michael J. Kavis - This book offers insights into making informed decisions about cloud service models and architectures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;"The Cloud Adoption Playbook: Proven Strategies for Transforming Your Organization with the Cloud"&lt;/strong&gt; by Moe Abdula, Ingo Averdunk, Roland Barcia, Kyle Brown, Ndu Emuchay, and Glen G. Mella - This book discusses strategies for cloud adoption and how to effectively manage cloud and on-premises environments.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>cloud</category>
      <category>onpremise</category>
    </item>
    <item>
      <title>Why are working agreements crucial in engineering teams?</title>
      <dc:creator>Paulo Victor Leite Lima Gomes</dc:creator>
      <pubDate>Thu, 18 Jul 2024 15:05:07 +0000</pubDate>
      <link>https://dev.to/pvgomes/why-are-working-agreements-crucial-in-engineering-teams-1mon</link>
      <guid>https://dev.to/pvgomes/why-are-working-agreements-crucial-in-engineering-teams-1mon</guid>
      <description>&lt;p&gt;Humans are inherently social, hardwired for connection and collaboration. From ancient times, our ancestors formed tribes and communities for survival, nowadays it happens to everyone for different reasons like evolution, well-being and winning a championship or business growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  We need to socialize
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft74l51ntewn88dx47plq.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft74l51ntewn88dx47plq.jpeg" alt="socializing imagem with birds" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;As mention in the netflix documentary about How to Live to 100, Wherever You Are in the World one of crucial point about longevity is "Connect with others as often as possible"&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Working in groups lets us use different skills and views, leading to new solutions and better decisions. When people work together, they bring their unique talents and ideas, which can combine to create something greater than they could alone. Teamwork boosts creativity as members build on each other’s ideas, creating new thoughts and discoveries. For engineering teams this is pretty much the same, even if you work with a small team, establishing some rules are important to avoid misalignment during the daily work. For that, it is good to sit together and create what we call "Working Agreements". &lt;/p&gt;

&lt;h2&gt;
  
  
  Working agreements
&lt;/h2&gt;

&lt;p&gt;Working agreements or team agreements exist to establish a common understanding of how the team will work together, define expectations, and create a foundation for effective collaboration. &lt;/p&gt;

&lt;p&gt;Here's a breakdown of why working agreements are important and examples of important projects that use them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Importance of Working Agreements
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clarity and Expectations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Working agreements clearly define roles, responsibilities, and processes within the team. This ensures that all members know what is expected of them and what they can expect from others.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Conflict Resolution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;By setting ground rules for communication and collaboration, working agreements help in resolving conflicts by providing a framework for addressing disagreements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Efficiency and Productivity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Teams with well-defined working agreements can work more efficiently as they spend less time dealing with misunderstandings and more time focusing on their work.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Accountability:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Working agreements hold team members accountable for their contributions and adherence to the agreed-upon processes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cohesion and Culture:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They help build a positive team culture by fostering mutual respect and understanding among team members.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Who Uses Working Agreements?
&lt;/h3&gt;

&lt;p&gt;Working agreements are used by various types of teams, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Software Development Teams:&lt;/strong&gt; Both in-house and remote development teams use working agreements to coordinate efforts and ensure consistent practices. For distributed teams are highly recommended given the fact that people might not be able even to talk on synchronous way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agile Teams:&lt;/strong&gt; Agile methodologies like Scrum and Kanban often emphasize the use of working agreements to support iterative and collaborative work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open Source Projects:&lt;/strong&gt; Many open source projects adopt working agreements, or similar practices, to manage contributions from a diverse and geographically distributed group of developers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to apply it?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsznboeuogc3q472bv3kt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsznboeuogc3q472bv3kt.jpeg" alt="how to apply working agreements" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s not a big deal or rocket science. I recommend organizing a meeting with your team to start writing down basic guidelines for working together. These guidelines can include anything that will make daily work easier and ensure everyone is on the same page. For example, decide which tool to use for communication: Slack, Discord, WhatsApp? How will you interact there—via channels or direct messages (DMs)? Will you have a plan for your team? Are you going to follow a project management methodology? Which one—Scrum, for instance?&lt;/p&gt;

&lt;p&gt;After reaching an agreement, make sure to write it down somewhere accessible to the entire team, such as GitHub, Google Docs, or Confluence. Also, review it regularly and use it as onboarding material for new members. Below, I've listed some famous guidelines from open-source projects that use the same contribution ideas. They have a broader approach, but the rules and guidelines generally follow the same principles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples guidelines and agreements
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. &lt;strong&gt;Linux Kernel:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;The Linux kernel project has a well-defined contribution process documented in its &lt;a href="https://www.kernel.org/doc/html/latest/process/code-of-conduct.html" rel="noopener noreferrer"&gt;Code of Conduct&lt;/a&gt; and &lt;a href="https://www.kernel.org/doc/html/latest/process/contributing.html" rel="noopener noreferrer"&gt;Contributor Covenant&lt;/a&gt;. These documents outline how contributors should interact, resolve conflicts, and participate in the project. While not a "working agreement" in the traditional sense, they serve a similar purpose by setting expectations for behavior and contribution.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. &lt;strong&gt;GNU Project:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;The GNU Project, which oversees the development of the GNU operating system and various software, follows the &lt;a href="https://www.gnu.org/philosophy/kind-communication.html" rel="noopener noreferrer"&gt;GNU Kind Communication Guidelines&lt;/a&gt;. These guidelines emphasize respectful communication and cooperation, serving as a working agreement to foster a collaborative environment.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. &lt;strong&gt;Apache Software Foundation (ASF):&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;The Apache Software Foundation hosts numerous open source projects, each with its own set of governance and contribution guidelines. For example, the &lt;a href="https://www.apache.org/foundation/policies/conduct.html" rel="noopener noreferrer"&gt;Apache Software Foundation Code of Conduct&lt;/a&gt; applies to all ASF projects, outlining expected behaviors and processes for collaboration.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. &lt;strong&gt;Mozilla:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Mozilla, the organization behind the Firefox browser and other open source projects, has a &lt;a href="https://www.mozilla.org/en-US/about/governance/policies/participation/" rel="noopener noreferrer"&gt;Community Participation Guidelines&lt;/a&gt; document. This serves as a working agreement by defining how contributors should engage with one another and the broader community.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Working agreements are a vital component of successful engineering teams, whether in traditional settings or open source projects. They provide structure, clarity, and a framework for collaboration that helps teams work more effectively and harmoniously. Projects like the Linux kernel, GNU, Apache, and Mozilla illustrate how such agreements can be implemented in open source environments to manage diverse contributions and maintain a positive community atmosphere and in the end, deliver one of the most important legacies for the world.&lt;/p&gt;

&lt;p&gt;If you as a software engineer, an engineering manager or a person outside of the IT industry feels that your team takes too much time in solving simple problems, I suggest you try it.&lt;/p&gt;

</description>
      <category>team</category>
      <category>teamwork</category>
      <category>agile</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
