I prefer to install software from native packages meant for my distribution, from the vendor or project that publishes the distro, as much as possible. This has a number of advantages, not the least of which is that I don't have to recompile the software myself whenever there's a security update or bug fix for the software.
However, there are a lot of instances where this just isn't possible. Maybe the software isn't available for the distro that I'm using, or I need to use a newer version that's not available from the vendor or project. In those cases, I still like to build a native package so that it's easier to manage than just installing directly from source code.
For those cases, I use CheckInstall to simplify creating a package. CheckInstall lets me create an RPM, Debian package, or Slackware package almost as easily as compiling software from source. Instead of running
./configure; make; make install I just run
./configure; make; checkinstall.
I've been using CheckInstall for several years, and I've never run into a problem with any of the packages it creates. It's also handy for rolling packages for limited distribution -- for example, when I want to install a piece of software on three or four machines without needing to compile it separately on each system.