Every so often, i giggle a little when folks start singing to me the praises of Ruby. i don't code in it, mind you, but it's the same for folks singing the praises of python, perl, php, groovy, java or countless dozens of other like languages. There are a number of various features that are generally touted by the newly evangelized, but ultimately there's one aspect that is greeted like the first rays of dawn in Barrow Alaska is the fact that somebody else wrote a helluva lot of stuff already.
They wax poetic about the fact that there's a rich set of libraries like CPAN or PyPI, Pear or the various other centralized libraries that can be installed easily. In my not so humble opinion, that alone is what makes a particular programming language successful since you don't have to waste time trying to reinvent someone else's wheel.
Oddly, however, there's a fair number of folks that seem to be library adverse.
Perhaps i'm just a bit sensitive to it considering it's something i have to work with daily, but it always puzzles me when folks ask for help to resolve a nagging issue that's already been solved dozens of times by various libraries pointed to in our own documentation. It's a bit like folks asking Betty Crocker for help assembling their oven. Sure, we can help you, but why in the world are you wasting your time doing that? It makes me wonder if they're calculating their own logarithms and parsing XML by hand as well.
It's not just things like OAuth either, it's a good many other services like Twitter APIs, Casandra interfaces, heck i know one guy that repeatedly hand rolls IMAP interfaces, because, well, i'm not really sure since he's not really doing much more than using the default protocol. Writing a library is a pain in the butt. Maintaining a library is why Git's Project Forking ability is a god-send. If someone else is young and foolish enough to scratch build a library for me, i'm more than happy to use it, note bugs and extended features, and contribute them back. i've got other problems to deal with.
Folks, this isn't BASIC 101 anymore. You're allowed to use your neighbors code if it gets the project done. In fact, consider me your professor, and that i'm quite serious that i'll be taking 60% off your grade for recreating well established library code. Go, use them. Leave the pain for the masochists.
-
The biggest barrier I've found to using libraries is "which #@$ one am I supposed to use?" In my experience, researching the set of available libraries thoroughly, and then deciding on which fits not only my needs, but the needs of the rest of the team, and finding out which has license terms we can live with ends up taking longer than rolling a solution from scratch. I don't do that, because if I roll my own, I'll have to maintain it, but I know a lot of guys who'll just charge ahead and write their own, because they'd rather program than research.
