There are actually a lot of mixed feelings about Bower, so you aren’t alone in thinking this. The biggest thing to remember is that Bower is specifically designed for managing front-end resources, eg JQuery, Twitter Bootstrap.
NPM is primarily targeted at more backend oriented solutions, and therefore comes with a bit more complexity and isn’t particularly well suited for front end dependencies. NPM is fine for build tools or server components, but it’s a bit overkill when I just want to add JQuery to my pages.
What you’ll find in a lot of projects is the addition of
bower install as a post install script for NPM. You just run
npm install, it installs all of your build tools/server dependencies AND a local copy of Bower, and then it runs
bower install for you.
It just boils down to separation of concerns.