Your Terraform Is Software. Treat It Like Software.
Infrastructure as Code was a genuine revolution. The ability to version, review, and reproduce infrastructure changed what was possible for small teams. But somewhere along the way, a lot of teams treated IaC as a shortcut rather than a discipline.
The most common failure mode: no automated tests. Teams write Terraform or Pulumi, get it working, check it in, and never test it. Modules get copied between repos without review. Configuration drift is addressed with manual console edits that never make it back to source. Then staging validation gets skipped entirely.
Your application code requires a PR review, but your infrastructure code just gets merged? You’ve identified your next production incident.
IaC is software. It has the same failure modes as application code: logic errors, edge cases, untested assumptions, and the particular cruelty of bugs that only appear under load or in specific environments. It deserves the same engineering rigor: automated tests using tools like Terratest or Checkov, mandatory code review for every change, consistent module patterns, and a staging environment where infra changes are validated before they touch production.
The teams that treat infrastructure with this discipline ship with confidence. The ones that don’t spend their Friday nights explaining to stakeholders why a variable change in a Terraform module took down three services.
—shon