I've recently switched roles, and have gone from sharing a pretty large terraform deployment on AWS/GCP to managing infrastructure written with cloudformation and troposphere.
(Trophosphere is a python library that generates cloudformation templates. Nice to have a real programming language, but still pretty constrained by the fact that the output is "just" cloudformation.)
Of the two I have had less pain with terraform, but both have caused their days of pain in different ways.
Writing a for loop to provision multiple machines just feels incredibly natural.
however, some parts still use terraform underneath. if stuff doesnt work - i sometimes find myself on terraform docs/code.
but all in all a good trade off for me compared to pure terraform.