
(my imitation of a website I made using Bootstrap, a popular framework for web app development)
Arguably the single most widely used and the single most commonly worked on piece of software today is the humble web application. When developing web apps, some of the biggest and most pervasive challenges a programmer may face is figuring out how to style and lay out each element on the web page within HTML, CSS, and JS. Fortunately, many different “frameworks” have been developed specifically to make their work easier. Frameworks are essentially pre-packaged and customizable styling. Using frameworks, a developer would be able to put down entire near fully made web app elements with a single line of code, whereas trying to do the same without the framework would’ve taken an entire file of CSS style rules.
In some of my previous projects, I have used a framework known as Bootstrap, and I have had both good and bad experiences with it. On the good side, I really enjoy how simple it makes creating certain web elements. If I wanted to make a menu for a website, for example, I would literally just type down a word or two in a div and almost by magic the menu is (near) fully made. On the bad side however, I really did not enjoy having to deal with unexpected behaviors and the sort of “black-box” nature of this framework.
Using raw HTML and CSS would be more tedious, sure, but I also find it to be a lot more predictable and controllable in outcome. To me using just HTML and CSS has rather few and simple rules, which can then be infinitely derived from to achieve different levels of design complexity. A framework like Bootstrap minimizes that complexity by alot, but it also has more rules to memorize or look up whenever I hit a problem. This frequently leads to unexpected behavior, from my experience. Perhaps I just do not yet have enough practice in using this framework, and it would become much more clear to me with time.
Developing software can be an incredibly tedious task. Thus, pre-packaged frameworks were developed to make the lives of programmers easier. Although I have only covered an example of a web app framework, no doubt there are many other frameworks out there for things beyond just developing web apps. Learning how to effectively use one can be tough, however, as you would need to understand the underlying mechanisms behind the framework (e.g. raw code) and how the framework itself works. Essentially a learning curve on top of another learning curve.
It is however extremely helpful, in some cases even necessary, to be proficient in one or more such frameworks, as they allow the developer to be far more productive and efficient. An incredibly potent new tool that we have seen make rounds in recent times is AI, being able to create entire websites from scratch with just a short prompt. Such tools, like frameworks, would likely become very necessary skills to have in the future, as they can exponentially boost productivity, more so than any other tool or framework before it.