
From the Factory Floor to the Cloud: What Industrial Systems Taught Me About Software
By Tom Lang on November 19, 2025
I'm Tom Lang — I've built and scaled engineering organizations for three decades, from startups to 250-plus engineers and through multiple acquisitions, and I work as a fractional and interim CTO for growth-stage companies, with particular depth in regulated and integration-heavy environments.
Almost every technology leader's origin story starts with a computer science degree and a web app. Mine started on a factory floor. I came out of Cornell with an electrical engineering degree and spent my first decade at Procter & Gamble — the paper division in Mehoopany, Pennsylvania, and the soap division in Baltimore — running data acquisition, controls, and information systems on the plant floor.
The factory floor in the 1990s was the ultimate crucible for engineering discipline. Long before the cloud existed, industrial automation forced you to solve distributed-systems problems with programmable logic controllers, serial cables, and copper wire. We were building SCADA-class monitoring and control before it was a product you could buy — instrumenting machines with Allen-Bradley PLCs and Honeywell controllers wired to DEC MicroVAX and HP systems, and writing the software that tied it all together. When you learn to write software in that environment, it fundamentally alters your engineering DNA. Here's how the factory floor still dictates exactly how I build cloud architectures today.
The core lesson: physical accountability
Modern software engineering has been deeply insulated by the luxury of the virtual world. If a web developer pushes a bad build, they get a 500-error page, they run git revert, and the problem disappears in sixty seconds. On a factory floor, "move fast and break things" is a recipe for a catastrophic industrial accident.
When your code controls a physical machine, a bug doesn't drop a packet — it swings a 500-pound robotic arm through a safety barrier, or it boils a vat dry. Failure is measured in ruined product, physical danger, and downtime that costs $10,000 a minute. That kind of accountability breeds a deep, almost militant paranoia about reliability. You do not assume the happy path will happen. You engineer entirely around what happens when the system physically breaks — because it will, and someone is standing next to it when it does.
Three lessons that transferred straight to the cloud
Three specific principles came directly off the plant floor and into how I build modern SaaS.
You can't SSH into a boiler — observability first. Long before "observability" was a buzzword, we had telemetry, because we had no choice. A sealed boiler is a black box; if a sensor broke, the system would lie to you. So you instrumented everything — temperatures, valve states, vibration frequencies — and built dashboards just to know what was happening inside. Today I mandate high-cardinality tracing for exactly the same reason: a microservice running in AWS is just as opaque as a sealed boiler. If you can't see the state, you can't fix it. (It's the foundation of reliability without an SRE team.)
You can't git revert physics — validate before you commit. In SaaS, you can roll back a database transaction. On a factory floor, if your code accidentally pumps 500 gallons of Chemical A into 500 gallons of Chemical B, no rollback command un-mixes the chemicals. You learn, fast, to aggressively validate every single input before you commit to a state change. I carry that straight into software: never trust external inputs, and validate all data at the boundaries before it ever touches your core business logic. The mixed chemicals taught me that some mistakes don't have an undo button.
The fail-safe default — graceful degradation. If a master server lost its connection to a PLC on the floor, the PLC didn't crash. It was programmed to fail to a known safe state — valves closed, heaters off, motors stopped. In the cloud we call this graceful degradation, and most teams bolt it on as an afterthought. I design it in from the start. If your recommendation engine times out, it must not take down the checkout page; it should fail safely and let the customer complete the purchase. Every dependency should know how to fail without taking the business down with it.
The scar: the day my race condition became a baseball bat
In the late '90s I was working on the control system for a massive automated sorting warehouse — 250,000 square feet — pushing code that controlled the conveyor diverters, the heavy steel arms that kick boxes down different shipping lanes.
We had a tiny race condition in the logic. In a web app, a race condition means a user sees a stale cache for a moment. On that warehouse floor, it meant the diverter arm fired exactly half a second too late. Instead of gently guiding the boxes, it became a baseball bat swinging at 30 miles an hour — physically smashing 50-pound boxes of expensive retail product into cardboard shrapnel and jamming the entire main artery of the facility.
I still remember standing on the catwalk, listening to the sound of steel grinding against jammed product, watching the red emergency lights spin while fifty warehouse workers stood idle — waiting for me to fix my code. That is a moment you never forget. It permanently cured me of any desire to deploy unvetted code just to hit an arbitrary deadline. Half a second of sloppiness, and I could hear the cost.
Why this matters for your business
So why should a SaaS founder care that their fractional CTO used to program PLCs?
Because you want an engineering leader who treats your company's data, revenue, and uptime as if they were physical, irreplaceable assets — because to me, they are. A CTO raised purely in the era of cheap cloud compute will often build brittle systems, quietly assuming they can just spin up more servers or roll back when things break. They chase shiny new frameworks that look great on a résumé and fall over under real load.
A CTO who learned on the factory floor builds for survivability. I design architectures with physical-style interlocks, circuit breakers, and ruthless fail-safes. I don't build software to look elegant on a whiteboard; I build industrial-grade software designed to survive contact with the real world — so your business never stops running.
That's the whole difference, and it started with a steel arm swinging at 30 miles an hour. If you want systems built by someone who's felt the cost of a bug in the physical world, Book a call — and we'll build yours to survive.
← Back to Our Insights