Terraform hits hard when your infrastructure grows faster than your control over it. You run terraform apply, and the plan looks fine—until the change breaks something you didn’t expect. This is the core frustration: Terraform’s strength in managing large, complex clouds also exposes sharp edges when your state, modules, and workflows drift out of sync.
The first pain point is state management. Remote state is supposed to solve collaboration issues, but locking, version conflicts, and backups can slow teams down or block deployments outright. Every mismatch between real resources and recorded state becomes a delay, a risk, and a source of hidden cost.
The second is module complexity. Terraform encourages reusable modules, but deep dependency chains and over-abstracted components make debugging painful. Changing one variable in a shared module can trigger unrelated updates in production. Simple fixes can trigger large-scale plans, making rollbacks harder.