There are plenty of well written, documented and supported Chef recipes for dealing with all sorts of server automation, like users management, database management, Solr configuration, full application stack configuration (Sensu, Gitorious, Redmine), SSH, and many more commonly used software. All of them are open-source and have plenty of customization options. Chef itself has good documentation.
Dependencies management is very easy and robust by using librarian-chef.
Chef's verbose mode is very helpful when debugging what a recipe is doing and there's also a dry runner mode which won't actually run anything in the server, which is also helpful in some cases.
Unlike Puppet there's no domain specific language to learn, which is a big advantage for me. You only have to learn a bit of Ruby, which is an easy language to learn and use and you are able to perform any logic pretty easily when compared with Puppet which is quite limiting when you need some custom logic which is not handled by their DSL and you are forced to extend their DSL.
Chef can be configured through an specialized server that will orchestrate all managed servers or they can be used without setting up any Chef server, through chef-solo. Chef-solo can be integrated with Vagrant as well to help setting up a development environment very quickly. Review collected by and hosted on G2.com.