Recently my parents were in the market for a new home. They looked at a lot of houses.
One home featured carpeting throughout. They would have preferred hardwood floors. Another house had a pool they didn’t need. Another home was perfect in many ways, but it looked very much like all the other houses in the area. It seemed that every home Mom and Dad looked at would have required extensive modifications in order to meet their needs and expectations.
Finally, my parents reasoned that the only way they would be able to check all the boxes on their wish list would be to build from the ground up. So, they chose land, stone, fixtures, cabinets, countertops, furniture, etc. and built a house to their specifications.
When I construct a Website with Bootstrap, I understand the dilemma my parents faced before they opted to build from scratch. Creating something from nothing is laborious. It requires thought, time and effort. Bootstrap can certainly ease these pain points, but much like purchasing an existing home, compromises must be made. So, when considering a development path (Bootstrap vs custom), the question becomes how much am I willing to compromise?
Why Use Bootstrap?
Bootstrap allows me to spin up a Website very quickly and easily. In fact, Bootstrap is a fantastic resource to have at my disposal for rapid prototyping or building out a site when pressed for time.
Additionally, Bootstrap has a large user-base and plenty of documentation. This facilitates the transfer of Bootstrap project off to another developer with little to no effort needed in explaining classes, components, etc. These features, coupled with proven reliability, makes Bootstrap an attractive development option.
No, Seriously. Why Use Bootstrap?
There are many compelling arguments to use Bootstrap. However, I’ve found that Bootstrap builds require customizations that lead me to explore alternative tools—tools that more closely align with my ideal build.
For example, instead of the grid system included with Bootstrap, I’d prefer to implement something more flexible, maintainable and semantic, such as Susy. But if I’m going to replace the grid, a major part of the Bootstrap ecosystem, why use Bootstrap in the first place?
Should I develop with Bootstrap so I can access built-in components such as carousels and lightboxes? In reality, the plugins included with Bootstrap are rarely the best tools available for the job. I’ve often located components outside the package that are better candidates to help me achieve desired functionality.
Styles and Files
And what about styling? There’s no shortage of Websites out there that have a “Bootstrapiness” about them because the developer left the framework’s default styles intact. Customization is encouraged and required here unless you want to look like so many other sites on the Interwebs. However, it can be cumbersome to navigate and override Bootstrap styles.
And then there’s cost. Just as you’ll spend more money for a house featuring all the latest bells and whistles, so goes the cost associated with a framework. In framework terms, cost is associated with file size and its impact on performance. Many developers pull the entire Bootstrap package into their build, but only actually use select pieces of it.
The unused extras result in a great deal of code the user is forced to download unnecessarily. Granted, this is a cost largely affected by the developer and is not the fault of the framework, but even custom Bootstrap downloads tend to carry a lot of kilobytes.
Interestingly enough, all the Less file and jQuery plugin select boxes on Bootstrap’s customization page are checked by default (see below). The assumption here is that you’ll want everything Bootstrap has to offer, but how many developers actually use all or even most of these features? Perhaps the checkboxes should be unselected by default, in a sense forcing developers into becoming judicious stewards of a performance budget. Or at least get them thinking about it.
Is all of this really needed in your build?
I’m not arguing that there is no place in Web development for Bootstrap. Bootstrap is a great tool to have at your disposal for quick and easy prototyping and development.
The customization process when using Bootstrap (as well as other large frameworks such as Foundation), however, is much like what my parents would have experienced had they bought an existing home. It is one of construction by subtraction. You don’t like the pool? Fill it in. You want hardwood floors? Rip up the carpeting. The house doesn’t look unique? Install a stone veneer.
That kind of development seems counter-productive. Rather than modifying something less than ideal to suit your needs, better to build an ideal product from the ground up—without a pool, with hardwood floors and from stone.