I agree to a point. I've been using terraform for a couple of months now and I agree - once I'm comfortable with which command and what parameters I need it is pretty straight forward. I just find the ref page and walk through the parameters. Where I think the docs fail is where you're not really tuned into what you're doing yet. You're new to terraform and new to AWS. Proprietary tech (I've been working with Oracle tech for many years) tends to have worked examples that you run with, hack around, break and put back together. With most open source such as Terraform, you know what the parameters are but what some of them relate to - you're really on your own.
Take a simple case of this example.
The metric transformation has a name. It seemed logical to me that this was an attribute of the log metric filter. So, when referencing the metric name for the alarm, the documentation states "The name for the alarm's associated metric." Not very helpful but fine - that would be aws_cloudwatch_log_metric_filter.xxx_ui_startup.startup_counter. Wrong. Ok but where would I look to find my mistake. Worse, AWS accepts anything without validation so it goes in just fine. A worked example would have shown me immediately where my understanding of what the transformation was wrong and that it's actually a unique entity within the namespace in it's own right. Instead, I had to create manually and compare aspects until it clicked. I accept some of this stuff is obvious to many but when a small misunderstanding creeps in, there is really nowhere to turn.
That said, I also accept that open source projects don't have teams of paid technical writers putting the docs and worked examples together and developers (me included) can often assume a much greater level of understanding on the part of the reader than is truly there.
Sometimes we just need a nudge in the right direction, such as the one you kindly gave me.
cheers
JB