Azure Resource Manager (ARM) templates are often looked upon as some sort of magic voodoo. People who use them every day often have a limited understanding of them and this leads to doing things the hard way. The users aren’t always to blame, the documentation is often terse (at best) and features change quickly. In particular, mid-2017 saw a few critical features appear that really improve their usability in a few cases. I’m not going to try to completely solve the knowledge gap or try to create a comprehensive set of guidelines. Instead, I’ll point you to a few things that have been useful for me or helped me get to that “click” moment where they stopped looking like a blob of json and started looking like a language.