I've struggled with this as well. I actually find the YAML harder to write than a full programming language would be. For example, conditional logic such as "Turn on this light when the sun goes down only if this person is home" get complicated quickly. The breadth of options and plugins available is impressive but the documentation presents a lot of small snippets and not many explanations of how to design a coherent system.
I have a feeling that my next step will be reading the source code to get a better sense of how the YAML is translated into the internal state machine, but an official "beginners guide" would go a long way to making this not necessary.