In peer reviews, for example, it was standard to bring output from both the failing case and the working case as printed handouts. Those were easy to generate; just spin up two machines and fix one while you leave the other broken. They can share resources if you like so you don't have recreate everything. That is horribly messy today. Testing is so hard most people don't do it.
On firewalls, PF has a syntax simpler than most text adventure games.
Every time I get into the GNU world, well, I get better HW support sometimes, among a slight bit of performance, but, FFS, configuring a Linux firewall gives me nightmares everyday. Just compare NAT on Linux vs OpenBSD. Or TUN/TAP devices, where in OpenBSD it's just a matter of a SINGLE line at pf.conf and two hostname.if files to define the bridge and the tap device with a subnet. Done. Oh, and sysctl to set IP forwarding, but that was the easiest task on any OS.
Try that with Kubernetes!