AI-Assisted Development for Industrial Software

MES AI was built as an experiment: could a modern AI coding agent meaningfully accelerate the delivery of a non-trivial industrial software platform? Not a conceptual project, but a real multi-tier system with a domain model, a versioned REST API, multiple frontend applications, a plugin framework, database migrations, and end-to-end tests. The answer is yes — with important caveats about where AI helps most and where human judgment remains essential.

What AI-Assisted Development Looks Like in Practice

The process was not "describe the system and receive working code." It was closer to working with a domain knowledgeable colleague who can draft large amounts of consistent, idiomatic code quickly but needs careful review and direction on design decisions.

Concretely, the workflow looked like this:

Where AI Added the Most Value

Boilerplate at scale

A multi-domain MES has a lot of structurally similar code: service classes, route modules, Pydantic schemas, React pages, TanStack Query hooks, Zod validators. An experienced developer knows how each of these should look; writing twenty of them correctly and consistently is tedious. AI handles this well when given clear patterns and a good example to follow.

Test coverage breadth

The MES AI server has about 1,900 unit tests and 90 Playwright UI tests. Generating that breadth of coverage by hand in parallel with feature development would have been impractical. AI-generated tests required review and occasional correction, but they consistently covered the obvious cases and many of the edge cases. They can be run after every significant Git submission as part of a Continuous Integration workflow.

Cross-cutting consistency

Things like error response shapes, authentication header propagation, and database session management need to be consistent across dozens of route handlers. AI, when shown the correct pattern once, applies it consistently — a significant advantage over a team of humans where conventions drift over time.

Where Human Judgment Remained Essential

Domain model decisions

Deciding that a WIP lot tracks genealogy at the unit level, that a dispatch queue uses a pluggable priority strategy, or that ERP integration belongs in a plugin rather than the core — these are judgment calls that depend on deep understanding of manufacturing operations. AI can reason about tradeoffs when given context, but it cannot substitute for domain expertise.

Debugging non-obvious failures

When a bug stems from an architectural mismatch rather than an implementation error, AI is less reliable. It tends to try local fixes when the real issue requires rethinking a design. Recognizing the difference and steering toward the right fix is a human task.

Security and data integrity

Authentication flows, authorization checks, and database transaction boundaries were reviewed carefully by a human on every iteration. These are areas where an incorrect AI suggestion can create subtle vulnerabilities that pass all tests.

What This Means for Industrial Software Teams

The practical takeaway is not that AI replaces engineers on industrial software projects. It is that a business analyst with a skilled engineer with good AI tooling can cover significantly more ground in a given timeframe than without it — provided the engineer maintains design authority and reviews generated code critically. MES AI would have taken several times longer to build without AI assistance.

For teams evaluating whether to use AI on MES or SCADA customization projects, the question is not whether AI can do it, but whether your team has the domain knowledge and engineering discipline to direct it effectively. If the answer is yes, the productivity gain is real.