We use both CiviCRM and Drupal. I am a big supporter of open source because the work that we do for our organization can be used and leveraged by other organizations, and vice versa. We shifted over from Nation Builder to CiviCRM last year. Here's the link to my blog post about it, and also a link to the newly released video about how nonprotits are using CiviCRM.
Instead of using many different softwares to manage events, memberships, fundraising, and mass emails, we can do this all in CiviCRM, and use it as our database of record. It has not been an easy process, but it has been well worth it. You just have to be flexible, and creative when it comes to solving problems.
The other important aspect is collaboration between developers and nonprofit staff. The nonprofit staff can articulate the problem that needs to be solved, what it needs to look like in the front end, and the developer can help to build this out.
Happy to answer any questions that come up!