Average teams point and click for deployments. They generally end up with an unmanageable web of resources on AWS without any capability to reproduce their infrastructure.
Good teams write terraform (or cloudformation). This keeps the infrastructure reproducible, but reusability and testability are very limited between teams which differ in deployment patterns. Also, it involves writing heaps of tf or yaml files which is not fun at all. It's very difficult to create enterprise-level reusable patterns for different teams.
Pro teams write their infrastructure in real code, using the language of their choice. This creates an opportunity for publishing reusable infrastructure libraries with opinionated deployment units. These libraries can be consumed by different projects to build their infrastructure like lego. It is testable, reusable and a modern way of deploying your infrastructure.
