I gave a talk at PuppetConf last week entitled “Infrastructure as Software”. The gist of it is that Puppet is a programming language, and in order to grow our “Infrastructure as Code” beyond a few thousand lines we need to adopt techniques from software development. I used PuppetAgain as an example throughout (both of good practices and areas for improvement).
The slides are hosted here. As usual with my talks, the slides themselves may not be very useful to you, as they serve only as touchstones for the interesting stuff that I say. Puppet Labs will have a full recording of the presentation up soon; see the notification signup for now.