Power Tools

10 Oct 2019

Power Drill

I often like to think of coding as building a house. It’s important to make sure that the foundation of the house is good, the structure is able to support the rest of the house, and the entire house comes out asthetically pleasing so that other people will enjoy looking at it. In software engineering, you need to make sure that the language you are using is best suited for the task at hand, that you have planned out the structure of the code and what convention you plan on following (Object Oriented, Procedural, Functional, and Imperative), and the code is crafted in such a way that other people will be able to easily understand the logic behind your program. However, like building a house, crafting a project entirely with the basic tool kit that you are given in the beginning is extremely difficult. One can’t be expected to build a house using only wood, a hammer, and nails.

It’s important to note that this can be done. You can build a house using those three tools, and one can build an entire project using only the most basic programming languages. However, this contradicts one of the most common phrases spouted in the computer science field, “Never do the same thing twice.” We build programs so that we won’t have to repeatedly do the same calculations over and over again or redo the same problem over and over with minor variations. So if someone else has already accomplished a certain task, why should we have to do the same thing again? If there’s an easier way to do something, we should choose to do the easier thing, especially if it’s going to be just as efficient (if not more) as the implementation you were originally planning on performing. Why would you build a house with such basic tools when you have power drills, nail guns, and even cranes at your disposale.

These more powerful libraries are extremely good at saving time and allows newcomers to build more complex and intricate programs, despite not having as much experience. One excellent example is the Semantic UI framework. I have personally always despised HTML and CSS. The main objective with these langauges is to create a friendly experience for the user. This was something that I had difficulty getting a strong grap of. A major complaint that I found myself saying was how many things that HTML does automatically for you. HTML assumes many of the needs that you have and adjusts accordingly, even if that isn’t what you wanted in the first place. Sometimes, I would want an object to not have margins, but instead of leaving the object’s margin variable as blank, I have to manually disable it since margins are automatically enabled on objects. This is one of the more mundane examples, but there were also many cases where I wanted to remove a specific aspect about a certain object, but I couldn’t get rid of it, and I never truly discovered why my attempts at removing that aspect of the object failed.

However, with Semantic UI, these cases become much more rare. Semantic UI takes care of far more things for me than HTML and CSS, which initially sounds like the opposite of what I would want. However, Semantic UI has so many more options, making it far easier to choose options that suites my personal needs. If I want to create a menu without a border, I can ask for a borderless menu, or create a secondary menu. Or I could create a secondary pointing menu. Or any other combination of menus and lists that I could want. This means that the problems I face become a lot more interesting, such as creating a dropdown menu where all of the elements are horizontal, rather than attempting to be rid of a mildly annoying margin that doesn’t seem to go away.

All of those thoughts asside, one of the biggest advantages of UI Frameworks is making the projects that we create easier to develop. Programming takes up a lot of time and energy. Each language has its own nuiances and quirks that makes them more advantageous for some people to use rather than others. While it would be nice to understand each language that one uses fundamentally, it can be nearly impossible to do for even a single language. Therefore, UI Frameworks makes the work that we do far simpler, and allows us to create higher quality programs. They allow us to focus more on larger picture aspects, rather than focusing solely on implementing a feature.