Note: this is the original article I wrote for .netmag. If I asked the editors to take it down it is because they decided - on their own - to change the title and add an introductory paragraph that changed the tone of the whole piece, making it much more controversial than I intended it to be.
"Lib" and learn?
Below is a tweet I posted a month ago. It's mostly a knee jerk reaction to a couple of experiences I had just had.
I think bootstrap/boilerplate/etc hurt WebDevs out there. I interviewed 2 people with a few years of experience & all they know is cut/paste— Thierry (@thierrykoblentz) October 13, 2012
To start off, I'll say this article is not about differentiating libraries or their users. Even though discussing the difference between libs or between web authors are legitimate debates, they do not relate to my original tweet, which only boils down to what using libraries entail for many authors.
Is ignorance bliss?
By removing barriers, libraries often lead authors to ignore problems. Some they disregard, others they are oblivious to.
In the "disregard" category
Espousing a library often means:
- dropping IE 6, 7 (, 8?) support without any thought for a fallback.
- little consideration for page weight.
- no discrimination for what is included.
In the "oblivious" category
Libraries may shield authors from some important stuff:
- the way browser quirks are ironed out.
- the underlying blocks (technical choices) upon which the library is built.
Is it bad?
For many, using a library is a means of getting away with the learning curve; to avoid dealing with what Douglas Crockford calls "The most hostile software development environment imaginable".
I don't see anything wrong with that approach though. After all, building web sites should not be the privilege of "people who know better". But we cannot argue the fact that blindly relying on tools to erase obstacles can easily make people lazy or uneducated.
Because libs facilitate development, authors have less to learn in order to make things work. There is no need to look for answers, no need to figure things out. But for every challenge eliminated, there is a missing opportunity to learn something new.
Should we learn the hard way?
I'm not saying people should re-invent the wheel in order to learn their craft. What I'm saying is that designers and developers should be curious about how things work under the hood. Most libs offer a tremendous wealth of knowledge for those willing to dig around. These projects have great contributors who comment their findings and decisions. Learning about the "how and why" through comments is not as enlighting as experiencing an issue and finding a fix on your own, but it saves you the time and pain.
On their own, bootstrap/boilerplate/etc are invaluable tools. Their negative aspect mostly lies in the shift the plethora of libraries and frameworks has created. Today, people spend more time learning a tool rather than a technology. We now have SASS ninjas and WordPress gurus. But as far as I know, these are not front-end skills, and being a Drupal wizard will not make you a great FEE.
Learning from a library should be more important than learning the library itself.