To Frame or not to Frame

21 Feb 2019



      After many years of coding my web design styles exclusively from scratch in CSS, switching to a framework has been a frustrating experience. I would be remiss not to reflect on the swelling pride from accomplishment that fill when reflecting on a design I have created knowing I began with a blank screen and carefully picked every character of code. For years I waded through the weeds of CSS, unpacking the nuances, and now I find myself faced with a library intended to simplify and speed up the UI implementation process. I should be soaring high above the details but instead, I am trudging through waist deep mud that tries to suck me in with every exhausting step I take. I spent 20, painfully frustrating minutes today attempting to center an element on the screen with Semantic UI. I know how to center elements with CSS, I do it all the time, but the framework refused to cooperate. No matter what I tried, the menu would not center the elements, and during that third of an hour I hated Semantic UI with a sizzling passion. Yet now, after the flames have become embers, I ask myself, is a week of working with a framework enough time to evaluate it as a whole? Not by a longshot. When I think back to my first attempts at CSS and the struggles to sort through the differences in absolute vs relative positioning, of sizing with pixils, vs em, vs vw, vs percentages, and dealing with ever changing screen sizes, I imagine I would have written a scathing review of CSS in that moment. So instead of forcing a premature review of a framework I have only just sampled, I will focus on frameworks in general.
      Understanding the purpose and benefits of a UI framework such as Semantic UI is easiest when first stepping out of the realm of programming and into the world of construction. When we look at a house, a shed, a barn, a garage, a store, a skyscraper, or any building we, as humans, often focus on the details that make them different. What color is the paint, are there large windows in front, how many stories is it? Yet, beneath the façade lies a skeleton, a frame, that in almost all cases is astoundingly similar from building to building. Over many years, architects and engineers have learned what works for structures and what does not. Without this knowledge base, buildings would take exponentially longer to design and construct and the structural integrity would vary wildly from house to house.
      Are web UI frameworks the same thing as frame of a building? Nope, but they are similar and the lessons to learn are there. When an engineer wants to put a window into a wall, they frame it the same way in every house. After that they can fine tune the details. Add shutters, alter the shape, decide if it opens in, out or slides up and down. The one thing they do not do is reinvent the window frame each time. So, if a web designer wants to implement a dropdown menu in their navigation bar, they have a choice. They can start with a blank page, write the html, then code the css, then work on the javascript before finetuning the details, or they can use a framework where the basics are already done for them. With just a line or two of code, a generic dropdown can be inserted into a page and then the details can be sorted out from there.
      Clearly then, frameworks save time, but there are drawbacks worth mentioning. First and foremost, a seasoned developer may feel handicapped by the constraints of the framework. These CSS libraries often have classes that override the code that a developer wants to add to their program, and it can be a challenge to sort through this. Yet this frustration is not the largest drawback that I see. That trophy goes repetitive, mundane, unoriginal, hackneyed designs that often come from framework designers. When people rely totally on the framework and neglect the final details, you get page after page of virtually indistinguishable design. These sad pages are like a suburban neighborhood where the houses are virtually indistinguishable aside from varying shades of sad brown that screams of conformity. Simply put, framework websites often lack character.
      However, in the end, this lack of originality does not fall entirely on the shoulders of the framework itself, but on the complacency of the developer. Moreover, cookie cutter websites made with frameworks can be pumped out with incredible efficiency, which leads to profitability, and in the end better paying jobs for developers and who could complain about that? Still, I have always seen UI design as an artistic endeavor and I believe that I can find a place for frameworks, but in the end, I will always be someone more concerned with the details than the frame. So where does this leave me? Somewhere in the middle. I see the benefits of frameworks and will continue to incorporate them into my knowledge base and tool box, but I will never rely on them at the expense of creating something interesting and original.