I love reusable solutions. Especially when it comes to web development, solutions that you can abstract well enough that they become multi-purpose save a lot of time, as well as money. But, sometimes, they just don’t cut it.
Lately, I’ve been doing a lot of custom development, and most of it actually replicates functionality that’s already out there. While I love and appreciate all the work that has gone into things like sIFR, SlideShowPro, and CSS frameworks like 960.gs, the YUI Library, or BluePrint, they’re sometimes too much of a sledgehammer where a pocket knife would be best.
Take sIFR for instance. If you’ve ever looked under the hood, it’s extremely robust. Mark Wubben has baked in a lot of features, most of which users a lot of its users don’t even know about. It does a lot of the legwork for you; it can fit in the most complex of layouts, adjust size and leading based on the developer’s input, allow you to modify content before Flash renders it, and a host of other things.
Most times that I need a solution like sIFR, I have a very specific need. I usually know what color it needs to be. I usually know the size of the text. I don't need sIFR to figure that stuff out for me. Because of this, I can hardcode those values into a Flash file. I usually end up building a custom file that uses the functionality I need—essentially just accepting a text value from the underlying HTML—and discarding the features I don’t.
Another recent example for me applies to creating HTML prototypes. Using a term I adopted from Jeremy, at work I created a set of clickable wireframes for a current client. While CSS frameworks run aplenty, I really need a wireframe framework, one that comes complete with reusable styles for content types like comments, horizontal and vertical navigation sets, search boxes, and robust lists like search results, just to name a few. Instead of starting with an existing library, I decided to just create one from scratch. For me, the time it took to build this from the ground up easily outweighed and amount of code I wouldn’t actually use in utilizing something that already exists. (Check this space soon, as I might actually release that HTML wireframe library.)
I absolutely see the danger in customization. Most times, it’s not very efficient and you often end up rebuilding a lot of things that already exist. But don’t overlook the value in custom solutions. Sometimes, a targeted and specific approach really is the best one.