A new service requires database, queue, secrets, alerts, IAM roles, monitoring. Without modules, every team copies a previous service's Terraform and modifies. With well-designed modules, "new service" is 10 lines of HCL. Here is the module design that scales, the testing approach, and the four traps.
Local Terraform state on a laptop is fine until somebody else pushes infra changes too. Then you have a corrupted state file and a long debugging session. Here is the remote-state-with-locking setup, the workspaces vs directories debate, and the four habits that keep IaC sane.