<?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: XB Software</title>
    <description>The latest articles on DEV Community by XB Software (xb-software).</description>
    <link>https://dev.to/xb-software</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%2Forganization%2Fprofile_image%2F13646%2F584ae1dc-64a1-4d8f-b1df-c5be3a9f4681.png</url>
      <title>DEV Community: XB Software</title>
      <link>https://dev.to/xb-software</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xb-software"/>
    <language>en</language>
    <item>
      <title>How We Automated a Production-Grade Traccar Deployment</title>
      <dc:creator>Sergey Laptick</dc:creator>
      <pubDate>Mon, 20 Jul 2026 14:28:48 +0000</pubDate>
      <link>https://dev.to/xb-software/how-we-automated-a-production-grade-traccar-deployment-fn6</link>
      <guid>https://dev.to/xb-software/how-we-automated-a-production-grade-traccar-deployment-fn6</guid>
      <description>&lt;p&gt;GPS tracking systems have become essential infrastructure for fleet management, logistics, delivery services, and field operations. Companies that manage vehicles, assets, or mobile workers need reliable visibility into where things are and where they have been.&lt;/p&gt;

&lt;p&gt;Traccar is a mature open-source platform that handles such functionality well. The challenge is how to get it running in a production environment with monitoring, security, and the ability to customize it without spending weeks on setup.&lt;/p&gt;

&lt;p&gt;We built an automated deployment script to solve this. We use it to deploy production-ready Traccar environments, then customize them according to our clients’ needs. This article explains how it works and what we deliver.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Available Traccar Deployment Options Lack
&lt;/h2&gt;

&lt;p&gt;Traccar is a system for tracking anything that moves: couriers, drivers, fleets, assets, etc. It includes a server, a frontend interface, and mobile applications that can function as GPS trackers themselves. The open-source version is &lt;a href="https://github.com/traccar/" rel="noopener noreferrer"&gt;available on GitHub&lt;/a&gt;, and anyone can download and try it. However, launching it and running it in production for years are two different things.&lt;/p&gt;

&lt;p&gt;Most companies that &lt;a href="https://xbsoftware.com/gps-tracking-software/" rel="noopener noreferrer"&gt;need GPS tracking software&lt;/a&gt; do not want to spend time figuring out which database works best with Traccar, how to set up production environment monitoring so they know when something breaks, or how to configure a firewall to prevent data leaks. They want a system that works, stays running, and alerts them before it breaks down.&lt;/p&gt;

&lt;p&gt;The default deployment options available today have gaps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/marketplace/pp/prodview-szxmjz5olg66a" rel="noopener noreferrer"&gt;&lt;strong&gt;AWS Marketplace&lt;/strong&gt;&lt;/a&gt; offers a basic Traccar instance at about $0.03 per hour. You get the software running, but the monitoring is whatever AWS provides by default. Limited styling, no tailored alerts, no ability to change how the system behaves;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.traccar.org/product/tracking-server/" rel="noopener noreferrer"&gt;&lt;strong&gt;Traccar's own hosted server&lt;/strong&gt;&lt;/a&gt; for 50 devices costs around $49.95 per month in the US. It includes some branding options (logo, name and colors) with no UX or functional changes available. The server runs in Traccar's environment, not on the client's infrastructure. All data lives on Traccar's servers. For companies with a preference to keep their operational data on their own hardware, this is a non-starter;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deploying Traccar yourself on your infrastructure from the open-source repository&lt;/strong&gt; means your company owns and manages the entire stack. This option includes figuring out deployment, database configuration, reverse proxy setup, monitoring, alerting, and security. It is doable, but it takes time and expertise that most operations teams do not have to spare.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is how the available options compare and where we bring our expertise to the table:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmsjdizqf19rj6bxeuess.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmsjdizqf19rj6bxeuess.png" alt="Comparing Traccar deployment options" width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Built: Automated Production Environment Deployment
&lt;/h2&gt;

&lt;p&gt;When a client came to us needing a production-ready Traccar deployment without the usual headaches, we delivered it quickly and reliably. Here is what we built and how it works.&lt;/p&gt;

&lt;p&gt;Instead of treating Traccar as a standalone application to be installed manually, XB Software built an automated deployment script that creates a complete production environment around it. The script runs on a Linux machine and handles everything needed to get Traccar running in a production-ready state.&lt;/p&gt;

&lt;p&gt;Here is what the deployment includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Traccar&lt;/strong&gt; backend and frontend;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PostgreSQL database&lt;/strong&gt;;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prometheus&lt;/strong&gt; for metrics collection;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Alertmanager&lt;/strong&gt; for sending notifications when things go wrong;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nginx&lt;/strong&gt; as a reverse proxy for monitoring interfaces;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Node exporter&lt;/strong&gt; for Linux machine metrics;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PostgreSQL exporter&lt;/strong&gt; for database metrics;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Firewall configuration&lt;/strong&gt; using UFW/iptables to expose only necessary ports.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The script checks environment variables, installs Docker and Docker Compose, and generates configuration files from templates. It then sets up the firewall, clones the frontend repository (either standard Traccar frontend or a custom one), builds the stack, and starts everything. The logic strictly separates application, production environment monitoring, and data storage layers. When we update the Traccar interface or Alertmanager settings, the script performs smart, targeted restarts and rebuilds only the affected containers while leaving others untouched. This protects data from corruption, preserves active GPS tracker sessions, and maintains database uptime.&lt;/p&gt;

&lt;p&gt;The deployment process with the script is fully idempotent. It never damages the system or creates duplicate resources. All original configuration templates remain on the server.&lt;/p&gt;

&lt;p&gt;If a client needs to change monitoring passwords, update email alert settings, or modify any other configuration, there is no need for developers to edit complex files manually. They can update the corresponding variable in the centralized .env file and rerun the script. The infrastructure applies the changes without risking production stability.&lt;/p&gt;

&lt;p&gt;For production-level reliability, we separated deployment logic from service management. &lt;em&gt;Systemd&lt;/em&gt; handles stack availability, ensuring all containers restart automatically after a server reboot, while build and update tasks remain isolated within the deployment script.&lt;/p&gt;

&lt;h2&gt;
  
  
  System Architecture: Simple, Flexible, and Production-Capable
&lt;/h2&gt;

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

&lt;p&gt;All the components listed above work together in a simple but production-capable architecture. Everything runs in Docker containers on a single server. For small to medium deployments this is more than sufficient. If tracking volume grows, the client can simply move the deployment to a more powerful server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Traccar backend and frontend are packaged in a single container.&lt;/strong&gt; This is how Traccar's official Docker image works, and it keeps deployment straightforward. The frontend is written in React, and the backend runs on a custom Java server. The mobile applications (Traccar Client for drivers and Traccar Manager for fleet supervisors) are available from the official app stores.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For the database, we went with PostgreSQL.&lt;/strong&gt; Traccar supports multiple databases, but PostgreSQL handles geospatial queries better than MySQL and manages high loads more effectively. For most fleets, the difference between databases is not dramatic, but PostgreSQL gives more headroom if tracking volume grows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prometheus and Alertmanager run in their own container.&lt;/strong&gt; Prometheus scrapes data from two exporters. The Node exporter exposes such Linux machine metrics as CPU, memory, disk, network (these are the basic ones that can be extended if needed). The PostgreSQL exporter exposes database metrics. Together, they provide visibility into the health of the entire stack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nginx sits in front of everything.&lt;/strong&gt; It routes traffic to Traccar, Prometheus, and Alertmanager. We added basic authentication to the monitoring interfaces so that metrics are not publicly accessible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Traccar Integration Matters for Fleet Operations
&lt;/h2&gt;

&lt;p&gt;Companies don’t buy tracking software and &lt;a href="https://xbsoftware.com/logistics-software-development/" rel="noopener noreferrer"&gt;logistics solutions&lt;/a&gt; because they enjoy looking at maps. They buy them because they need to know where their vehicles are, how long drivers spend on routes, whether deliveries are on time, and whether assets are being used efficiently.&lt;/p&gt;

&lt;p&gt;When the tracking system goes down, operations suffer. Dispatchers cannot assign jobs. Customers cannot get delivery updates. Managers cannot verify that routes were followed. The business loses visibility, and visibility is the whole point.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Our deployment approach addresses this directly.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitoring and Alerting: Knowing Before It Breaks
&lt;/h3&gt;

&lt;p&gt;We built a deployment that not only works today but also tells you when it might stop working tomorrow. More vehicles get added. More trips get tracked. The database grows. Memory usage creeps up. CPU spikes during peak hours. Without monitoring, the first sign of trouble is often the system going down.&lt;/p&gt;

&lt;p&gt;Our observability stack provides early warning. The alerts we configured track:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Host health:&lt;/strong&gt; CPU, memory, disk usage, network activity;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Database health:&lt;/strong&gt; PostgreSQL connections, query performance, storage;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Service availability:&lt;/strong&gt; whether Traccar and its components are responding.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When metrics cross predefined thresholds, Alertmanager sends notifications. The client can see exactly what is happening on dashboards and plan upgrades before the system fails.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security: Basic But Solid
&lt;/h3&gt;

&lt;p&gt;Security follows the same principle as the rest of the stack: simple and effective. The script configures &lt;em&gt;iptables&lt;/em&gt; (a traditional utility used to configure and manage IP packet filtering and NAT rules in the Linux kernel) to block all ports except those needed for the application to function.&lt;/p&gt;

&lt;p&gt;This is essentially the same approach major cloud providers use with their security groups, just without the fancy UI. All internal traffic (database queries, exporter metrics collection) is fully isolated within Docker's private virtual networks and physically hidden from the outside world.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customization: Frontend and Backend Modifications
&lt;/h3&gt;

&lt;p&gt;A production environment also has to reflect the client's needs. One of the reasons companies choose Traccar is that they can customize it. In our experience, clients typically prioritize UX improvements. So we built flexibility into the deployment script accordingly. The repositories it uses are defined in environment variables. The frontend repo variable can point to the standard Traccar frontend on GitHub, a private repository with custom styles, or even a local directory.&lt;/p&gt;

&lt;p&gt;This means we can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Apply branding&lt;/strong&gt;: replace the Traccar logo with the client's logo, adjust color palettes;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Modify UI elements&lt;/strong&gt;: add, remove, or rearrange features in the frontend;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Update the frontend&lt;/strong&gt;: pull new versions from the repository without changing the deployment script.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most clients do not ask for backend changes. But for those who do need backend modifications (custom business logic, integrations with existing systems, specialized tracking features) we can handle those as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  Support: Ongoing Maintenance, Adjustments, and Troubleshooting&amp;nbsp;
&lt;/h3&gt;

&lt;p&gt;Deploying the system is only the first step. When something drifts out of spec (memory spikes, database connection bloat, or unusual latency) we can diagnose it, and adjust the server or Traccar configuration before it becomes a problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Enhancements for Traccar Production Deployments
&lt;/h2&gt;

&lt;p&gt;The deployment script is a foundation. As we work with more clients, we will refine the monitoring rules, expand the customization options, and improve the deployment process.&lt;/p&gt;

&lt;p&gt;One area we are exploring is using AI-assisted development to accelerate frontend customization. Instead of manually modifying React components for each client, we could generate custom interfaces based on client requirements.&lt;/p&gt;

&lt;p&gt;This is still in the exploration phase, but the potential is significant.&lt;/p&gt;

&lt;p&gt;We are also considering how to handle larger deployments. Docker Swarm or Kubernetes would provide better scaling for fleet management software that works with hundreds or thousands of vehicles. The current script is a starting point, and we can build more complex architectures as client needs grow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;Traccar is a powerful GPS tracking system. But power without reliability is useless, and reliability without visibility is dangerous. Our automated deployment creates a production environment that combines Traccar's capabilities with the monitoring, security, and customization that businesses actually need.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>automation</category>
      <category>software</category>
    </item>
    <item>
      <title>Senior Developers Don’t Write More Code. They Prevent Disasters</title>
      <dc:creator>Sergey Laptick</dc:creator>
      <pubDate>Thu, 09 Jul 2026 13:10:47 +0000</pubDate>
      <link>https://dev.to/xb-software/senior-developers-dont-write-more-code-they-prevent-disasters-5f8m</link>
      <guid>https://dev.to/xb-software/senior-developers-dont-write-more-code-they-prevent-disasters-5f8m</guid>
      <description>&lt;p&gt;Imagine this. A team celebrates a massive release with dozens of features, thousands of commits, and months of late nights. Then, six months later, that same system is a maintenance nightmare. Bugs crop up everywhere. Onboarding new engineers takes weeks. Every small change breaks something else.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;The problem is that many companies still measure senior engineers the same way they measure juniors: by output (more features delivered, more code in the repository, etc.). But that misses the real layer of seniority and results in production systems that fail from decisions that were never challenged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hidden Work of Senior Engineers
&lt;/h2&gt;

&lt;p&gt;A senior developer’s day rarely looks like a productivity dashboard. They’re not constantly pushing commits or closing tickets. Instead, they’re doing things that look like they’re doing nothing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sitting in architecture discussions;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mapping out failure modes;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pushing back on vague requirements;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Asking “why” five times before anyone writes a spec.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this “ships.” But everything becomes safer because of it.&lt;/p&gt;

&lt;p&gt;What actually separates a mid-level from a &lt;a href="https://medium.com/@Adekola_Olawale/the-skills-every-senior-frontend-developer-must-master-in-2026-5301499d67cb" rel="noopener noreferrer"&gt;senior engineer in 2026&lt;/a&gt; isn’t syntax mastery or knowing the latest build tool. It’s strategic thinking, technical influence, and the ability to balance trade-offs between speed, scalability, and maintainability. You can teach someone React in a week. Teaching them to see around corners takes years.&lt;/p&gt;

&lt;p&gt;This invisible work is why senior engineers prevent problems that junior engineers cannot yet see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Scaling bottlenecks before they exist;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data consistency issues that only appear under load;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dependency risks in third-party integrations;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Over-engineering disguised as “future-proofing”;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under-engineering disguised as “MVP speed”.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A production outage is rarely a surprise. It’s a delayed decision that a senior engineer might have spotted six months earlier if anyone had listened.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Paradox of Deleting Code or Why More Code Isn't Always Better
&lt;/h2&gt;

&lt;p&gt;Here’s a counterintuitive truth that keeps coming up in engineering circles: your value as a developer becomes inversely proportional to the amount of code you write. Here’s how this so-called &lt;a href="https://dev.to/kirill_tolmachev/senior-developers-dont-write-better-code-they-delete-more-of-it-1o88"&gt;Deletion Paradox&lt;/a&gt; works. Junior engineers are busy adding features while senior engineers are quietly removing thousands of lines that never should have existed.&lt;/p&gt;

&lt;p&gt;Why does that matter? Because every line of code is a future maintenance liability. It adds to the cognitive load, increases the surface area for bugs, and creates hidden coupling that will snap under pressure.&lt;/p&gt;

&lt;p&gt;In mature systems, more code rarely means more value. It often means more operational complexity, more maintenance overhead, and more places where things can go wrong. The best way to improve a system is often to remove code, because you understand what happens after it ships.&lt;/p&gt;

&lt;h2&gt;
  
  
  Outcome Vs. Output: The Real Measuring Stick
&lt;/h2&gt;

&lt;p&gt;This is where the shift from output to outcomes becomes concrete:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt; is what your team produces: a shipped feature, a release, a line of code. It’s easy to count, easy to celebrate, and easy to fake as progress;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Outcome&lt;/strong&gt; is the measurable change in user behavior that creates business value: higher activation, better retention, more expansion revenue.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s this concept of “Feature Factories”, describing a situation where teams that celebrate activity and features delivered instead of business value and changed system behavior. The issue is that building a feature without an expected outcome is just a guess shipped at full cost.&lt;/p&gt;

&lt;p&gt;Senior developers look at the backlog through the lens of hypotheses rather than blind commitments. They ask: “What are we trying to learn?” “What will change if this works?” “What’s the metric that moves if we get this right?”&lt;/p&gt;

&lt;p&gt;This is why their most valuable contribution is often saying “don’t build this yet.” Not because they’re lazy or risk-averse, but because they can see that a feature will create long-term maintenance cost, or that an abstraction will break under real usage patterns, or that a shortcut will become technical debt faster than anyone expects.&lt;/p&gt;

&lt;p&gt;At XB Software, we’ve seen this play out repeatedly in &lt;a href="https://xbsoftware.com/app-modernization-service/" rel="noopener noreferrer"&gt;legacy app modernization&lt;/a&gt; projects. Sometimes the most valuable thing you can do is to know which parts of an old system to preserve and which to retire.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;A UI redesign that strips familiar workflows can break user habits that took years to build. A senior engineer’s job is to see that coming and push back before anyone writes a line of code. That’s why we emphasize careful planning. The absence of a bad redesign often delivers more value than a dozen new screens.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changes When AI Generates Half Your Code
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://www.sonarsource.com/state-of-code-developer-survey-report.pdf" rel="noopener noreferrer"&gt;Sonar 2026 State of Code Developer Survey&lt;/a&gt; found that &lt;strong&gt;42% of production code is now AI-generated or assisted&lt;/strong&gt;. 72% of developers who’ve tried AI coding tools now use them every day. That changes what “coding” means.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3mi93vo6tyg3nyjbz9y4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3mi93vo6tyg3nyjbz9y4.png" alt="Average share of AI-assisted or generated code" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anyone can generate massive amounts of code now. However, the hard part is knowing what &lt;em&gt;not&lt;/em&gt; to generate, what to delete, and what to constrain.&lt;/p&gt;

&lt;p&gt;As the VibeCoder Engineering Blog points out, a &lt;a href="https://blog.vibecoder.me/best-vibe-coding-tool-stack-senior-developers" rel="noopener noreferrer"&gt;senior developer’s value in the AI era is building the guardrails&lt;/a&gt;. They write &lt;em&gt;.cursorrules&lt;/em&gt; or &lt;em&gt;CLAUDE.md&lt;/em&gt; files that encode project conventions, architecture patterns, and forbidden anti-patterns. The AI then generates code that follows their standards instead of generic best practices.&lt;/p&gt;

&lt;p&gt;This is a form of systemic decision-making that happens before AI-generated code exists. AI cannot reliably make engineering trade-offs under business constraints. It doesn’t know when to choose simplicity over software scalability, or when to exchange speed for correctness. Those are still human judgments, and they’re exactly what senior engineers get paid for.&lt;/p&gt;

&lt;p&gt;So while AI makes code cheaper, it makes engineering decision-making more valuable. The bottleneck here is editing, deleting, and deciding what not to build. The senior engineer’s job has shifted from writing code to writing rules that constrain the machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  So What Does Seniority Actually Look Like?
&lt;/h2&gt;

&lt;p&gt;Junior engineers optimize for “correct implementation.” They want to build the thing right. Senior engineers optimize for “sustainable system behavior.” They want to build the right thing, and sometimes that means not building anything at all.&lt;/p&gt;

&lt;p&gt;The most important contribution a senior engineer makes is often invisible: shaping the system before it becomes expensive to fix. That’s the work that doesn’t show up in commit logs. But it’s the work that separates a stable product from a sinking one.&lt;/p&gt;

&lt;p&gt;Senior developers don’t “do more.” They make sure the system doesn’t accumulate problems faster than the team can understand them. And in production, that is what defines success.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>software</category>
    </item>
    <item>
      <title>AI Can Write Code, But It Can't Own Production Systems</title>
      <dc:creator>Sergey Laptick</dc:creator>
      <pubDate>Thu, 02 Jul 2026 13:36:27 +0000</pubDate>
      <link>https://dev.to/xb-software/ai-can-write-code-but-it-cant-own-production-systems-2a07</link>
      <guid>https://dev.to/xb-software/ai-can-write-code-but-it-cant-own-production-systems-2a07</guid>
      <description>&lt;p&gt;AI is getting scary good at writing code. Drop a prompt into Lovable or Claude Code, and minutes later you have a working prototype with a modern tech stack. It feels like we solved all big problems in AI-assisted software development.&lt;/p&gt;

&lt;p&gt;Then production happens. And production does not care how clean your code looks. It cares whether it survives reality. Can it handle traffic spikes or recover when a dependency fails at 2 AM? Can a person who inherits it six months from now actually understand what it does?&lt;/p&gt;

&lt;p&gt;The uncomfortable truth is AI can generate code at scale, but it cannot own what happens after you deploy it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Illusion: "Perfect" Code from AI
&lt;/h2&gt;

&lt;p&gt;What AI actually produces is impressive. Clean structure. Readable functions. Fast prototypes. Even decent architecture suggestions if you prompt it right. From the outside, it looks like senior-level output.&lt;/p&gt;

&lt;p&gt;But here is the thing. AI does not understand business risk. It does not know what happens when your database connection pool runs out under load. It cannot tell you which of two equally valid solutions will survive a 10x traffic spike. It generates what looks right based on what it has seen before, not what is right for your specific system with its specific constraints.&lt;/p&gt;

&lt;p&gt;Andy Anderson, a researcher at IBM, spent four months &lt;a href="https://arxiv.org/pdf/2604.09388" rel="noopener noreferrer"&gt;building a Kubernetes dashboard from scratch using Claude Code&lt;/a&gt;. No team. Just him and the AI. The first two weeks were exhilarating. Code poured out at a pace he had never experienced. Features that would normally take days appeared in hours. It felt like having a tireless junior developer who typed at the speed of thought.&lt;/p&gt;

&lt;p&gt;Then the limitations hit. All at once: broken builds, wrong architectural patterns, scope creep, the AI trying to modify files Andy did not ask it to touch, etc. The problems were cascading: fix one thing, three others break. The researcher ended up spending more time reviewing and reverting than he would have spent writing the code himself.&lt;/p&gt;

&lt;p&gt;We saw the same pattern with a scheduling app we built recently. &lt;a href="https://xbsoftware.com/blog/custom-scheduling-app-with-ai-and-dhtmlx/" rel="noopener noreferrer"&gt;Lovable generated a working prototype in hours&lt;/a&gt; with React frontend, Node.js backend, and PostgreSQL database. The calendar looked fine in the demo. But when we tested it, the AI-generated scheduler could not handle recurring events or drag-and-drop reliably. It was a concept car made of clay. So we swapped that component for DHTMLX Scheduler, a production-grade library, and rebuilt the backend for real-world scale. The prototype was useful, but the production system needed actual engineering.&lt;/p&gt;

&lt;p&gt;This pattern shows up everywhere. The tools are great at generating code but terrible at understanding what the code is for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Things Break: Production Reality
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;In production, systems behave differently.&lt;/strong&gt; Traffic is unpredictable. Dependencies fail. Data grows. Users do things you never expected. Integrations become fragile. And suddenly, that “perfect” AI-generated code becomes just one layer in a very messy environment. The problem is not the code but everything around it&lt;/p&gt;

&lt;p&gt;A large-scale study &lt;a href="https://arxiv.org/pdf/2603.28592" rel="noopener noreferrer"&gt;analyzing 302,600 verified AI-authored commits across 6,299 GitHub repositories&lt;/a&gt; found something sobering. AI-generated code introduces real issues, such as code smells, correctness problems, or security vulnerabilities, and 22.7% of those issues survive long-term, silently accumulating as technical debt in production codebases. More than 15% of commits from every AI coding assistant introduce at least one issue. &lt;strong&gt;Code that looks fine in a PR can quietly rot in production for years.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stéphane Maes, who writes about software engineering, calls this the “&lt;a href="https://shmaes.wordpress.com/2026/03/16/evaluating-the-efficacy-of-artificial-intelligence-in-software-engineering-a-post-february-2026-analysis/" rel="noopener noreferrer"&gt;Great Toil Shift&lt;/a&gt;.” The time you save generating code gets entirely consumed by the downstream work. This includes architectural review, security auditing, code understanding, documentation, and ongoing maintenance. The efficiency gains are not what they seem.&lt;/p&gt;

&lt;p&gt;This is a common thing for teams that go all in on AI-generated code. The prototypes ship fast. Everyone is excited. Then the first production incident hits. The AI-generated code does something unexpected under load. Nobody fully understands the system because nobody wrote it. The team spends days debugging something that would have taken hours if they had built it themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Missing Piece: Engineering Judgment
&lt;/h2&gt;

&lt;p&gt;Here is where the conversation needs to shift. What AI does is options generation. It gives you suggestions, often good ones. But someone still has to decide which suggestion to take. Someone still has to understand the trade-offs.&lt;/p&gt;

&lt;p&gt;And they are the hard part:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Architecture trade-offs&lt;/strong&gt;: Do we use a message queue or direct calls?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Failure handling&lt;/strong&gt;: What happens when this service goes down?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance constraints&lt;/strong&gt;: How many requests per second can this handle?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security decisions&lt;/strong&gt;: Is this endpoint properly authenticated?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Long-term maintainability&lt;/strong&gt;: Will someone understand this in two years?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where experience matters more than output. Two solutions can both "work" in AI terms. But only one survives production load.&lt;/p&gt;

&lt;p&gt;Andy Anderson's central finding from his experience report is worth quoting directly: &lt;em&gt;"The intelligence of an AI-driven development system resides not in the AI model itself, but in the infrastructure of instructions, tests, metrics, and feedback loops that surround it."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In other words, AI is just a tool. The real system is everything you build around it. The tests. The review process. The deployment pipeline. The monitoring. The on-call rotation. The institutional knowledge about why things are the way they are.&lt;/p&gt;

&lt;p&gt;In production environments, organizations fundamentally need what they call a "throat to choke," a human engineer who holds ultimate accountability, who can assess blame, who possesses the systemic intuition to troubleshoot complex, real-world failures. A machine cannot sign off on a Service Level Agreement (SLA). It cannot face a compliance audit. It cannot absorb liability for downtime.&lt;/p&gt;

&lt;p&gt;This is not a philosophical point. Researchers who &lt;a href="https://arxiv.org/html/2605.04532v1" rel="noopener noreferrer"&gt;analyzed the terms of service for nine AI coding assistants&lt;/a&gt; found a consistent pattern: while users own the generated output, &lt;strong&gt;full liability, responsibility for correctness, and downstream production risk rests on the human user&lt;/strong&gt;. The providers explicitly disclaim warranties and allocate responsibility to the developer.&lt;/p&gt;

&lt;p&gt;If your AI-generated code causes a production outage, the AI company is not getting the pager duty alert. You are.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for How We Build Software
&lt;/h2&gt;

&lt;p&gt;None of this means the tools are useless. They are incredibly useful. They can generate boilerplate, write tests, refactor code, and help you explore solutions faster than ever before. But the tools do not replace judgment. They do not eliminate the need for testing. They do not make architecture decisions for you. And they definitely do not own the systems they help you build.&lt;/p&gt;

&lt;p&gt;The real skill in modern &lt;a href="https://xbsoftware.com/ai-assisted-software-development/" rel="noopener noreferrer"&gt;AI-assisted development&lt;/a&gt; is learning how to integrate generated code into a system that you fully understand, can debug, and evolve over time. It is knowing when to accept a suggestion and when to rewrite it.&lt;/p&gt;

&lt;p&gt;Some teams are figuring this out. They use AI for rapid prototyping, like the Lovable-generated scheduler that we built, which validated the concept before replacing the AI-generated components with a production-ready solution. The prototype was useful for testing and validation. But the production system required real engineering: understanding the domain, handling edge cases, and ensuring the component could actually survive real-world use.&lt;/p&gt;

&lt;p&gt;AI changes how fast we build software. But it has not changed what it means to be responsible for it. And in production, responsibility is still the hardest part.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
