The Great Divide is Real, But You Get to Choose Your Side
Tags: frontend, javascript, css, html
Published: 2019-02-03 00:26:33

---
title: The Great Divide is Real, But You Get to Choose Your Side
published: true
description: 
tags: frontend, javascript, css, html
---


![https://thepracticaldev.s3.amazonaws.com/i/vtcfoszaitot0z8yge0d.jpg](https://thepracticaldev.s3.amazonaws.com/i/vtcfoszaitot0z8yge0d.jpg)


Some articles recently have had an impact on me, and they are important for context in this debate that is boiling up in our industry. I recommend reading [The Great Divide](https://css-tricks.com/the-great-divide/), [HTML CSS and Our Vanishing Entry-Points, by Rachel Andrews](https://rachelandrew.co.uk/archives/2019/01/30/html-css-and-our-vanishing-industry-entry-points/) - as well as [HTML is a Compilation Target by Christian Heilmann](https://christianheilmann.com/2019/01/28/html-is-and-always-was-a-compilation-target-can-we-deal-with-that/). 


I don't actually feel all that angry about the way CSS and HTML are being treated. I feel worried. And, as is normal, the worry is about identity and how I'm perceived by others. I'm worried that I am being foolish and short-sighted about web app development. And I'm worried that I'm not actually the kind of web designer that I thought I was.

And what is that identity I'm worried about maintaining? I started as the guy who does HTML and CSS cutup of photoshop files. I worked at a small agency with one other designer and several "programmers". We built hundreds of websites for small businesses. I had been making websites for myself and other since 1999, but when I graduated from college and started a "career" I really grew into an expert with CSS and all the little browser quirks and tricks that needed to be discovered the hard way. 

I convinced the other people in my team to move from table layouts to pure CSS around 2006. Floats, man. Floats... *Shudder*

I had taken computer science classes in college along side all the design and communication classes, but it wasn't really something I loved. I thought of myself as a designer first, but I was expected to turn my photoshop designs into real flexible web page templates that could handle any content that a CMS might put into them. And doing that design work in a browser was a lot of fun for me. The mysterious alchemy of server side programming was still a little bit beyond what I was comfortable with, despite a few forays into PHP during college. Eventually, I began scripting interactions inside Flash widgets and "Rich Internet Applications". I was able to take that knowledge and begin applying that to javascript in the browser. And around that time jQuery came out and made everything so much better.

Due to some weird career shifts I found myself as a developer on an enterprise backend web development team in 2010. I found myself learning new skills rapidly, backend programming with C# and ASP.Net MVC, database design, architecture diagrams, big enterprise software development lifecycle procedures.

What I've discovered over the past 20 years is that really what I wanted all along was to build awesome experiences that were easy to build and easy to share. HTML and CSS were never "the easy entry point", they were the weird technical fiddly syntax that you needed to learn to manipulate to get the desired output on the screen. Learning to be a programmer was something that had to happen organically as I needed it. Now that I've been diving deep into coding javascript applications for the last 5 years, and writing backend server apps for 9 years, I can say that I don't care to treat HTML and CSS as anything particularly "precious". They are just the structured data formats that are needed to tell the browser how to render the UI. If we have layers of tools that can create all the necessary HTML and CSS dynamically from javascript, then it doesn't really matter to me. We can still make that app accessible, we can still make it performant, we can still open it up in developer tools and view all the DOM nodes and style properties.


I don't think writing all your CSS in JS is a good idea. I think we can still build useful and reusable CSS that takes advantage of the cascade, instead of fearing it. We can deal with the nature of global scope through understanding instead of just overwriting everything with a random ID to create isolation. CSS was built as it is for a reason, it's worthwhile to know the why's and understand how to use those aspects. But, that doesn't mean it's always wrong to subvert the usual expectations of how CSS works. [Atomic CSS](https://css-tricks.com/growing-popularity-atomic-css/) is a great example of this.


I've always held onto an identity as a frontend developer, even while I was focusing on design, or server-side development. And now that my own vision of frontend developer fits more closely with the larger view of the flood of newer JS engineers that build single page apps and bypass HTML and CSS when it's convenient, I wonder if I'm being short-sighted and irresponsible with my craft. I care about treating the web responsibly with a long-term perspective on our work being usable for dozens of years. If we build a content website with a JS toolchain we need to make sure it's outputting static HTML pages that are enhanced by JS when it's loaded - like [Nuxt](https://nuxtjs.org) does.


I ended up in a place where I think the modern toolchains and SPA development frameworks are really exiting and useful. I know more than I ever expected to know about the event loop, the call stack, virtual-dom, and functional code. And it was my choice to pursue learning what I did. I have privilege and luck and a great deal of enthusiasm to help me arrive at the side of the divide where I am. I can tell you it's not a great divide anymore, It's just exciting to look out across a rich and varied landscape of web development approaches and think back fondly on the peaks that I've stood upon in the past and look ahead to the foggy future where more exiting climbs await me.