Understanding the fundamental differences between declarative and imperative infrastructure as code approaches and when to use each.