The Old Way
Imagine you're a surgeon, but instead of practicing on a simulator first, you practice directly on the patient — with no undo button. That's what traditional network engineering felt like. To change a firewall rule or add a route, an engineer would:
- Log into a router manually via SSH.
- Type commands directly into the live device.
- Press Enter.
- Wait to see if the phone rings with angry users.
There was no way to "compile" a network configuration to check for errors before applying it. A typo in an Access Control List (ACL) — a list of rules that controls which traffic is allowed or denied — could lock you out of the device entirely or take down the entire data center. Engineers called this the "pray and deploy" model, and it was the industry standard for decades.
The consequences were severe. A misplaced deny rule could silently drop all traffic to a critical service. A missing no shutdown command could leave an interface administratively down. And because changes were made interactively, there was often no reliable record of what was changed, when, or by whom. Rollback meant manually retyping the old commands — if you remembered what they were.
The deeper problem is that complexity compounds. A single router might have hundreds of ACL entries, route maps, and policy statements. A data center has hundreds of routers. The probability that a human makes zero mistakes across thousands of interactive commands approaches zero. The "pray and deploy" era wasn't a failure of individual engineers — it was a failure of process.