In developing Puppet code, as with most things, the ability to iterate rapidly is essential. The ability to quickly experiment enables one to not only find the best solution, but challenge assumptions, and explore new options. Experimentation comes at a cost though, and we typically measure that in time. To make matters worse, we typically only have so much time to develop code or provide our solution before we must move on. Thus, experimentation begins to fall to the wayside as it's cost in time exceeds what we have alloted. As a result, while we may arrive a solution, the benefit of testing multiple hypothesis and the intuition for future solutions it creates is lost. Ultimately, we want to reduce the cost of experiments by removing the perceived cost in time.
The cost of an experiment is not just in the time it takes to create and run the test, but the potential cost of failing and needing to reset for the next attempt. Ideally, we want to cut the cost of time spent for the setup of