<?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: joietej</title>
    <description>The latest articles on DEV Community by joietej (@joietej).</description>
    <link>https://dev.to/joietej</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%2F243157%2Fdb73c569-ba17-4225-a791-18b2cacc18b8.jpeg</url>
      <title>DEV Community: joietej</title>
      <link>https://dev.to/joietej</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joietej"/>
    <language>en</language>
    <item>
      <title>The Old Guard vs. The New Way: Traditional Infrastructure Management vs. Modern DevOps</title>
      <dc:creator>joietej</dc:creator>
      <pubDate>Sun, 01 Mar 2026 16:05:45 +0000</pubDate>
      <link>https://dev.to/joietej/the-old-guard-vs-the-new-way-traditional-infrastructure-management-vs-modern-devops-3epo</link>
      <guid>https://dev.to/joietej/the-old-guard-vs-the-new-way-traditional-infrastructure-management-vs-modern-devops-3epo</guid>
      <description>&lt;p&gt;&lt;em&gt;How we went from "don't touch the server" to "let's destroy it and rebuild it in 30 seconds"&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;If you've been in software long enough, you remember it. The sacred server room. The deployment checklist that was 47 steps long. The one person in the team who &lt;em&gt;actually&lt;/em&gt; knew how the production server was configured — and everyone praying they never went on vacation.&lt;/p&gt;

&lt;p&gt;That was the world of traditional infrastructure management. And while it worked (mostly), it also held teams back in ways we didn't fully appreciate until the DevOps revolution changed everything.&lt;/p&gt;

&lt;p&gt;Let's walk through what's changed, why it matters, and what the shift really looks like on the ground.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Traditional Way: Servers Are Pets
&lt;/h2&gt;

&lt;p&gt;In the traditional model, servers were &lt;strong&gt;pets&lt;/strong&gt; — lovingly named, carefully maintained, and irreplaceable. Think &lt;code&gt;PROD-SVR-01&lt;/code&gt;, hand-configured by a sysadmin over a weekend, with configuration details living in someone's head (or if you were lucky, a Word document from 2014).&lt;/p&gt;

&lt;h3&gt;
  
  
  How deployments worked
&lt;/h3&gt;

&lt;p&gt;The typical deployment in a traditional setup looked something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A developer writes code and "throws it over the wall" to the operations team.&lt;/li&gt;
&lt;li&gt;Ops receives a deployment package — a ZIP file, an MSI, a WAR file — along with a set of instructions.&lt;/li&gt;
&lt;li&gt;Someone remotes into the production server (often via RDP or SSH).&lt;/li&gt;
&lt;li&gt;They manually stop services, back up files, copy over new binaries, update config files, restart services.&lt;/li&gt;
&lt;li&gt;They test by opening the browser and clicking around.&lt;/li&gt;
&lt;li&gt;If something breaks, they roll back by restoring the backup. Hopefully it works.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This process was slow, error-prone, and terrifying. Friday deployments were avoided like the plague. "Change Freeze" periods lasted weeks. And every release felt like defusing a bomb.&lt;/p&gt;

&lt;h3&gt;
  
  
  Infrastructure provisioning
&lt;/h3&gt;

&lt;p&gt;Need a new server? Here's what that looked like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Raise a ticket with the infrastructure team.&lt;/li&gt;
&lt;li&gt;Wait 2–6 weeks for hardware procurement and rack-and-stack.&lt;/li&gt;
&lt;li&gt;Sysadmin manually installs the OS, patches it, configures networking, installs dependencies.&lt;/li&gt;
&lt;li&gt;Another ticket to the security team for firewall rules.&lt;/li&gt;
&lt;li&gt;Another ticket to the DBA for database access.&lt;/li&gt;
&lt;li&gt;Hope that the staging environment is "close enough" to production. (Spoiler: it never was.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The pain points
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Snowflake servers&lt;/strong&gt;: Every environment was unique. "Works on my machine" was a daily reality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manual, undocumented processes&lt;/strong&gt;: Tribal knowledge ruled. If the person who set it up left, you were in trouble.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slow feedback loops&lt;/strong&gt;: Developers wouldn't know their code broke production until days or weeks later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fear of change&lt;/strong&gt;: Because deployments were risky, teams deployed less often — which paradoxically made each deployment &lt;em&gt;riskier&lt;/em&gt; because it packed in more changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blame culture&lt;/strong&gt;: Dev blamed Ops. Ops blamed Dev. Nobody owned the full pipeline.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Modern DevOps Way: Servers Are Cattle
&lt;/h2&gt;

&lt;p&gt;In the DevOps world, servers are &lt;strong&gt;cattle&lt;/strong&gt; — identical, numbered, and replaceable. If one gets sick, you don't nurse it back to health. You terminate it and spin up a new one. The entire infrastructure is defined in code, versioned, reviewed, and automated.&lt;/p&gt;

&lt;h3&gt;
  
  
  How deployments work now
&lt;/h3&gt;

&lt;p&gt;A modern CI/CD pipeline looks radically different:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developer pushes code to a Git branch.&lt;/li&gt;
&lt;li&gt;A pull request triggers automated builds, linting, unit tests, integration tests, and security scans.&lt;/li&gt;
&lt;li&gt;On merge to &lt;code&gt;main&lt;/code&gt;, the CI/CD pipeline (Azure DevOps, GitHub Actions, GitLab CI — pick your flavor) automatically builds a container image or deployment artifact.&lt;/li&gt;
&lt;li&gt;The pipeline deploys to a staging environment that is &lt;em&gt;identical&lt;/em&gt; to production (because both are defined by the same Infrastructure as Code templates).&lt;/li&gt;
&lt;li&gt;Automated smoke tests and health checks run.&lt;/li&gt;
&lt;li&gt;If everything passes, the pipeline promotes to production — often using blue-green deployments or canary releases to minimize risk.&lt;/li&gt;
&lt;li&gt;Monitoring and alerting kick in immediately. If error rates spike, an automatic rollback is triggered.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole process? Minutes. Not days. And no human had to SSH into anything.&lt;/p&gt;

&lt;h3&gt;
  
  
  Infrastructure provisioning
&lt;/h3&gt;

&lt;p&gt;Need a new server — or an entire environment?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's a slight simplification, but not by much. With Infrastructure as Code (IaC) tools like Terraform, Bicep, Pulumi, or AWS CloudFormation, your entire infrastructure is defined in version-controlled configuration files. Need a new environment? Run the pipeline. Need to tear it down? Run the pipeline again. Need to know exactly what's running in production? Read the code.&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes this work
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure as Code (IaC)&lt;/strong&gt;: Every server, database, network rule, and load balancer is defined in code. Reviewed in PRs. Tested before deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Containers &amp;amp; orchestration&lt;/strong&gt;: Docker packages your app with all its dependencies. Kubernetes (or Azure Container Apps, ECS, etc.) manages scaling, health, and networking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD pipelines&lt;/strong&gt;: Automated pipelines ensure every code change goes through the same rigorous process — build, test, scan, deploy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immutable infrastructure&lt;/strong&gt;: Instead of patching servers in place, you build a new image and replace the old one. No configuration drift. No "what version is running on that box?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability&lt;/strong&gt;: Centralized logging (ELK, Azure Monitor, Datadog), distributed tracing, and metrics dashboards mean you know what's happening in production &lt;em&gt;right now&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shift-left security&lt;/strong&gt;: Security scanning happens in the pipeline, not as an afterthought before go-live.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitOps&lt;/strong&gt;: The Git repository is the single source of truth. What's in &lt;code&gt;main&lt;/code&gt; is what's in production. Period.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A Side-by-Side Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Traditional&lt;/th&gt;
&lt;th&gt;Modern DevOps&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Server identity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Named pets (hand-configured)&lt;/td&gt;
&lt;td&gt;Numbered cattle (auto-provisioned)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deployment frequency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Monthly or quarterly&lt;/td&gt;
&lt;td&gt;Multiple times per day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deployment method&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manual (RDP/SSH, file copy)&lt;/td&gt;
&lt;td&gt;Automated CI/CD pipelines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rollback strategy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Restore backup and pray&lt;/td&gt;
&lt;td&gt;Automated rollback, blue-green, canary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Infrastructure setup&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Weeks (tickets, manual config)&lt;/td&gt;
&lt;td&gt;Minutes (IaC + pipelines)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Environment consistency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;"Close enough"&lt;/td&gt;
&lt;td&gt;Identical (same IaC templates)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Word docs, wikis, tribal knowledge&lt;/td&gt;
&lt;td&gt;The code &lt;em&gt;is&lt;/em&gt; the documentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monitoring&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Check logs manually, wait for user complaints&lt;/td&gt;
&lt;td&gt;Real-time dashboards, alerts, auto-healing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Team structure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dev and Ops are separate silos&lt;/td&gt;
&lt;td&gt;Cross-functional teams own the full lifecycle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Change management&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Heavyweight CAB approvals&lt;/td&gt;
&lt;td&gt;Lightweight, automated guardrails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Failure recovery&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hours to days&lt;/td&gt;
&lt;td&gt;Seconds to minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Cultural Shift Matters Most
&lt;/h2&gt;

&lt;p&gt;Here's the thing people often miss: DevOps isn't just about tools. You can adopt Kubernetes, Terraform, and GitHub Actions, and still operate like a traditional shop if the culture doesn't change.&lt;/p&gt;

&lt;p&gt;The real transformation is in &lt;strong&gt;ownership and collaboration&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers own their code in production. "I wrote it, I deploy it, I monitor it."&lt;/li&gt;
&lt;li&gt;Ops engineers write code and build platforms, not manually configure servers.&lt;/li&gt;
&lt;li&gt;Failures are treated as learning opportunities (blameless postmortems), not occasions to find someone to blame.&lt;/li&gt;
&lt;li&gt;Small, frequent changes replace big-bang releases. Each change is lower risk, easier to understand, and simpler to roll back.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Does This Mean Traditional Is Dead?
&lt;/h2&gt;

&lt;p&gt;Not entirely. There are still environments — legacy systems, regulated industries, air-gapped networks — where traditional approaches persist, sometimes for valid reasons. Not every organization can (or should) move to containers and Kubernetes overnight.&lt;/p&gt;

&lt;p&gt;But the direction is clear. Even organizations in heavily regulated sectors (banking, healthcare, government) are adopting DevOps practices — automated pipelines, IaC, immutable deployments — because the reliability and speed benefits are too significant to ignore.&lt;/p&gt;

&lt;p&gt;The question isn't &lt;em&gt;whether&lt;/em&gt; to adopt modern DevOps practices. It's &lt;em&gt;how fast&lt;/em&gt; you can get there — and what's holding you back.&lt;/p&gt;




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

&lt;p&gt;If you're still deploying by remoting into a server and copying files, you're not just slow — you're accumulating risk with every release. The modern DevOps toolchain exists precisely because the old way didn't scale, wasn't reliable, and burned people out.&lt;/p&gt;

&lt;p&gt;The best part? You don't have to adopt everything at once. Start with CI/CD. Add IaC. Containerize one service. Build from there.&lt;/p&gt;

&lt;p&gt;The servers don't care if they're pets or cattle. But your team — and your customers — certainly will.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What does your deployment process look like today? Still somewhere in between? I'd love to hear about your journey — the good, the bad, and the "we don't talk about that deploy."&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>cloudcomputing</category>
      <category>devops</category>
      <category>sre</category>
    </item>
    <item>
      <title>I Used 22 Prompts to Plan an Entire MuleSoft-to-.NET Migration. Here's the Playbook.</title>
      <dc:creator>joietej</dc:creator>
      <pubDate>Sat, 28 Feb 2026 16:15:42 +0000</pubDate>
      <link>https://dev.to/joietej/i-used-22-prompts-to-plan-an-entire-mulesoft-to-net-migration-heres-the-playbook-2a79</link>
      <guid>https://dev.to/joietej/i-used-22-prompts-to-plan-an-entire-mulesoft-to-net-migration-heres-the-playbook-2a79</guid>
      <description>&lt;p&gt;Last week I sat down to migrate a MuleSoft integration project to .NET 10 Minimal APIs. Instead of spending days writing migration specs, architecture docs, and agent team definitions manually, I paired with Claude to do it in a single conversation.&lt;/p&gt;

&lt;p&gt;22 prompts. That's all it took to go from "where do I start?" to a fully structured, audited, ready-to-execute migration toolkit -- complete with scanner agents, phased prompts, integration patterns, and project scaffolding.&lt;/p&gt;

&lt;p&gt;Here's exactly how I did it, broken into a repeatable playbook any dev team can follow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 1 -- Explore &amp;amp; Ground the AI in Your Codebase
&lt;/h2&gt;

&lt;p&gt;Most developers start an AI conversation with a wall of text explaining everything upfront. Don't.&lt;/p&gt;

&lt;p&gt;Start broad. Let the AI propose an approach first, &lt;em&gt;then&lt;/em&gt; steer it.&lt;/p&gt;

&lt;p&gt;My opening prompt was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"What is the best approach to convert MuleSoft to C# Minimal API?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude came back with a solid general strategy -- Strangler Fig pattern, connector mapping tables, a phased approach. Good foundation, but generic. It didn't know my stack.&lt;/p&gt;

&lt;p&gt;So I pointed it at my actual code:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Check my project on GitHub for the target architecture"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It pulled the wrong repo at first. I corrected it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"That's not the right repo -- try this URL instead"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the key insight: &lt;strong&gt;the AI produces dramatically better output when it's grounded in your real project&lt;/strong&gt;, not a hypothetical one. Once it read my solution structure, EF Core setup, Polly config, and Azure AD auth -- everything it generated afterward was contextually accurate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Takeaway:&lt;/strong&gt; Don't explain your architecture in prose. Point the AI at your code and let it read.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 2 -- Request Deliverables That Match Your Tooling
&lt;/h2&gt;

&lt;p&gt;Once the AI understands your codebase, ask for output in the format you'll actually use. Not a blog post. Not a summary. The actual artifact.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Can you create detailed agent team definitions I can use with Claude Code CLI?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude generated a full set of agent team roles, prompts, and coordination rules -- tailored specifically for Claude Code's agent teams feature. But when I reviewed the output, I spotted a gap:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"We're missing a step -- we need to scan and inventory the source project before migrating anything"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where it gets interesting. The AI didn't think of a Phase 0 scanner because I hadn't mentioned one. But the moment I flagged the gap, it built a comprehensive 5-agent scanner team that parses MuleSoft XML flows, catalogs DataWeave transforms, maps connectors to NuGet packages, and generates a phased migration plan.&lt;/p&gt;

&lt;p&gt;Then I fed it domain knowledge it couldn't possibly discover on its own:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I already know the integrations we use -- Azure AD auth, Key Vault for secrets, Graph API for user management, Box for documents, and SQL Server stored procedures"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With this, it pre-seeded the scanner with ready-to-use C# implementation patterns for each integration -- complete with typed clients, DI registration, and config examples. No hallucinated APIs. No outdated SDK calls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Takeaway:&lt;/strong&gt; The AI can't read your production systems. Feed it what you know, and it'll build on top of that knowledge rather than guessing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 3 -- Challenge Architecture Decisions
&lt;/h2&gt;

&lt;p&gt;Here's where most people go wrong with AI: they accept the first answer. Don't. Debate it.&lt;/p&gt;

&lt;p&gt;I initially suggested:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I think we should copy the source code into a docs folder inside the project"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then immediately challenged my own idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Actually no -- the source should stay external and never be modified. Ask the user for the path at runtime instead"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This back-and-forth -- which took maybe 30 seconds -- resulted in a fundamentally better design. The MuleSoft project stays read-only in its original location. The scanner asks for the path. No file duplication. No accidental modifications. Clean separation.&lt;/p&gt;

&lt;p&gt;The AI adapted instantly. It rewrote the Phase 0 init prompt to ask for the path, updated all agent team definitions to reference &lt;code&gt;MULE_SOURCE_PATH&lt;/code&gt;, and added validation for the directory structure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Takeaway:&lt;/strong&gt; The best architecture emerges from debate, not from prompting. Push back on the AI. Push back on yourself. The AI is fast enough to restructure everything in seconds.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 4 -- Evolve the Design as Context Changes
&lt;/h2&gt;

&lt;p&gt;Real projects don't stand still while you plan. Midway through my session, the project structure changed.&lt;/p&gt;

&lt;p&gt;I was building the template in a parallel Claude session and realized:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"This is a reusable template, not the actual project -- we need a scaffolding step that renames everything"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude immediately generated init scripts for both Bash and PowerShell. But then my other session handled it differently using &lt;code&gt;dotnet new&lt;/code&gt; template engine with &lt;code&gt;sourceName&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Another session is handling the template config already, so we don't need the init script anymore -- drop it"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most developers would forget to tell the AI about this. They'd end up with duplicate work, conflicting approaches, and docs that reference deleted files. Instead, one prompt -- "drop it" -- and Claude removed the scripts, updated all cross-references, and simplified the workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Takeaway:&lt;/strong&gt; When something else handles a concern, tell the AI to remove work -- not just add more. AI-generated docs with stale references are worse than no docs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 5 -- Quality Gate Before Shipping
&lt;/h2&gt;

&lt;p&gt;AI makes consistency errors. Across 6 interconnected files, there will be naming leaks, broken cross-references, and stale paths. Always audit before shipping.&lt;/p&gt;

&lt;p&gt;I caught the first issue:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The generated config still has hardcoded project name references -- it needs to use generic placeholders"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then the repo structure changed:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"These files belong in a separate toolkit repo -- here's the folder structure, reorganize everything to fit"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And finally, the most important prompt of the entire session:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Do a deep review of every file -- check cross-references, path consistency, typos, and logical errors"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude ran a 12-point audit across all files. It found and fixed: inconsistent placeholder names (&lt;code&gt;{Name}&lt;/code&gt; vs &lt;code&gt;{ProjectName}&lt;/code&gt;), wrong MuleSoft directory paths in quick-reference prompts, a typo in a JSON config (&lt;code&gt;EnterprisId&lt;/code&gt;), stale "copied to" language that should have said "accessible at", and old file names in cross-references.&lt;/p&gt;

&lt;p&gt;Without that final audit, I would have shipped docs that pointed to non-existent files and used incorrect MuleSoft paths. The audit took 2 minutes. It would have cost hours of debugging later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Takeaway:&lt;/strong&gt; Never ship AI-generated output without a final audit pass. Ask the AI to check its own work -- it's surprisingly good at catching its own mistakes when you explicitly ask.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Playbook
&lt;/h2&gt;

&lt;p&gt;Here's the pattern, distilled:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start broad&lt;/strong&gt; -- let the AI propose, don't over-specify upfront&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ground it in real code&lt;/strong&gt; -- point at your actual repo, not a hypothetical one&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request usable artifacts&lt;/strong&gt; -- ask for the format your tooling actually consumes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feed domain knowledge&lt;/strong&gt; -- tell it what you know about your integrations, constraints, and systems&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identify gaps&lt;/strong&gt; -- review output and flag what's missing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debate architecture&lt;/strong&gt; -- push back on assumptions, including your own&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evolve the plan&lt;/strong&gt; -- when context changes, update the AI and remove stale work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit everything&lt;/strong&gt; -- demand a thorough cross-file review before shipping&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;22 prompts. One conversation. A complete migration toolkit with scanner agents, phased migration prompts, integration patterns, setup guides, and project scaffolding -- all verified, cross-referenced, and ready to use.&lt;/p&gt;

&lt;p&gt;The AI didn't replace my judgment. It amplified it. Every architectural decision was mine. The AI just made it possible to execute on those decisions in hours instead of days.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>dotnet</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AI Won't Save You If You Don't Know What Good Code Looks Like</title>
      <dc:creator>joietej</dc:creator>
      <pubDate>Thu, 12 Feb 2026 11:48:29 +0000</pubDate>
      <link>https://dev.to/joietej/ai-wont-save-you-if-you-dont-know-what-good-code-looks-like-2144</link>
      <guid>https://dev.to/joietej/ai-wont-save-you-if-you-dont-know-what-good-code-looks-like-2144</guid>
      <description>&lt;p&gt;Every other post on your feed is telling you AI tools are going to "revolutionize" your coding workflow. And they're not wrong — these tools are powerful. But here's what nobody's saying loud enough: the developer using the tool still matters more than the tool itself.&lt;/p&gt;

&lt;p&gt;I've been using AI coding tools daily for a while now. Terminal agents, chat-based assistants, autocomplete — the whole stack. And the single biggest lesson? You need discipline. The AI is your assistant, not your brain.&lt;/p&gt;

&lt;h2&gt;
  
  
  You Still Need to Know What Bad Code Looks Like
&lt;/h2&gt;

&lt;p&gt;Whether you're two years into your career or twenty, the basics don't become optional just because AI can generate code for you. I've watched developers prompt an AI, get back 150 lines, paste it into their project, and move on. No review. No understanding. Just vibes. Then something breaks and they're stuck, because they never understood what that code was doing.&lt;/p&gt;

&lt;p&gt;Here's the uncomfortable truth: AI tools don't close the gap between strong and weak developers. They widen it. If you understand what's happening under the hood — how requests flow, how queries execute, how auth actually works — you'll catch the AI's mistakes before they hit production. If you don't, you'll ship them.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Will Over-Complicate Things. Every. Single. Time.
&lt;/h2&gt;

&lt;p&gt;This is the pattern I see most consistently. Ask AI to solve a problem and it'll hand you the over-engineered version by default. You need a simple config change? Here's an abstraction layer. You need to parse a string? Here's a utility class with eight methods and an interface.&lt;/p&gt;

&lt;p&gt;I've lost count of how many times I've looked at AI output and thought "this could be five lines." And it could. But the AI doesn't optimize for simplicity — it optimizes for covering every possible edge case, even the ones that don't apply to your situation.&lt;/p&gt;

&lt;p&gt;Your job is to look at the output and ask: is this the simplest thing that works? That judgment — knowing when 50 lines should be 5 — doesn't come from AI. It comes from years of writing, reading, and debugging real code. There's no shortcut.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Debugger Is Still Your Best Friend
&lt;/h2&gt;

&lt;p&gt;Here's what the "AI-first" crowd conveniently skips: interactive debugging is still the most powerful skill you have.&lt;/p&gt;

&lt;p&gt;Set a breakpoint. Step through. Watch the variables. Understand the flow. When AI-generated code doesn't work — and it won't, regularly — your ability to fire up the debugger and trace the problem line by line is what separates you from someone who just pastes the error message back into the chat and hopes for the best.&lt;/p&gt;

&lt;p&gt;I'll admit, I've been that person. Early on with these tools I caught myself in a loop — AI generates code, doesn't work, I feed the error back, AI generates a "fix" that introduces a new problem, I feed that back, and three rounds later I've got a mess that's worse than where I started. The moment I stopped and opened the debugger, I found the issue in two minutes. It was a one-line fix.&lt;/p&gt;

&lt;p&gt;That try-and-error loop — write, run, break, fix — has always been the heartbeat of development. AI doesn't replace it. It just changes who's typing. But you still need to be the one who knows whether the fix actually makes sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Smart Way to Automate
&lt;/h2&gt;

&lt;p&gt;Now here's the real unlock. Tools like agentic coding assistants can actually run your code, see the error, fix it, and iterate — all without you typing. That's powerful. But it only works if you've defined what "correct" looks like. Good tests. Clear acceptance criteria. Known expected behavior.&lt;/p&gt;

&lt;p&gt;Without that, the AI will happily iterate itself into a solution that passes but is unmaintainable nonsense. I've seen an agent loop five times and produce something I could've written by hand in two minutes — except mine would've been half the lines and actually readable.&lt;/p&gt;

&lt;p&gt;And the ecosystem is only getting deeper. Claude Code now has plugins like Ralph for autonomous coding loops, Context7 for live API docs, and Playwright for browser testing — all running inside your terminal. On the non-dev side, Cowork plugins and connectors are letting teams wire up Asana, Linear, Notion, and more into AI-driven workflows. The entire try-and-error loop — from ticket to code to test to deploy — is becoming automatable. But "automatable" doesn't mean "unattended." Someone still needs to define the guardrails, review the output, and know when the machine is confidently wrong.&lt;/p&gt;

&lt;p&gt;Automation is brilliant for boilerplate, for repetitive scaffolding, for the stuff where you know exactly what you want but typing it out is tedious. It's dangerous the moment you use it as a substitute for understanding.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Thing That Actually Matters
&lt;/h2&gt;

&lt;p&gt;Junior or senior, it doesn't matter. The developers who get the best output from AI are the ones who could've written the code themselves — maybe slower, but correctly. They use AI to move faster, not to think less.&lt;/p&gt;

&lt;p&gt;If you can't tell good output from bad, AI won't fix that. If you can, AI becomes the best productivity tool you've ever had.&lt;/p&gt;

&lt;p&gt;That's the discipline. And no AI is going to learn it for you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Full transparency: This article was written with the help of AI. The core ideas, opinions, and experiences are entirely mine — but I used AI to help structure, critique, and refine the writing. Felt only right to practice what I preach.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
      <category>career</category>
    </item>
    <item>
      <title>Flex</title>
      <dc:creator>joietej</dc:creator>
      <pubDate>Wed, 11 Dec 2019 20:00:10 +0000</pubDate>
      <link>https://dev.to/joietej/flex-2p9p</link>
      <guid>https://dev.to/joietej/flex-2p9p</guid>
      <description>&lt;p&gt;Wow ! I am on my second story !&lt;/p&gt;

&lt;p&gt;In this story, I want to briefly talk about my fev layout container !&lt;/p&gt;

&lt;p&gt;I am not a fan of bootstrap style layout system so I was thrilled when I read about flexbox and css grid.&lt;/p&gt;

&lt;p&gt;Flexbox reminds me of WPF StackPanel which is also one dimensional . &lt;/p&gt;

&lt;p&gt;I would highly recommend this amazing article to understand how flexbox works it’s magic.&lt;/p&gt;

&lt;p&gt;Here is a quick recipe to create &lt;br&gt;
flex container :&lt;/p&gt;

&lt;p&gt;1.Set display:flex &lt;br&gt;
2.Set flex-direction to 'row' or 'column'&lt;br&gt;
3.Set ‘justify-content ‘ to align items across MAIN axis.&lt;br&gt;
4.Set ‘align-items ‘ to align items across CROSS axis.&lt;/p&gt;

&lt;p&gt;Even after reading a couple of in-depth articles ,I was still confused about 'justify-content' and 'align-items' ☢️. &lt;/p&gt;

&lt;p&gt;Finally I decided to create simple component to clear the confusion .&lt;br&gt;
Here it is ‘Stack’ component inspired by StackPanel 💡.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Singularity</title>
      <dc:creator>joietej</dc:creator>
      <pubDate>Wed, 11 Dec 2019 11:03:59 +0000</pubDate>
      <link>https://dev.to/joietej/singularity-dpn</link>
      <guid>https://dev.to/joietej/singularity-dpn</guid>
      <description>&lt;p&gt;I am lazy as ×××× ( fill in whatever that suits u 😉) so I have never considered writing about anything ...It too much for me but hay u have to start somewhere, hence I have decided to break the dragon eggs and let my inner dragon out ...&lt;/p&gt;

&lt;p&gt;This is part 1 of a series of articles or it could be the first and last one who knows !  &lt;/p&gt;

&lt;p&gt;Prologue:&lt;/p&gt;

&lt;p&gt;Apart for being lazy I have never contributed to open source projects as I was spending most of my free time doing photography and watching TV. I don't have to tell you that it hurts when u do  interviews so I decided to create showcase project with all fancy techno stuff that I want to learn and/or want to use.&lt;br&gt;
After 6-8 weeks, I managed to create decent prod ready application ( client and server less backend ) and that's what I am going to write about.&lt;/p&gt;

&lt;p&gt;My initial plan was to create cross platform responsive app with serverless architecture preferably with CQRS/Event Sourcing (yeah baby) and functional language like F#. &lt;/p&gt;

&lt;p&gt;I currently work in the hospitality industry so it's as natural for me to pick the same domain for the sake of familiarity. &lt;/p&gt;

&lt;p&gt;Here is my initial tech stack :&lt;/p&gt;

&lt;p&gt;FE :&lt;br&gt;
React &amp;amp; some fancy component library to force design language i.e. Ionic /Material UI etc.&lt;br&gt;
BE:&lt;br&gt;
Everything Azure &lt;/p&gt;

&lt;p&gt;For BE I could send 130 euro per month as it comes with MSDN subscription .&lt;/p&gt;

&lt;p&gt;For FE : I choose React as it's my personal choice than anything else. I love it for its simplicity .  &lt;/p&gt;

&lt;p&gt;Component libraries : This was really a difficult choice to make. I tried a couple of libraries like MatrtialUI, React Bootstrap , Ant Design etc. My basic requirement was to have one library that has decent scheduler component , data driven components and built for desktop web app. After couple of days of painful evaluation, I came to the conclusion that none of these libraries provide what I wanted . &lt;br&gt;
But I have to start with something so I picked react-uwp due to its native win 10 fluent design. It provides nice themes and sidebar for electron desktop app and decent basic controls. I was happy about my choice and I made good progress in one week.&lt;br&gt;&lt;br&gt;
I would write tomorrow (hopefully ☺️) about what I had learnt in that first week..&lt;/p&gt;

&lt;p&gt;Ciao ! &lt;/p&gt;

</description>
      <category>azure</category>
      <category>react</category>
      <category>serverless</category>
    </item>
  </channel>
</rss>
