I have been working with CFEngine for about half a year no in my new role. CFEngine is known to have a steep learning curve. I can’t disagree with that sentiment, I can however say that it is intuitive.
This tip though covers compound conditionals and classes. CFEngine uses classes to define a desired end state.
In cfengine this can difficult because the syntax is very restrictive.