<?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: joshua dyson</title>
    <description>The latest articles on DEV Community by joshua dyson (@joshua_dyson).</description>
    <link>https://dev.to/joshua_dyson</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3630751%2F8eb3c752-b819-466b-a56c-88b5b7a17f1a.png</url>
      <title>DEV Community: joshua dyson</title>
      <link>https://dev.to/joshua_dyson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joshua_dyson"/>
    <language>en</language>
    <item>
      <title>How to Build a Platform Engineering Team &amp; Internal Developer Portal: Lessons from Modern Engineering Organizations</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Sun, 26 Jul 2026 18:03:08 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/how-to-build-a-platform-engineering-team-internal-developer-portal-lessons-from-modern-40l3</link>
      <guid>https://dev.to/joshua_dyson/how-to-build-a-platform-engineering-team-internal-developer-portal-lessons-from-modern-40l3</guid>
      <description>&lt;p&gt;Platform engineering has become one of the fastest-growing disciplines in software engineering. As organizations scale, the number of services, pipelines, cloud resources, and operational tools grows just as quickly. Without a common platform, every product team ends up solving the same infrastructure problems independently.&lt;/p&gt;

&lt;p&gt;I've found that successful platform engineering initiatives don't begin with technology—they begin with understanding where developers are losing time. An internal developer portal isn't just another dashboard; it's a way to standardize workflows, reduce cognitive load, and let engineering teams focus on building products instead of managing infrastructure.&lt;/p&gt;

&lt;p&gt;This article walks through how I'd approach building a platform engineering team and an internal developer portal from the ground up.&lt;/p&gt;

&lt;p&gt;TL;DR&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a platform team to enable developers, not control them.&lt;/li&gt;
&lt;li&gt;Start by solving your biggest developer pain points.&lt;/li&gt;
&lt;li&gt;Treat the platform as an internal product with real users.&lt;/li&gt;
&lt;li&gt;Provide self-service workflows instead of manual requests.&lt;/li&gt;
&lt;li&gt;Build an Internal Developer Portal (IDP) that becomes the single place for documentation, services, deployments, and ownership.&lt;/li&gt;
&lt;li&gt;Measure success using developer adoption and delivery metrics—not the number of platform features shipped.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Platform Engineering Exists
&lt;/h2&gt;

&lt;p&gt;As organizations grow, engineering teams often experience the same challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers wait days for cloud resources.&lt;/li&gt;
&lt;li&gt;CI/CD pipelines are inconsistent across teams.&lt;/li&gt;
&lt;li&gt;Documentation is scattered across multiple tools.&lt;/li&gt;
&lt;li&gt;Nobody knows who owns a particular service.&lt;/li&gt;
&lt;li&gt;Security and compliance checks vary between projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually, engineering teams spend more time navigating systems than building software.&lt;/p&gt;

&lt;p&gt;That's where platform engineering delivers value—by creating reusable capabilities that every team can consume.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Identify Developer Pain Points
&lt;/h2&gt;

&lt;p&gt;Before writing a single line of code, spend time understanding where developers lose time.&lt;/p&gt;

&lt;p&gt;Typical questions include:&lt;/p&gt;

&lt;p&gt;How long does it take to create a new service?&lt;br&gt;
How long does onboarding take?&lt;br&gt;
How many deployment steps are manual?&lt;br&gt;
How often do developers ask for infrastructure support?&lt;br&gt;
Which requests repeatedly go to the platform or DevOps team?&lt;/p&gt;

&lt;p&gt;The answers help prioritize what the platform should solve first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Define the Platform Team
&lt;/h2&gt;

&lt;p&gt;A platform engineering team isn't simply a renamed DevOps team.&lt;/p&gt;

&lt;p&gt;Its mission is to build reusable products for internal engineering teams.&lt;/p&gt;

&lt;p&gt;A typical team might include:&lt;/p&gt;

&lt;p&gt;Platform Engineers&lt;br&gt;
Site Reliability Engineers (SREs)&lt;br&gt;
DevOps Engineers&lt;br&gt;
Cloud Engineers&lt;br&gt;
Security Engineers&lt;br&gt;
Developer Experience (DevEx) Engineers&lt;/p&gt;

&lt;p&gt;Their customers are developers—not external users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Build an Internal Developer Portal
&lt;/h2&gt;

&lt;p&gt;The portal becomes the central place where developers interact with the platform.&lt;/p&gt;

&lt;p&gt;Instead of searching multiple systems, developers should be able to:&lt;/p&gt;

&lt;p&gt;Discover services&lt;br&gt;
View ownership&lt;br&gt;
Create new projects&lt;br&gt;
Deploy applications&lt;br&gt;
Request infrastructure&lt;br&gt;
Read documentation&lt;br&gt;
View dashboards&lt;br&gt;
Check service health&lt;/p&gt;

&lt;p&gt;One portal replaces dozens of disconnected tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Standardize Service Templates
&lt;/h2&gt;

&lt;p&gt;Every new microservice shouldn't start from scratch.&lt;/p&gt;

&lt;p&gt;Create reusable templates that include:&lt;/p&gt;

&lt;p&gt;Repository structure&lt;br&gt;
CI/CD pipeline&lt;br&gt;
Testing framework&lt;br&gt;
Logging&lt;br&gt;
Monitoring&lt;br&gt;
Security scanning&lt;br&gt;
Documentation&lt;/p&gt;

&lt;p&gt;Example template:&lt;/p&gt;

&lt;p&gt;service:&lt;br&gt;
  name: payments-api&lt;br&gt;
  language: nodejs&lt;br&gt;
  runtime: node20&lt;/p&gt;

&lt;p&gt;ci:&lt;br&gt;
  tests: true&lt;br&gt;
  lint: true&lt;br&gt;
  security_scan: true&lt;/p&gt;

&lt;p&gt;deployment:&lt;br&gt;
  environment: staging&lt;br&gt;
  strategy: rolling&lt;/p&gt;

&lt;p&gt;monitoring:&lt;br&gt;
  metrics: enabled&lt;br&gt;
  logs: enabled&lt;br&gt;
  tracing: enabled&lt;/p&gt;

&lt;p&gt;A developer can bootstrap a production-ready service in minutes rather than hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Automate Infrastructure
&lt;/h2&gt;

&lt;p&gt;Developers shouldn't create cloud resources manually.&lt;/p&gt;

&lt;p&gt;Infrastructure should be provisioned through reusable templates.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;apiVersion: platform.company.io/v1&lt;/p&gt;

&lt;p&gt;kind: Service&lt;/p&gt;

&lt;p&gt;metadata:&lt;br&gt;
  name: payments-api&lt;/p&gt;

&lt;p&gt;spec:&lt;br&gt;
  runtime: node20&lt;br&gt;
  database: postgres&lt;br&gt;
  cache: redis&lt;br&gt;
  monitoring: enabled&lt;/p&gt;

&lt;p&gt;Behind the scenes, automation provisions everything consistently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Build Self-Service Workflows
&lt;/h2&gt;

&lt;p&gt;Every manual ticket is an opportunity for automation.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;p&gt;Create a repository&lt;br&gt;
Provision Kubernetes namespaces&lt;br&gt;
Generate CI/CD pipelines&lt;br&gt;
Request databases&lt;br&gt;
Issue TLS certificates&lt;br&gt;
Configure DNS&lt;br&gt;
Rotate secrets&lt;/p&gt;

&lt;p&gt;Instead of waiting for another team, developers complete these tasks through the portal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Make Ownership Visible
&lt;/h2&gt;

&lt;p&gt;One of the most valuable features of an internal portal is service ownership.&lt;/p&gt;

&lt;p&gt;Every service should answer questions like:&lt;/p&gt;

&lt;p&gt;Who owns it?&lt;br&gt;
Which team supports it?&lt;br&gt;
Where is the documentation?&lt;br&gt;
Which environments exist?&lt;br&gt;
When was it last deployed?&lt;/p&gt;

&lt;p&gt;Example configuration:&lt;/p&gt;

&lt;p&gt;service:&lt;br&gt;
  name: payments-api&lt;/p&gt;

&lt;p&gt;owner:&lt;br&gt;
  team: payments&lt;/p&gt;

&lt;p&gt;repository:&lt;br&gt;
  github: company/payments-api&lt;/p&gt;

&lt;p&gt;slack:&lt;br&gt;
  channel: payments-alerts&lt;/p&gt;

&lt;p&gt;runbook:&lt;br&gt;
  docs/runbook.md&lt;/p&gt;

&lt;p&gt;Finding the right information should take seconds—not a series of Slack messages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8: Integrate CI/CD and Observability
&lt;/h2&gt;

&lt;p&gt;Developers shouldn't switch between multiple tools to understand what's happening.&lt;/p&gt;

&lt;p&gt;A portal should surface:&lt;/p&gt;

&lt;p&gt;Latest deployments&lt;br&gt;
Build status&lt;br&gt;
Test results&lt;br&gt;
Security findings&lt;br&gt;
DORA metrics&lt;br&gt;
Logs&lt;br&gt;
Metrics&lt;br&gt;
Traces&lt;br&gt;
Incident history&lt;/p&gt;

&lt;p&gt;The goal is to give developers a complete view of their services from a single interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 9: Measure Success
&lt;/h2&gt;

&lt;p&gt;Platform engineering isn't successful because it launches a portal.&lt;/p&gt;

&lt;p&gt;It's successful when developers actually use it.&lt;/p&gt;

&lt;p&gt;Useful metrics include:&lt;/p&gt;

&lt;p&gt;Developer onboarding time&lt;br&gt;
Service creation time&lt;br&gt;
Deployment frequency&lt;br&gt;
Lead time for changes&lt;br&gt;
Self-service adoption&lt;br&gt;
Number of manual support requests&lt;br&gt;
Internal platform satisfaction&lt;br&gt;
Portal usage&lt;/p&gt;

&lt;p&gt;If the platform reduces friction, these metrics should improve over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Mistakes
&lt;/h2&gt;

&lt;p&gt;Some platform initiatives struggle because they:&lt;/p&gt;

&lt;p&gt;Build too many features before validating user needs.&lt;br&gt;
Focus on technology instead of developer experience.&lt;br&gt;
Force teams onto rigid workflows.&lt;br&gt;
Ignore documentation.&lt;br&gt;
Treat the platform as an infrastructure project rather than an internal product.&lt;/p&gt;

&lt;p&gt;The best platforms evolve through continuous feedback from engineering teams.&lt;/p&gt;

&lt;p&gt;A Typical Platform Architecture&lt;br&gt;
Developer&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
Internal Developer Portal&lt;br&gt;
     │&lt;br&gt;
     ├── Service Catalog&lt;br&gt;
     ├── Documentation&lt;br&gt;
     ├── Templates&lt;br&gt;
     ├── Self-Service Actions&lt;br&gt;
     ├── CI/CD&lt;br&gt;
     ├── Infrastructure Automation&lt;br&gt;
     ├── Security&lt;br&gt;
     └── Observability&lt;br&gt;
            │&lt;br&gt;
            ▼&lt;br&gt;
Cloud Infrastructure&lt;/p&gt;

&lt;p&gt;The portal becomes the entry point, while automation handles the operational complexity behind the scenes.&lt;/p&gt;

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

&lt;p&gt;Platform engineering isn't about centralizing control—it's about decentralizing capability.&lt;/p&gt;

&lt;p&gt;When developers can create services, provision infrastructure, deploy applications, and access documentation through self-service workflows, they spend less time waiting and more time delivering value.&lt;/p&gt;

&lt;p&gt;The most effective platform teams don't measure success by the number of tools they've built. They measure it by how much engineering friction they've removed.&lt;/p&gt;

&lt;p&gt;If you're starting a platform engineering initiative, resist the urge to build everything at once. Solve one high-impact problem, gather feedback, and iterate. Over time, your internal developer portal will become more than just a collection of tools—it will become the foundation of how your engineering organization builds, ships, and operates software.&lt;/p&gt;

</description>
      <category>platformengineering</category>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Devin isn't a replacement for engineers,it's an AI teammate. It can explore codebases, implement features, debug issues, run tests, and open PRs. But it still needs clear requirements and human review. The real value is accelerating delivery, not replacing</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Sun, 26 Jul 2026 17:59:48 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/devin-isnt-a-replacement-for-engineersits-an-ai-teammate-it-can-explore-codebases-implement-557p</link>
      <guid>https://dev.to/joshua_dyson/devin-isnt-a-replacement-for-engineersits-an-ai-teammate-it-can-explore-codebases-implement-557p</guid>
      <description></description>
    </item>
    <item>
      <title>README.md explains the project to humans. AGENTS.md explains it to AI coding agents. I think it'll become a standard file for teams using AI-assisted development.

Are you using one yet?</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Sun, 26 Jul 2026 17:43:11 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/readmemd-explains-the-project-to-humans-agentsmd-explains-it-to-ai-coding-agents-i-think-itll-5e64</link>
      <guid>https://dev.to/joshua_dyson/readmemd-explains-the-project-to-humans-agentsmd-explains-it-to-ai-coding-agents-i-think-itll-5e64</guid>
      <description></description>
    </item>
    <item>
      <title>Preventing Hallucinated Package Dependencies in AI-Generated Code: A Practical Guide</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Fri, 24 Jul 2026 14:26:23 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/preventing-hallucinated-package-dependencies-in-ai-generated-code-a-practical-guide-2o6m</link>
      <guid>https://dev.to/joshua_dyson/preventing-hallucinated-package-dependencies-in-ai-generated-code-a-practical-guide-2o6m</guid>
      <description>&lt;p&gt;AI coding assistants are remarkably good at generating boilerplate, tests, and even complete features. But every now and then, they'll confidently import a package, function, or API that simply doesn't exist.&lt;/p&gt;

&lt;p&gt;These "hallucinated dependencies" can waste debugging time, introduce supply chain risks, and even make it into pull requests if nobody notices.&lt;/p&gt;

&lt;p&gt;This tutorial walks through a practical workflow to catch these issues automatically before they reach production.&lt;/p&gt;

&lt;p&gt;We'll build a simple CI workflow that:&lt;/p&gt;

&lt;p&gt;Detects missing or invalid dependencies&lt;br&gt;
Verifies package installation&lt;br&gt;
Scans for typosquatting risks&lt;br&gt;
Runs dependency and security checks&lt;br&gt;
Fails the pull request automatically when something looks suspicious&lt;/p&gt;

&lt;p&gt;Everything uses standard tooling that you can add to an existing GitHub repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Hallucinated Dependency?
&lt;/h2&gt;

&lt;p&gt;Suppose you ask an AI assistant to build a feature.&lt;/p&gt;

&lt;p&gt;It returns something like this:&lt;/p&gt;

&lt;p&gt;import { SmartCache } from "fast-cache-ai";&lt;/p&gt;

&lt;p&gt;const cache = new SmartCache();&lt;/p&gt;

&lt;p&gt;Looks reasonable.&lt;/p&gt;

&lt;p&gt;Except...&lt;/p&gt;

&lt;p&gt;fast-cache-ai doesn't exist.&lt;/p&gt;

&lt;p&gt;Sometimes AI invents:&lt;/p&gt;

&lt;p&gt;Package names&lt;br&gt;
Functions&lt;br&gt;
SDKs&lt;br&gt;
API endpoints&lt;br&gt;
Configuration options&lt;/p&gt;

&lt;p&gt;The generated code looks convincing enough that developers often don't notice until CI fails—or worse, until someone tries to publish or deploy it.&lt;/p&gt;

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

&lt;p&gt;Beyond broken builds, hallucinated dependencies can create security problems.&lt;/p&gt;

&lt;p&gt;Imagine an attacker publishing a package with the same hallucinated name.&lt;/p&gt;

&lt;p&gt;If your build installs it automatically, you've just created a potential software supply chain risk.&lt;/p&gt;

&lt;p&gt;That's why validating dependencies should be part of every AI-assisted development workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install Dependencies from the Lock File
&lt;/h2&gt;

&lt;p&gt;Always prefer deterministic installs.&lt;/p&gt;

&lt;p&gt;For Node.js:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name: Install packages
run: npm ci&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run: npm install&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using the lock file ensures everyone—and your CI system—is installing exactly the same dependency versions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Verify Package Availability
&lt;/h2&gt;

&lt;p&gt;A simple validation step can prevent many mistakes.&lt;/p&gt;

&lt;p&gt;npm view express version&lt;br&gt;
npm view react version&lt;/p&gt;

&lt;p&gt;If the package doesn't exist, the command exits with an error.&lt;/p&gt;

&lt;p&gt;For Python:&lt;/p&gt;

&lt;p&gt;pip index versions requests&lt;/p&gt;

&lt;p&gt;For Go:&lt;/p&gt;

&lt;p&gt;go list -m all&lt;/p&gt;

&lt;p&gt;These checks are lightweight and easy to automate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Enable Dependency Review
&lt;/h2&gt;

&lt;p&gt;GitHub's Dependency Review Action helps identify risky dependency changes in pull requests.&lt;/p&gt;

&lt;p&gt;name: Dependency Review&lt;/p&gt;

&lt;p&gt;on:&lt;br&gt;
  pull_request:&lt;/p&gt;

&lt;p&gt;jobs:&lt;br&gt;
  dependency-review:&lt;br&gt;
    runs-on: ubuntu-latest&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;steps:
  - uses: actions/checkout@v4

  - uses: actions/dependency-review-action@v4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This highlights newly introduced dependencies before they're merged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Scan for Vulnerabilities
&lt;/h2&gt;

&lt;p&gt;After validating dependencies, scan them.&lt;/p&gt;

&lt;p&gt;Example using npm:&lt;/p&gt;

&lt;p&gt;npm audit&lt;/p&gt;

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

&lt;p&gt;npm audit --audit-level=high&lt;/p&gt;

&lt;p&gt;For Python:&lt;/p&gt;

&lt;p&gt;pip-audit&lt;/p&gt;

&lt;p&gt;Security scanning won't catch hallucinations directly, but it helps identify risky packages before deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Detect Typosquatting
&lt;/h2&gt;

&lt;p&gt;Hallucinations sometimes resemble legitimate packages.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;expressx&lt;br&gt;
react-core&lt;br&gt;
lodashjs&lt;br&gt;
fast-cache-ai&lt;/p&gt;

&lt;p&gt;A simple review process should flag packages that:&lt;/p&gt;

&lt;p&gt;Are newly introduced&lt;br&gt;
Have very few downloads&lt;br&gt;
Have recently been published&lt;br&gt;
Closely resemble well-known packages&lt;/p&gt;

&lt;p&gt;Even a manual review of new dependencies adds an extra layer of protection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Add an Automated CI Check
&lt;/h2&gt;

&lt;p&gt;Here's a minimal GitHub Actions workflow:&lt;/p&gt;

&lt;p&gt;name: Validate Dependencies&lt;/p&gt;

&lt;p&gt;on:&lt;br&gt;
  pull_request:&lt;/p&gt;

&lt;p&gt;jobs:&lt;br&gt;
  validate:&lt;br&gt;
    runs-on: ubuntu-latest&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;steps:
  - uses: actions/checkout@v4

  - uses: actions/setup-node@v4
    with:
      node-version: 20

  - run: npm ci

  - run: npm audit --audit-level=high

  - run: npm test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;If dependency installation fails, the pull request never reaches production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Repository Structure
&lt;/h2&gt;

&lt;p&gt;example-app/&lt;br&gt;
│&lt;br&gt;
├── .github/&lt;br&gt;
│   └── workflows/&lt;br&gt;
│       └── dependency-check.yml&lt;br&gt;
│&lt;br&gt;
├── package.json&lt;br&gt;
├── package-lock.json&lt;br&gt;
├── src/&lt;br&gt;
├── tests/&lt;br&gt;
└── README.md&lt;/p&gt;

&lt;p&gt;This keeps validation close to the code and makes it easy for contributors to understand the workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;To see the workflow in action:&lt;/p&gt;

&lt;p&gt;Create a simple Node.js application.&lt;br&gt;
Add the GitHub Actions workflow above.&lt;br&gt;
Introduce a fake package into package.json (for example, "fast-cache-ai": "^1.0.0").&lt;br&gt;
Open a pull request.&lt;br&gt;
Watch the workflow fail during dependency installation.&lt;/p&gt;

&lt;p&gt;It's a simple exercise, but it demonstrates how automated validation can catch AI-generated mistakes before they become production issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Best Practices
&lt;/h2&gt;

&lt;p&gt;A few habits can significantly reduce dependency-related issues:&lt;/p&gt;

&lt;p&gt;Review every new dependency in a pull request.&lt;br&gt;
Prefer well-maintained, widely adopted packages.&lt;br&gt;
Commit lock files.&lt;br&gt;
Enable automated dependency updates.&lt;br&gt;
Run security scans in every CI pipeline.&lt;br&gt;
Treat AI-generated imports the same way you treat manually written code—verify them before trusting them.&lt;/p&gt;

&lt;p&gt;AI should accelerate development, not replace engineering judgment.&lt;/p&gt;

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

&lt;p&gt;Hallucinated dependencies aren't a flaw unique to any one AI coding assistant—they're a natural consequence of language models generating plausible-looking code.&lt;/p&gt;

&lt;p&gt;The good news is that they're also one of the easiest AI-related risks to mitigate.&lt;/p&gt;

&lt;p&gt;A few automated checks in your CI pipeline can catch missing packages, identify suspicious dependency changes, and stop broken pull requests long before they reach production.&lt;/p&gt;

&lt;p&gt;As AI becomes a routine part of software development, building lightweight validation into your workflow is no longer just a nice-to-have. It's part of writing secure, reliable software.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>coding</category>
    </item>
    <item>
      <title>Avoiding CI/CD Vendor Lock-In with Portable YAML: Lessons Learned Building Flexible Pipelines</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Fri, 24 Jul 2026 13:26:32 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/avoiding-cicd-vendor-lock-in-with-portable-yaml-lessons-learned-building-flexible-pipelines-18l3</link>
      <guid>https://dev.to/joshua_dyson/avoiding-cicd-vendor-lock-in-with-portable-yaml-lessons-learned-building-flexible-pipelines-18l3</guid>
      <description>&lt;p&gt;Over the last few years, I've worked with teams using GitHub Actions, GitLab CI/CD, Jenkins, CircleCI, Azure DevOps, and newer AI-native delivery platforms. One lesson keeps coming up:&lt;/p&gt;

&lt;p&gt;The more vendor-specific your pipeline YAML becomes, the harder it is to migrate later.&lt;/p&gt;

&lt;p&gt;By keeping pipeline definitions modular, separating business logic from platform-specific configuration, and relying on portable scripts where possible, teams can significantly reduce migration effort while preserving flexibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Most CI/CD platforms use YAML.&lt;/p&gt;

&lt;p&gt;At first glance, they look remarkably similar.&lt;/p&gt;

&lt;p&gt;steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checkout&lt;/li&gt;
&lt;li&gt;install&lt;/li&gt;
&lt;li&gt;test&lt;/li&gt;
&lt;li&gt;build&lt;/li&gt;
&lt;li&gt;deploy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But beneath that familiar syntax are platform-specific features:&lt;/p&gt;

&lt;p&gt;Custom actions&lt;br&gt;
Proprietary expressions&lt;br&gt;
Vendor-specific runners&lt;br&gt;
Secret management APIs&lt;br&gt;
Environment variables&lt;br&gt;
Deployment strategies&lt;/p&gt;

&lt;p&gt;Over time, those dependencies become difficult to untangle.&lt;/p&gt;

&lt;p&gt;I’ve seen teams realize this only when they wanted to migrate to a different platform—or simply evaluate another option.&lt;/p&gt;

&lt;h2&gt;
  
  
  YAML Isn't Portable by Default
&lt;/h2&gt;

&lt;p&gt;Many developers assume YAML equals portability.&lt;/p&gt;

&lt;p&gt;It doesn't.&lt;/p&gt;

&lt;p&gt;This GitHub Actions example:&lt;/p&gt;

&lt;p&gt;name: CI&lt;/p&gt;

&lt;p&gt;on:&lt;br&gt;
  push:&lt;br&gt;
    branches: [main]&lt;/p&gt;

&lt;p&gt;jobs:&lt;br&gt;
  test:&lt;br&gt;
    runs-on: ubuntu-latest&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;steps:
  - uses: actions/checkout@v4

  - uses: actions/setup-node@v4
    with:
      node-version: 20

  - run: npm ci
  - run: npm test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;works perfectly...&lt;/p&gt;

&lt;p&gt;...inside GitHub Actions.&lt;/p&gt;

&lt;p&gt;Moving it to GitLab CI or another platform usually means rewriting jobs, triggers, environment variables, authentication, and deployment steps.&lt;/p&gt;

&lt;p&gt;The YAML file survives.&lt;/p&gt;

&lt;p&gt;The workflow doesn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Travels Well?
&lt;/h2&gt;

&lt;p&gt;I've had much better results treating the pipeline as an orchestrator—not the place where all the logic lives.&lt;/p&gt;

&lt;p&gt;Instead of embedding everything inside YAML, move reusable logic into scripts.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run: ./scripts/install.sh&lt;/li&gt;
&lt;li&gt;run: ./scripts/test.sh&lt;/li&gt;
&lt;li&gt;run: ./scripts/build.sh&lt;/li&gt;
&lt;li&gt;run: ./scripts/deploy.sh&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now those scripts can be reused almost anywhere:&lt;/p&gt;

&lt;p&gt;GitHub Actions&lt;br&gt;
GitLab CI/CD&lt;br&gt;
Jenkins&lt;br&gt;
CircleCI&lt;br&gt;
Azure DevOps&lt;br&gt;
Self-hosted runners&lt;/p&gt;

&lt;p&gt;The pipeline simply decides when to execute them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep Vendor-Specific Features at the Edge
&lt;/h2&gt;

&lt;p&gt;Some platform-specific features are worth using.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;p&gt;GitHub Actions Marketplace&lt;br&gt;
GitLab Review Apps&lt;br&gt;
Azure DevOps Environments&lt;br&gt;
CircleCI Orbs&lt;/p&gt;

&lt;p&gt;The mistake is building the entire delivery process around them.&lt;/p&gt;

&lt;p&gt;Instead, I try to isolate vendor-specific functionality to small sections of the pipeline.&lt;/p&gt;

&lt;p&gt;That makes future migrations far less painful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Standardize the Workflow
&lt;/h2&gt;

&lt;p&gt;Across projects, I like keeping the same delivery stages regardless of platform:&lt;/p&gt;

&lt;p&gt;Checkout&lt;br&gt;
    ↓&lt;br&gt;
Dependencies&lt;br&gt;
    ↓&lt;br&gt;
Lint&lt;br&gt;
    ↓&lt;br&gt;
Tests&lt;br&gt;
    ↓&lt;br&gt;
Build&lt;br&gt;
    ↓&lt;br&gt;
Security Scan&lt;br&gt;
    ↓&lt;br&gt;
Package&lt;br&gt;
    ↓&lt;br&gt;
Deploy&lt;/p&gt;

&lt;p&gt;The orchestration tool can change.&lt;/p&gt;

&lt;p&gt;The workflow remains familiar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure Should Be Portable Too
&lt;/h2&gt;

&lt;p&gt;The same philosophy applies outside CI/CD.&lt;/p&gt;

&lt;p&gt;Instead of relying on deployment features tied to one platform, use portable infrastructure tooling where practical.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;p&gt;Docker&lt;br&gt;
Kubernetes&lt;br&gt;
Terraform&lt;br&gt;
OpenTofu&lt;br&gt;
OpenTelemetry&lt;/p&gt;

&lt;p&gt;These standards make changing CI/CD platforms much less disruptive because the surrounding ecosystem remains consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI Can Help
&lt;/h2&gt;

&lt;p&gt;As AI becomes more integrated into software delivery, I think portability becomes even more important.&lt;/p&gt;

&lt;p&gt;An AI system that understands your delivery workflow shouldn't depend entirely on one CI/CD vendor.&lt;/p&gt;

&lt;p&gt;Instead, it should reason about concepts like:&lt;/p&gt;

&lt;p&gt;Build failures&lt;br&gt;
Test results&lt;br&gt;
Security findings&lt;br&gt;
Infrastructure changes&lt;br&gt;
Deployment health&lt;/p&gt;

&lt;p&gt;Those concepts exist regardless of whether the pipeline runs in GitHub Actions, GitLab CI/CD, Jenkins, or another platform.&lt;/p&gt;

&lt;p&gt;That's one reason I'm interested in AI-native delivery platforms like &lt;a href="https://revolte.ai/" rel="noopener noreferrer"&gt;Revolte&lt;/a&gt;. Rather than replacing existing CI/CD tools, the idea is to add intelligence around the delivery workflow—analyzing pipelines, deployments, infrastructure, and runtime behavior—while allowing teams to continue using the tools that fit their environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Do Today
&lt;/h2&gt;

&lt;p&gt;If I were designing a CI/CD platform from scratch, I'd follow a few simple rules:&lt;/p&gt;

&lt;p&gt;Keep YAML as thin as possible.&lt;br&gt;
Move business logic into reusable scripts.&lt;br&gt;
Prefer open standards over proprietary integrations.&lt;br&gt;
Standardize pipeline stages across repositories.&lt;br&gt;
Isolate vendor-specific functionality.&lt;br&gt;
Treat CI/CD as interchangeable infrastructure, not a permanent dependency.&lt;/p&gt;

&lt;p&gt;Those decisions don't eliminate migration work, but they make future changes dramatically easier.&lt;/p&gt;

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

&lt;p&gt;Vendor lock-in rarely haxppens overnight.&lt;/p&gt;

&lt;p&gt;It happens one convenient feature at a time.&lt;/p&gt;

&lt;p&gt;Most of those features are useful, and many are worth adopting. The key is knowing where convenience ends and long-term flexibility begins.&lt;/p&gt;

&lt;p&gt;For me, portable pipelines aren't about preparing to switch CI/CD vendors tomorrow. They're about preserving the freedom to evolve your engineering stack as your team's needs change.&lt;/p&gt;

&lt;p&gt;A little discipline in how you structure your YAML today can save weeks—or even months—of migration effort down the road.&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>ai</category>
      <category>yaml</category>
      <category>productivity</category>
    </item>
    <item>
      <title>CI/CD Pipeline Security: What's the one security check you consider non-negotiable before every deployment?

#cicd #pipeline #security #deployment</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Thu, 23 Jul 2026 12:02:49 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/cicd-pipeline-security-whats-the-one-security-check-you-consider-non-negotiable-before-every-263p</link>
      <guid>https://dev.to/joshua_dyson/cicd-pipeline-security-whats-the-one-security-check-you-consider-non-negotiable-before-every-263p</guid>
      <description></description>
      <category>cicd</category>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>What's the Real Per-Seat Cost of GitHub Copilot Once Enterprise Cloud and AI Credit Overages Are Included?</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Thu, 23 Jul 2026 10:36:14 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/whats-the-real-per-seat-cost-of-github-copilot-once-enterprise-cloud-and-ai-credit-overages-are-4215</link>
      <guid>https://dev.to/joshua_dyson/whats-the-real-per-seat-cost-of-github-copilot-once-enterprise-cloud-and-ai-credit-overages-are-4215</guid>
      <description>&lt;p&gt;GitHub Copilot has quickly become one of the most widely adopted AI coding assistants. For many developers, it's become a daily tool for generating code, writing tests, explaining unfamiliar functions, and speeding up repetitive work.&lt;/p&gt;

&lt;p&gt;When evaluating Copilot, though, many teams focus on one number: the monthly license fee per developer.&lt;/p&gt;

&lt;p&gt;In practice, that's only part of the picture.&lt;/p&gt;

&lt;p&gt;Once you roll Copilot out across an engineering organization, you'll also need to think about GitHub Enterprise, governance, security, AI usage limits, onboarding, and the operational workflows surrounding software delivery.&lt;/p&gt;

&lt;p&gt;Here's a framework I use when thinking about the real cost of GitHub Copilot.&lt;/p&gt;

&lt;h2&gt;
  
  
  The License Is Just the Starting Point
&lt;/h2&gt;

&lt;p&gt;The advertised subscription price is easy to compare.&lt;/p&gt;

&lt;p&gt;The harder question is:&lt;/p&gt;

&lt;p&gt;What does one productive Copilot user actually cost your organization?&lt;/p&gt;

&lt;p&gt;For most engineering teams, the answer includes much more than the AI assistant itself.&lt;/p&gt;

&lt;p&gt;Typical costs include:&lt;/p&gt;

&lt;p&gt;GitHub Enterprise licensing (where applicable)&lt;br&gt;
Copilot subscription&lt;br&gt;
AI premium request or usage overages (depending on your plan and usage patterns)&lt;br&gt;
Security and compliance reviews&lt;br&gt;
Developer onboarding and enablement&lt;br&gt;
Internal documentation and governance&lt;br&gt;
Time spent reviewing AI-generated code&lt;/p&gt;

&lt;p&gt;The exact numbers will vary by organization, but these factors often matter more than the headline subscription price.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hidden Cost #1: Enterprise Platform Costs
&lt;/h2&gt;

&lt;p&gt;Many larger organizations already use GitHub Enterprise Cloud for features such as:&lt;/p&gt;

&lt;p&gt;SAML/SSO&lt;br&gt;
Organization policies&lt;br&gt;
Audit logs&lt;br&gt;
Enterprise security&lt;br&gt;
Centralized administration&lt;br&gt;
Compliance controls&lt;/p&gt;

&lt;p&gt;If you're evaluating Copilot as part of an enterprise rollout, it's worth considering the overall GitHub platform investment rather than looking at Copilot in isolation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hidden Cost #2: AI Usage Isn't Always Unlimited
&lt;/h2&gt;

&lt;p&gt;As GitHub expands Copilot's capabilities—from chat and coding assistance to more advanced AI-powered workflows—some plans include usage limits or AI request allocations for premium features.&lt;/p&gt;

&lt;p&gt;That means highly active engineering teams should understand:&lt;/p&gt;

&lt;p&gt;What's included in the subscription&lt;br&gt;
Which AI capabilities consume premium usage&lt;br&gt;
How additional usage is billed&lt;br&gt;
Whether certain workflows generate higher AI consumption&lt;/p&gt;

&lt;p&gt;For small teams this may never become an issue.&lt;/p&gt;

&lt;p&gt;For hundreds of developers using AI throughout the day, it becomes an important budgeting consideration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hidden Cost #3: AI Still Requires Human Review
&lt;/h2&gt;

&lt;p&gt;Copilot can generate impressive code.&lt;/p&gt;

&lt;p&gt;It cannot guarantee that the generated code is:&lt;/p&gt;

&lt;p&gt;Correct&lt;br&gt;
Secure&lt;br&gt;
Compliant&lt;br&gt;
Performant&lt;br&gt;
Appropriate for your architecture&lt;/p&gt;

&lt;p&gt;Every AI-generated change still requires engineering judgment.&lt;/p&gt;

&lt;p&gt;Many organizations underestimate the review time that continues after AI writes the first draft.&lt;/p&gt;

&lt;p&gt;The goal isn't eliminating review—it's making reviews more efficient.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hidden Cost #4: Governance
&lt;/h2&gt;

&lt;p&gt;As AI becomes part of everyday development, platform teams also need to define:&lt;/p&gt;

&lt;p&gt;Which models developers can use&lt;br&gt;
Data handling policies&lt;br&gt;
Security controls&lt;br&gt;
Prompt management&lt;br&gt;
Code ownership&lt;br&gt;
Audit requirements&lt;/p&gt;

&lt;p&gt;These aren't licensing costs, but they're real operational costs that accompany enterprise AI adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hidden Cost #5: Software Delivery Doesn't Stop at Code
&lt;/h2&gt;

&lt;p&gt;Even if Copilot generates a pull request in minutes, the engineering work continues.&lt;/p&gt;

&lt;p&gt;The change still needs to move through:&lt;/p&gt;

&lt;p&gt;CI/CD pipelines&lt;br&gt;
Infrastructure validation&lt;br&gt;
Security scanning&lt;br&gt;
Deployment approvals&lt;br&gt;
Observability&lt;br&gt;
Incident monitoring&lt;/p&gt;

&lt;p&gt;These activities often consume more engineering time than writing the original code.&lt;/p&gt;

&lt;p&gt;That's why many platform engineering teams are investing not only in AI coding assistants, but also in AI-powered software delivery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thinking Beyond the IDE
&lt;/h2&gt;

&lt;p&gt;One trend I've noticed is that AI is gradually moving beyond code generation.&lt;/p&gt;

&lt;p&gt;Instead of only helping developers write code, newer tools are beginning to assist with:&lt;/p&gt;

&lt;p&gt;Pull request summaries&lt;br&gt;
CI/CD failure analysis&lt;br&gt;
Infrastructure changes&lt;br&gt;
Deployment risk assessment&lt;br&gt;
Automated rollback recommendations&lt;br&gt;
Production incident investigation&lt;/p&gt;

&lt;p&gt;Rather than replacing coding assistants, these tools complement them by addressing the operational work that happens after a pull request is opened.&lt;/p&gt;

&lt;p&gt;Platforms such as GitHub itself are expanding AI capabilities across the developer workflow, while AI-native software delivery platforms like &lt;a href="https://revolte.ai/" rel="noopener noreferrer"&gt;Revolte&lt;/a&gt; are exploring how AI can simplify CI/CD, infrastructure automation, observability, and governance from pull request to production.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, What's the Real Per-Seat Cost?
&lt;/h2&gt;

&lt;p&gt;The answer isn't a single dollar amount.&lt;/p&gt;

&lt;p&gt;It's better thought of as:&lt;/p&gt;

&lt;p&gt;Per-Seat Cost = Software License + Platform Costs + AI Usage + Governance + Operational Overhead&lt;/p&gt;

&lt;p&gt;For many teams, the biggest expense isn't the Copilot subscription.&lt;/p&gt;

&lt;p&gt;It's everything required to safely turn AI-generated code into production-ready software.&lt;/p&gt;

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

&lt;p&gt;GitHub Copilot has changed how developers write software, and for many teams it's an easy productivity win.&lt;/p&gt;

&lt;p&gt;But if you're evaluating it for an entire engineering organization, don't stop at the subscription price.&lt;/p&gt;

&lt;p&gt;Look at the complete engineering workflow.&lt;/p&gt;

&lt;p&gt;The organizations that see the highest return aren't simply buying AI licenses—they're redesigning how software moves from idea to production. AI coding assistants improve developer productivity, while modern platform engineering and AI-native delivery tools help reduce the operational work surrounding every release.&lt;/p&gt;

&lt;p&gt;When you measure the real cost of AI, it's worth measuring the real value the same way.&lt;/p&gt;

</description>
      <category>githubcopilot</category>
      <category>productivity</category>
      <category>ai</category>
      <category>devops</category>
    </item>
    <item>
      <title>AI Agents Inside CI/CD: How We Automated PR Triage and Reduced Review Bottlenecks</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Thu, 23 Jul 2026 09:39:33 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/ai-agents-inside-cicd-how-we-automated-pr-triage-and-reduced-review-bottlenecks-c16</link>
      <guid>https://dev.to/joshua_dyson/ai-agents-inside-cicd-how-we-automated-pr-triage-and-reduced-review-bottlenecks-c16</guid>
      <description>&lt;p&gt;Over the past few months, I've been exploring how AI agents can fit into a modern CI/CD pipeline—not to replace engineers, but to eliminate repetitive work that slows teams down.&lt;/p&gt;

&lt;p&gt;Here's what worked well:&lt;/p&gt;

&lt;p&gt;✅ Automatically categorized incoming pull requests&lt;br&gt;
✅ Flagged potential security and dependency issues&lt;br&gt;
✅ Suggested fixes for linting and test failures&lt;br&gt;
✅ Generated review summaries for faster code reviews&lt;br&gt;
✅ Reduced context switching for reviewers&lt;/p&gt;

&lt;p&gt;The biggest lesson? AI is most valuable before the human review begins.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every engineering team eventually runs into the same issue.&lt;/p&gt;

&lt;p&gt;Developers submit pull requests faster than reviewers can process them.&lt;/p&gt;

&lt;p&gt;A typical PR often goes through several repetitive steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI builds&lt;/li&gt;
&lt;li&gt;Unit tests&lt;/li&gt;
&lt;li&gt;Linting&lt;/li&gt;
&lt;li&gt;Dependency checks&lt;/li&gt;
&lt;li&gt;Security scanning&lt;/li&gt;
&lt;li&gt;Style comments&lt;/li&gt;
&lt;li&gt;Reviewer assignment&lt;/li&gt;
&lt;li&gt;Documentation validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these tasks require deep architectural thinking, yet they consume valuable engineering time.&lt;/p&gt;

&lt;p&gt;I started wondering:&lt;/p&gt;

&lt;p&gt;What if an AI agent handled the first round of triage automatically?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Workflow
&lt;/h2&gt;

&lt;p&gt;Instead of waiting for a human reviewer, the pipeline lets an AI agent inspect every pull request immediately after CI starts.&lt;/p&gt;

&lt;p&gt;Developer&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Pull Request Created&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
CI Pipeline Starts&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
AI Agent&lt;br&gt;
 ├── Analyze changed files&lt;br&gt;
 ├── Review commit summary&lt;br&gt;
 ├── Detect risky changes&lt;br&gt;
 ├── Check coding standards&lt;br&gt;
 ├── Explain failing tests&lt;br&gt;
 ├── Suggest fixes&lt;br&gt;
 └── Generate PR summary&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Human Review&lt;/p&gt;

&lt;p&gt;By the time a reviewer opens the PR, much of the routine analysis is already complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example GitHub Actions Workflow
&lt;/h2&gt;

&lt;p&gt;A simplified workflow might look like this:&lt;/p&gt;

&lt;p&gt;name: AI Pull Request Review&lt;/p&gt;

&lt;p&gt;on:&lt;br&gt;
  pull_request:&lt;br&gt;
    types: [opened, synchronize]&lt;/p&gt;

&lt;p&gt;jobs:&lt;br&gt;
  ai-review:&lt;br&gt;
    runs-on: ubuntu-latest&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;steps:
  - uses: actions/checkout@v4

  - name: Run Tests
    run: npm test

  - name: Run Linter
    run: npm run lint

  - name: AI PR Analysis
    run: ./scripts/ai-review.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The AI step can analyze:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test failures&lt;/li&gt;
&lt;li&gt;Lint violations&lt;/li&gt;
&lt;li&gt;Changed files&lt;/li&gt;
&lt;li&gt;Security findings&lt;/li&gt;
&lt;li&gt;Dependency updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;before publishing a review comment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example AI Output
&lt;/h2&gt;

&lt;p&gt;Instead of showing raw CI logs, the agent can produce something more useful:&lt;/p&gt;

&lt;p&gt;Summary&lt;/p&gt;

&lt;p&gt;• 12 files modified&lt;br&gt;
• 1 failing test&lt;br&gt;
• 2 lint issues&lt;br&gt;
• Medium-risk dependency update&lt;/p&gt;

&lt;p&gt;Suggested Fixes&lt;/p&gt;

&lt;p&gt;✓ Replace deprecated API usage&lt;br&gt;
✓ Remove unused imports&lt;br&gt;
✓ Update failing snapshot&lt;br&gt;
✓ Consider pinning dependency version&lt;/p&gt;

&lt;p&gt;This gives reviewers context immediately instead of asking them to sift through build logs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Auto-Triaging Pull Requests
&lt;/h2&gt;

&lt;p&gt;One feature I found surprisingly useful was automatic categorization.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend&lt;/li&gt;
&lt;li&gt;Backend&lt;/li&gt;
&lt;li&gt;Infrastructure&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Dependencies&lt;/li&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;li&gt;Tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Based on the files changed, the agent can apply labels automatically.&lt;/p&gt;

&lt;p&gt;That makes routing reviews much easier, especially in larger engineering teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling Common Failures
&lt;/h2&gt;

&lt;p&gt;Many failed builds aren't complex engineering problems.&lt;/p&gt;

&lt;p&gt;They're things like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Formatting&lt;/li&gt;
&lt;li&gt;Missing imports&lt;/li&gt;
&lt;li&gt;Broken snapshots&lt;/li&gt;
&lt;li&gt;Dependency version conflicts&lt;/li&gt;
&lt;li&gt;Typographical mistakes&lt;/li&gt;
&lt;li&gt;Simple test failures&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are often fixable without human intervention.&lt;/p&gt;

&lt;p&gt;Instead of merely reporting the issue, an AI agent can suggest a patch—or even open a follow-up commit for review, depending on your team's policies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep Humans in Control
&lt;/h2&gt;

&lt;p&gt;One lesson became clear very quickly.&lt;/p&gt;

&lt;p&gt;AI should assist reviews—not approve production code on its own.&lt;/p&gt;

&lt;p&gt;For our experiments, the guardrails were straightforward:&lt;/p&gt;

&lt;p&gt;AI never merged pull requests&lt;br&gt;
AI never bypassed branch protection&lt;br&gt;
Security approvals remained manual&lt;br&gt;
Production deployments still required human approval&lt;/p&gt;

&lt;p&gt;That balance preserved trust while still saving time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI Added the Most Value
&lt;/h2&gt;

&lt;p&gt;The biggest improvements weren't in writing code.&lt;/p&gt;

&lt;p&gt;They were in reducing repetitive operational work.&lt;/p&gt;

&lt;p&gt;The agent consistently helped by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explaining CI failures&lt;/li&gt;
&lt;li&gt;Summarizing pull requests&lt;/li&gt;
&lt;li&gt;Highlighting risky files&lt;/li&gt;
&lt;li&gt;Surfacing security findings&lt;/li&gt;
&lt;li&gt;Suggesting obvious fixes&lt;/li&gt;
&lt;li&gt;Reducing reviewer context switching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those small improvements compound over dozens of pull requests each week.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Ahead
&lt;/h2&gt;

&lt;p&gt;I don't think the future of CI/CD is simply "AI writes more code."&lt;/p&gt;

&lt;p&gt;I think it's AI removing friction throughout the software delivery lifecycle.&lt;/p&gt;

&lt;p&gt;That includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smarter pull request triage&lt;/li&gt;
&lt;li&gt;Intelligent deployment validation&lt;/li&gt;
&lt;li&gt;Automated rollback recommendations&lt;/li&gt;
&lt;li&gt;Infrastructure change analysis&lt;/li&gt;
&lt;li&gt;Security-aware code reviews&lt;/li&gt;
&lt;li&gt;Context-rich incident summaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Several engineering platforms—including GitHub, GitLab, Harness, and newer AI-native platforms like &lt;a href="https://revolte.ai/" rel="noopener noreferrer"&gt;Revolte&lt;/a&gt; are moving in this direction by embedding AI deeper into software delivery workflows rather than treating it as a standalone coding assistant.&lt;/p&gt;

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

&lt;p&gt;The most successful AI workflows I've seen don't try to replace engineers.&lt;/p&gt;

&lt;p&gt;They remove the repetitive work that slows engineers down.&lt;/p&gt;

&lt;p&gt;If an AI agent can save reviewers from digging through CI logs, identifying obvious issues, and manually categorizing pull requests, that's time the team can spend on architecture, design, and solving customer problems.&lt;/p&gt;

&lt;p&gt;For me, that's where AI belongs inside CI/CD—not making every decision, but helping engineering teams move faster with better context and fewer interruptions.&lt;/p&gt;

&lt;p&gt;How is your team using AI in CI/CD today? Is it limited to code generation, or have you started automating PR reviews, triage, and delivery workflows?&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>cicd</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Platform-as-Code vs Infrastructure-as-Code</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Thu, 23 Jul 2026 07:20:32 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/platform-as-code-vs-infrastructure-as-code-2nd6</link>
      <guid>https://dev.to/joshua_dyson/platform-as-code-vs-infrastructure-as-code-2nd6</guid>
      <description>&lt;h2&gt;
  
  
  Platform-as-Code vs Infrastructure-as-Code: What's the Difference?
&lt;/h2&gt;

&lt;p&gt;Infrastructure-as-Code automated servers. Platform-as-Code is trying to automate the entire developer experience.&lt;/p&gt;

&lt;p&gt;When I first heard the term Platform-as-Code (PaC), my reaction was:&lt;/p&gt;

&lt;p&gt;"Isn't that just Infrastructure-as-Code with a new name?"&lt;/p&gt;

&lt;p&gt;After working with platform engineering teams, I realized the answer is no.&lt;/p&gt;

&lt;p&gt;The two ideas are related, but they solve different problems.&lt;/p&gt;

&lt;p&gt;If you're already using Terraform, Pulumi, or AWS CloudFormation, you probably have Infrastructure-as-Code (IaC). That doesn't necessarily mean you have Platform-as-Code.&lt;/p&gt;

&lt;p&gt;Let's break it down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure-as-Code (IaC)
&lt;/h2&gt;

&lt;p&gt;Infrastructure-as-Code is exactly what it sounds like:&lt;/p&gt;

&lt;p&gt;Define infrastructure in code instead of clicking through cloud consoles.&lt;/p&gt;

&lt;p&gt;Instead of manually creating a Kubernetes cluster or a VPC, you write configuration files.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;resource "aws_instance" "web" {&lt;br&gt;
  ami           = "ami-123456"&lt;br&gt;
  instance_type = "t3.medium"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Now your infrastructure becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Version controlled&lt;/li&gt;
&lt;li&gt;Repeatable&lt;/li&gt;
&lt;li&gt;Automated&lt;/li&gt;
&lt;li&gt;Easy to recreate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Popular IaC tools include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terraform&lt;/li&gt;
&lt;li&gt;Pulumi&lt;/li&gt;
&lt;li&gt;AWS CloudFormation&lt;/li&gt;
&lt;li&gt;Azure Bicep&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;Provision infrastructure consistently.&lt;/p&gt;

&lt;h2&gt;
  
  
  What IaC Doesn't Solve
&lt;/h2&gt;

&lt;p&gt;Imagine a new developer joins your team.&lt;/p&gt;

&lt;p&gt;Infrastructure already exists.&lt;/p&gt;

&lt;p&gt;Now they need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a service&lt;/li&gt;
&lt;li&gt;Configure networking&lt;/li&gt;
&lt;li&gt;Add monitoring&lt;/li&gt;
&lt;li&gt;Set up CI/CD&lt;/li&gt;
&lt;li&gt;Configure secrets&lt;/li&gt;
&lt;li&gt;Register ownership&lt;/li&gt;
&lt;li&gt;Add security policies&lt;/li&gt;
&lt;li&gt;Create dashboards&lt;/li&gt;
&lt;li&gt;Configure alerts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Infrastructure-as-Code doesn't usually handle this entire workflow.&lt;/p&gt;

&lt;p&gt;Developers still jump between:&lt;/p&gt;

&lt;p&gt;GitHub&lt;br&gt;
Terraform&lt;br&gt;
Kubernetes&lt;br&gt;
ArgoCD&lt;br&gt;
Prometheus&lt;br&gt;
Grafana&lt;br&gt;
Jira&lt;br&gt;
Internal documentation&lt;/p&gt;

&lt;p&gt;Everything works…&lt;/p&gt;

&lt;p&gt;…but the experience isn't unified.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter Platform Engineering
&lt;/h2&gt;

&lt;p&gt;Platform engineering asks a different question.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;"How do we automate infrastructure?"&lt;/p&gt;

&lt;p&gt;It asks:&lt;/p&gt;

&lt;p&gt;"How do we make building software easier?"&lt;/p&gt;

&lt;p&gt;That's a much bigger problem.&lt;/p&gt;

&lt;p&gt;A platform team cares about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Golden paths&lt;/li&gt;
&lt;li&gt;Self-service&lt;/li&gt;
&lt;li&gt;Templates&lt;/li&gt;
&lt;li&gt;Security guardrails&lt;/li&gt;
&lt;li&gt;Deployment workflows&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Developer experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Infrastructure is only one piece.&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform-as-Code
&lt;/h2&gt;

&lt;p&gt;Platform-as-Code takes those platform capabilities and makes them programmable.&lt;/p&gt;

&lt;p&gt;Instead of manually creating platform workflows, they're defined as reusable code.&lt;/p&gt;

&lt;p&gt;Think of it like this:&lt;/p&gt;

&lt;p&gt;Developer&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  │

  ▼
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Create Service&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  │

  ▼
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Platform automatically:&lt;/p&gt;

&lt;p&gt;✔ Repository&lt;br&gt;
✔ CI/CD&lt;br&gt;
✔ Infrastructure&lt;br&gt;
✔ Secrets&lt;br&gt;
✔ Monitoring&lt;br&gt;
✔ Logging&lt;br&gt;
✔ Dashboards&lt;br&gt;
✔ Security Policies&lt;br&gt;
✔ Ownership&lt;br&gt;
✔ Documentation&lt;/p&gt;

&lt;p&gt;The developer asks for a service.&lt;/p&gt;

&lt;p&gt;The platform assembles everything consistently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Another Way to Think About It
&lt;/h2&gt;

&lt;p&gt;Imagine building a house.&lt;/p&gt;

&lt;p&gt;Infrastructure-as-Code gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bricks&lt;/li&gt;
&lt;li&gt;Concrete&lt;/li&gt;
&lt;li&gt;Steel&lt;/li&gt;
&lt;li&gt;Electrical wiring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything you need to build.&lt;/p&gt;

&lt;p&gt;Platform-as-Code gives you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The blueprint&lt;/li&gt;
&lt;li&gt;Building rules&lt;/li&gt;
&lt;li&gt;Approved materials&lt;/li&gt;
&lt;li&gt;Inspection process&lt;/li&gt;
&lt;li&gt;Utility connections&lt;/li&gt;
&lt;li&gt;Maintenance documentation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One provisions resources.&lt;/p&gt;

&lt;p&gt;The other standardizes how those resources are used.&lt;/p&gt;

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

&lt;p&gt;As engineering teams grow, consistency becomes harder.&lt;/p&gt;

&lt;p&gt;Different teams:&lt;/p&gt;

&lt;p&gt;choose different deployment patterns&lt;br&gt;
use different observability stacks&lt;br&gt;
create different CI/CD pipelines&lt;br&gt;
configure security differently&lt;/p&gt;

&lt;p&gt;Eventually every service looks slightly different.&lt;/p&gt;

&lt;p&gt;That's expensive.&lt;/p&gt;

&lt;p&gt;Platform engineering tries to reduce that variability.&lt;/p&gt;

&lt;p&gt;Platform-as-Code makes those standards repeatable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI Changes the Picture
&lt;/h2&gt;

&lt;p&gt;Recently, another layer has started to appear.&lt;/p&gt;

&lt;p&gt;AI isn't just writing application code anymore.&lt;/p&gt;

&lt;p&gt;It's helping developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create services&lt;/li&gt;
&lt;li&gt;generate deployment pipelines&lt;/li&gt;
&lt;li&gt;explain infrastructure&lt;/li&gt;
&lt;li&gt;troubleshoot production issues&lt;/li&gt;
&lt;li&gt;review pull requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For that to work well, AI needs context.&lt;/p&gt;

&lt;p&gt;Not just source code.&lt;/p&gt;

&lt;p&gt;It needs to understand:&lt;/p&gt;

&lt;p&gt;infrastructure&lt;br&gt;
deployment pipelines&lt;br&gt;
observability&lt;br&gt;
security policies&lt;br&gt;
organizational standards&lt;/p&gt;

&lt;p&gt;That's why many newer platforms are combining Platform-as-Code with AI-native workflows.&lt;/p&gt;

&lt;p&gt;Instead of treating AI as an IDE feature, they're giving it visibility into the broader software delivery platform.&lt;/p&gt;

&lt;p&gt;Platforms like &lt;a href="https://revolte.ai/" rel="noopener noreferrer"&gt;Revolte&lt;/a&gt; are exploring this direction by bringing AI, platform engineering, deployment automation, and operational context together. Whether that becomes the long-term standard is still evolving, but it reflects where many engineering organizations are experimenting today.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Should You Think About Platform-as-Code?
&lt;/h2&gt;

&lt;p&gt;You probably don't need it if:&lt;/p&gt;

&lt;p&gt;You're a solo developer&lt;br&gt;
You're building a small MVP&lt;br&gt;
Everyone knows the infrastructure&lt;/p&gt;

&lt;p&gt;You'll likely benefit when:&lt;/p&gt;

&lt;p&gt;Multiple teams deploy services&lt;br&gt;
Onboarding takes weeks&lt;br&gt;
Every team has different deployment practices&lt;br&gt;
Platform engineers spend their days answering the same setup questions&lt;br&gt;
Governance becomes difficult&lt;/p&gt;

&lt;p&gt;That's usually the point where organizations start investing in internal developer platforms—and increasingly, Platform-as-Code.&lt;/p&gt;

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

&lt;p&gt;Infrastructure-as-Code changed how we provision infrastructure.&lt;/p&gt;

&lt;p&gt;Platform-as-Code changes how developers interact with that infrastructure.&lt;/p&gt;

&lt;p&gt;One automates cloud resources.&lt;/p&gt;

&lt;p&gt;The other automates the engineering experience.&lt;/p&gt;

&lt;p&gt;As software delivery becomes more automated—and increasingly AI-assisted—I expect Platform-as-Code to become just as important as Infrastructure-as-Code, especially for organizations building internal developer platforms.&lt;/p&gt;

&lt;p&gt;Because the goal isn't simply to automate servers.&lt;/p&gt;

&lt;p&gt;It's to make shipping reliable software easier.&lt;/p&gt;

&lt;p&gt;If you found this useful...&lt;/p&gt;

&lt;p&gt;How does your team define the boundary between Infrastructure-as-Code and Platform-as-Code?&lt;/p&gt;

&lt;p&gt;Do you think they're separate disciplines, or just different layers of the same platform?&lt;/p&gt;

&lt;p&gt;I'd love to hear how your organization approaches it.&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>cloud</category>
      <category>platformengineering</category>
      <category>devops</category>
    </item>
    <item>
      <title>Factory.ai vs Devin: Stop Comparing Features. Compare How They Change Software Delivery.</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Wed, 22 Jul 2026 13:38:12 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/factoryai-vs-devin-stop-comparing-features-compare-how-they-change-software-delivery-4696</link>
      <guid>https://dev.to/joshua_dyson/factoryai-vs-devin-stop-comparing-features-compare-how-they-change-software-delivery-4696</guid>
      <description>&lt;p&gt;A few weeks ago, someone asked me a simple question:&lt;/p&gt;

&lt;p&gt;"Should I use Factory.ai or Devin?"&lt;/p&gt;

&lt;p&gt;My first instinct was to compare features.&lt;/p&gt;

&lt;p&gt;Autonomous coding.&lt;/p&gt;

&lt;p&gt;Pull requests.&lt;/p&gt;

&lt;p&gt;Terminal access.&lt;/p&gt;

&lt;p&gt;Repository understanding.&lt;/p&gt;

&lt;p&gt;Issue tracking.&lt;/p&gt;

&lt;p&gt;The usual checklist.&lt;/p&gt;

&lt;p&gt;But the more I looked into both platforms, the more I realized something.&lt;/p&gt;

&lt;p&gt;They're often grouped into the same category, yet they encourage very different ways of working.&lt;/p&gt;

&lt;p&gt;And I think that's a more useful conversation than asking which one has the longer feature list.&lt;/p&gt;

&lt;p&gt;Two Different Ideas of an AI Engineer&lt;/p&gt;

&lt;p&gt;Both Factory.ai and Devin aim to reduce the amount of manual engineering work.&lt;/p&gt;

&lt;p&gt;Both can understand repositories.&lt;/p&gt;

&lt;p&gt;Both can generate code.&lt;/p&gt;

&lt;p&gt;Both can run tests.&lt;/p&gt;

&lt;p&gt;Both can work across multiple files.&lt;/p&gt;

&lt;p&gt;From a distance they look similar.&lt;/p&gt;

&lt;p&gt;But once you understand how they're designed, their philosophies begin to separate.&lt;/p&gt;

&lt;p&gt;Devin Feels Like Delegation&lt;/p&gt;

&lt;p&gt;The easiest way I describe Devin is this:&lt;/p&gt;

&lt;p&gt;It feels like assigning work to another engineer.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;p&gt;"Help me write this function."&lt;/p&gt;

&lt;p&gt;You're asking:&lt;/p&gt;

&lt;p&gt;"Take this ticket and come back with a pull request."&lt;/p&gt;

&lt;p&gt;Devin investigates the codebase, plans the implementation, writes the code, runs tests, and iterates toward a completed task with relatively little intervention. That's what makes it feel less like an assistant and more like a teammate for well-defined engineering work.&lt;/p&gt;

&lt;p&gt;The interaction changes.&lt;/p&gt;

&lt;p&gt;You stop thinking about individual edits.&lt;/p&gt;

&lt;p&gt;You start thinking about outcomes.&lt;/p&gt;

&lt;p&gt;That shift is surprisingly significant.&lt;/p&gt;

&lt;p&gt;Factory.ai Feels Like an Engineering Platform&lt;/p&gt;

&lt;p&gt;Factory.ai approaches the problem differently.&lt;/p&gt;

&lt;p&gt;Instead of centering everything around one autonomous engineer, it introduces Droids—agents that can work across the IDE, terminal, browser, Slack, CLI, and other engineering surfaces. The emphasis is on letting teams stay in their existing workflow while giving agents access to the context and tools they need.&lt;/p&gt;

&lt;p&gt;What stood out to me wasn't just the agents.&lt;/p&gt;

&lt;p&gt;It was the workflow.&lt;/p&gt;

&lt;p&gt;Factory doesn't feel like:&lt;/p&gt;

&lt;p&gt;"Here's your AI engineer."&lt;/p&gt;

&lt;p&gt;It feels more like:&lt;/p&gt;

&lt;p&gt;"Here's an environment where AI participates throughout engineering."&lt;/p&gt;

&lt;p&gt;That's a subtle difference.&lt;/p&gt;

&lt;p&gt;But an important one.&lt;/p&gt;

&lt;p&gt;The Real Difference Isn't Autonomy&lt;/p&gt;

&lt;p&gt;Most comparisons measure autonomy.&lt;/p&gt;

&lt;p&gt;Can it write code?&lt;/p&gt;

&lt;p&gt;Can it debug?&lt;/p&gt;

&lt;p&gt;Can it open pull requests?&lt;/p&gt;

&lt;p&gt;Can it execute terminal commands?&lt;/p&gt;

&lt;p&gt;Those are useful capabilities.&lt;/p&gt;

&lt;p&gt;But I think they're measuring the wrong thing.&lt;/p&gt;

&lt;p&gt;The more interesting question is:&lt;/p&gt;

&lt;p&gt;Where does the autonomy actually live?&lt;/p&gt;

&lt;p&gt;For Devin, autonomy largely revolves around owning and completing engineering tasks.&lt;/p&gt;

&lt;p&gt;For Factory, autonomy extends into the engineering workflow itself—planning, reviews, issue management, code changes, and coordination across multiple interfaces.&lt;/p&gt;

&lt;p&gt;That's not simply a feature difference.&lt;/p&gt;

&lt;p&gt;It's a workflow difference.&lt;/p&gt;

&lt;p&gt;Both Eventually Hit the Same Wall&lt;/p&gt;

&lt;p&gt;This is where my perspective shifts away from comparing products.&lt;/p&gt;

&lt;p&gt;Neither platform struggles because it can't write code.&lt;/p&gt;

&lt;p&gt;They struggle whenever context becomes fragmented.&lt;/p&gt;

&lt;p&gt;Questions like:&lt;/p&gt;

&lt;p&gt;Why was this architecture chosen?&lt;/p&gt;

&lt;p&gt;Which deployment failed last week?&lt;/p&gt;

&lt;p&gt;Why does this service behave differently in production?&lt;/p&gt;

&lt;p&gt;Which business rule exists only in a design document?&lt;/p&gt;

&lt;p&gt;Why did the previous team intentionally avoid this implementation?&lt;/p&gt;

&lt;p&gt;None of those answers live inside the repository.&lt;/p&gt;

&lt;p&gt;They live across documentation.&lt;/p&gt;

&lt;p&gt;Deployments.&lt;/p&gt;

&lt;p&gt;Incidents.&lt;/p&gt;

&lt;p&gt;Architecture decisions.&lt;/p&gt;

&lt;p&gt;Runtime behavior.&lt;/p&gt;

&lt;p&gt;Operational history.&lt;/p&gt;

&lt;p&gt;That's the part AI still has to reconstruct.&lt;/p&gt;

&lt;p&gt;And that's where things become difficult.&lt;/p&gt;

&lt;p&gt;Context Is Becoming the Competitive Advantage&lt;/p&gt;

&lt;p&gt;I don't think the next generation of engineering tools will compete primarily on code generation.&lt;/p&gt;

&lt;p&gt;That capability is improving everywhere.&lt;/p&gt;

&lt;p&gt;The bigger opportunity is preserving context.&lt;/p&gt;

&lt;p&gt;Imagine an AI that doesn't just understand your repository.&lt;/p&gt;

&lt;p&gt;It understands:&lt;/p&gt;

&lt;p&gt;why the change was requested&lt;br&gt;
how similar changes behaved in production&lt;br&gt;
deployment history&lt;br&gt;
observability signals&lt;br&gt;
security policies&lt;br&gt;
previous incidents&lt;br&gt;
release patterns&lt;/p&gt;

&lt;p&gt;That's a much richer picture than code alone.&lt;/p&gt;

&lt;p&gt;And it leads to better engineering decisions.&lt;/p&gt;

&lt;p&gt;Why This Matters Beyond Factory.ai and Devin&lt;/p&gt;

&lt;p&gt;This is also why I think we're moving beyond the era of isolated AI coding assistants.&lt;/p&gt;

&lt;p&gt;The industry is starting to explore AI-native software delivery, where planning, development, deployment, runtime, observability, and governance remain connected instead of living in separate tools.&lt;/p&gt;

&lt;p&gt;That's one reason platforms like &lt;a href="https://revolte.ai/" rel="noopener noreferrer"&gt;Revolte&lt;/a&gt; caught my attention.&lt;/p&gt;

&lt;p&gt;Not because they're trying to replace Factory or Devin—they're solving a different problem.&lt;/p&gt;

&lt;p&gt;The interesting idea is preserving delivery context across the entire software lifecycle so AI isn't forced to rediscover the same information every time it moves from coding to deployment or from production back to development.&lt;/p&gt;

&lt;p&gt;Whether that architectural approach becomes the norm remains to be seen.&lt;/p&gt;

&lt;p&gt;But I think it's pointing toward a bigger shift than simply building another autonomous coding agent.&lt;/p&gt;

&lt;p&gt;So Which One Would I Choose?&lt;/p&gt;

&lt;p&gt;It depends on what I'm trying to optimize.&lt;/p&gt;

&lt;p&gt;If I wanted an AI teammate that could take ownership of a well-scoped engineering task and work toward completion, I'd lean toward Devin.&lt;/p&gt;

&lt;p&gt;If I wanted AI woven throughout the engineering workflow—from IDE to terminal to collaboration tools—Factory's approach is compelling because it extends beyond a single interface and emphasizes shared engineering context.&lt;/p&gt;

&lt;p&gt;I don't think one replaces the other.&lt;/p&gt;

&lt;p&gt;I think they represent two different visions of AI-assisted engineering.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;A year ago, we were debating whether AI could generate useful code.&lt;/p&gt;

&lt;p&gt;Today, we're debating how much responsibility it should take.&lt;/p&gt;

&lt;p&gt;That's meaningful progress.&lt;/p&gt;

&lt;p&gt;But I don't think the long-term winner will be the tool with the most autonomous agent.&lt;/p&gt;

&lt;p&gt;I think it'll be the one with the deepest understanding of how software is actually delivered.&lt;/p&gt;

&lt;p&gt;Because AI can only make good engineering decisions when it understands more than the code.&lt;/p&gt;

&lt;p&gt;It has to understand everything around the code.&lt;/p&gt;

&lt;p&gt;And that, in my view, is where the next chapter of software engineering begins.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwaredelivery</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>What “Read-Only Fridays” Quietly Reveal About Your Platform</title>
      <dc:creator>joshua dyson</dc:creator>
      <pubDate>Mon, 09 Feb 2026 09:08:56 +0000</pubDate>
      <link>https://dev.to/joshua_dyson/what-read-only-fridays-quietly-reveal-about-your-platform-28ph</link>
      <guid>https://dev.to/joshua_dyson/what-read-only-fridays-quietly-reveal-about-your-platform-28ph</guid>
      <description>&lt;p&gt;A while back, I came across the idea of “read-only Fridays.”&lt;br&gt;
No production changes. No writes. Just observation.&lt;/p&gt;

&lt;p&gt;At first, it sounds like a sensible process rule.&lt;br&gt;
But in production systems, rules like this usually exist for a deeper reason.&lt;/p&gt;

&lt;p&gt;Read-only Fridays aren’t really about Fridays.&lt;br&gt;
They’re about trust in your platform.&lt;/p&gt;

&lt;p&gt;They’re not about the calendar.&lt;br&gt;
They’re about confidence.&lt;/p&gt;

&lt;p&gt;When teams trust their platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deploys are small and reversible&lt;/li&gt;
&lt;li&gt;rollbacks are boring&lt;/li&gt;
&lt;li&gt;observability answers questions quickly&lt;/li&gt;
&lt;li&gt;on-call doesn’t feel like a gamble&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Friday isn’t special. It’s just another day.&lt;/p&gt;

&lt;p&gt;When they don’t, risk gets pushed into process rules.&lt;br&gt;
Freezes, sign-offs, exceptions, calendar-based safety nets.&lt;/p&gt;

&lt;p&gt;Those rules aren’t failures , they’re signals.&lt;/p&gt;

&lt;p&gt;They tell you the platform doesn’t yet give teams enough confidence to change safely, so humans compensate instead.&lt;/p&gt;

&lt;p&gt;The interesting question isn’t “Should we allow Friday deploys?”&lt;br&gt;
It’s:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;*&lt;em&gt;“What would need to be true for this rule to disappear?”&lt;br&gt;
*&lt;/em&gt;&lt;/em&gt;&lt;br&gt;
Almost always, the answer is platform work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clearer pipelines&lt;/li&gt;
&lt;li&gt;faster feedback&lt;/li&gt;
&lt;li&gt;better observability&lt;/li&gt;
&lt;li&gt;easier recovery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Calendars don’t create safety.&lt;br&gt;
Platforms do.&lt;/p&gt;

</description>
      <category>devex</category>
      <category>sre</category>
      <category>developer</category>
    </item>
  </channel>
</rss>
