Recently in my software engineering class, we have been using the Bootstrap 5 framework, which works with html and CSS to make creating well-styled webpages easier, at least in theory. In many cases, using Bootstrap 5 has enabled me to create pages that are substantially better than what I am able to make by myself using just html and CSS. At the same time, I have also had to spend long periods just trying to figure out why some Bootstrap element does not work the way I want to, and why my custom styling is being overridden. At least at my current level of understanding, Bootstrap seems to be something of a double-edged sword.
One of the best things about Bootstrap is its ability to very quickly throw together something that looks decent, without needing to spend hours just writing a CSS file. Simply adding a container around something immediately makes it look more presentable. I do not have to add margins and padding to everything individually, pick a font, change colors, or add any of the finer details. It is an extremely powerful tool for turning out decent looking work quickly. Bootstrap also contains many useful elements such as drop-down buttons, which I am currently unable to make by myself, so it greatly improves the overall scope of what I am able to make. In this sense, Bootstrap is a great tool.
The biggest drawback I have found so far with Bootstrap is simply its complexity. For practice, I have spent some of my time recreating existing websites using the Bootstrap framework, and this has shown me that in order to get things exactly the way I want, I often need to do a lot of research and ask a lot of questions, even to solve very simple problems. Sometimes the best way to handle a problem is with a class which I did not know existed. This is not a surprise, of course, but the problem is that in order to fully understand the framework, I would need to read every word of the documentation, which is extremely long and not ordered by importance. Additionally, since a lot of the implementation is obfuscated, it is not always clear why pieces of code do not work, and I am forced to try several methods of fixing a problem until one works, usually without any clear indication of why it worked. Almost all of my time spent with Bootstrap so far has been trying to figure out why a class is not working in the way that I would have thought that it did, or why one class overrides another, etc.
With HTML and CSS, the option always exists to simply make everything myself so that I always understand the implementation. In other languages, this is not necessarily the case. Much of my coding experience has been in Python, where there are a wide range of frameworks available, but for which it is extremely impractical to invent my own. Similarly, for C and C++, it is extremely impractical to design one’s own UI elements, or UI framework. With this frame of reference in mind, frameworks are inarguably worth the effort to learn, since there is no practical way to get by without them.
In summary, frameworks like Bootstrap allow their users to greatly amplify their ability to make user interfaces, and in the case of languages like C, are almost entirely necessary to make a user interface at all. While creating a UI with a framework is not always extremely easy, it is an extremely good idea to be familiar with a framework in your chosen programming language.
No AI was used in writing this essay