In Critical Defense of Frontend Development
Tags: webdev, frontend, 2020
Published: 2021-01-12 18:26:31

Frontend development is a field that’s not unfamiliar with being misunderstood, and its value being underestimated or missed. We had another opportunity to experience that when the other week, Shopify’s CEO made frontend development <a href="https://twitter.com/tobi/status/1341423803772121089">an affair only of junior developers</a>. The comment <a href="https://twitter.com/tobi/status/1341855413269131264">may have been imprecise</a>—it was published on Twitter—, but that doesn’t save it from appearing disconnected from the scope and importance of the field.

<h3>What Is Frontend Development?</h3>

<a href="https://en.wikipedia.org/wiki/Front-end_web_development">According to Wikipedia</a>, frontend development is “the practice of converting data to a graphical interface, through the use of HTML, CSS, and JavaScript.”

For someone who thinks lowly of HTML, treats CSS as if it was a programming language, and knows JavaScript from exposure to a JavaScript framework, problems may start right there, because viewed this way the frontend development world looks unappealing and irrelevant.

With this understanding of frontend development as unappealing and irrelevant likely being more common, we’re dealing with two problems: On the one hand the <em>definition</em> is inaccurate, as there’s more to frontend development than HTML, CSS, and JavaScript; on the other hand the definition’s <em>interpretation</em> is faulty, as HTML, CSS, and JavaScipt alone are more complex, more interesting, and more important than perhaps most of what information technology offers to study and practice today.

<h3>Problem 1: Frontend Development Is Much Larger</h3>

First, frontend development is much more than HTML, CSS, and JavaScript, and our definitions, like the one quoted from Wikipedia, seem too narrow. (For an account of how I personally thought that frontend development was too small, and how I almost became a software developer, check out <a href="https://youtu.be/4JIFp7hcJcU?t=805">my story</a> as told at beyond tellerrand 2018.)

What more is frontend development? In essence, frontend development is user-facing, and as such, the user is at the heart of the different priorities of frontend development. Frontend development is not just development:

<ul>
<li>Engineering
<ul>
<li>Accessibility</li>
<li>Security</li>
<li>Performance</li>
<li>SEO</li>
<li>Internationalization</li>
</ul>
</li>
<li>Design
<ul>
<li>Typography</li>
<li>Information design</li>
<li>Graphic design</li>
<li>Interaction design</li>
</ul>
</li>
<li>User experience
<ul>
<li>Information architecture</li>
<li>Usability</li>
<li>Human-computer interaction</li>
</ul>
</li>
</ul>

…and the list goes on. (A quick note, while that list may be useful to make a more organized attempt at redefining frontend development, it does not imply a frontend developer would need to be an expert in all of this—but rather to have some basic understanding, and recognize and consider the respective avenues for further specialization.)

In order to become a better frontend developer you don’t become a backend developer, <em>you become a better designer and advocate for the user</em>—in a sense of acquiring an understanding of design as well as empathy for users.

When other developers look and talk down on frontend developers they don’t only show ignorance of the scope and size of frontend development, they then also distract frontend developers from their mission&nbsp;<a href="#note-distraction"><sup>*</sup></a>—because that mission is not to walk further into the server room, but to open the windows and look at the users out there.

<h3>Problem 2: Frontend Development Is Much More Complex</h3>

Then, frontend development is also much more complex than commonly thought, even <em>if</em> it was “only” HTML, CSS, and JavaScript. That one part above, about HTML thought lowly of, CSS being treated as a programming language, and JavaScript only being explored through frameworks—now that part already gives it away:

<em>Frontend development is not properly understood.</em>

HTML, from what we can observe, must really be thought lowly of. Many developers (including frontend developers) invest a few hours into “learning” HTML, think they got it, and then, 1, 5, 10, or 20 years later still write lowest-quality markup. When you look at how poorly HTML is written, by professionals, the situation is an embarrassment. Given how much goes wrong around HTML, whether it’s the decades-lasting refusal to validate HTML code&nbsp;<a href="#note-validation"><sup>†</sup></a>, the <a href="https://almanac.httparchive.org/en/2020/markup#element-diversity">under-use of HTML elements</a>, or the rare <a href="https://meiert.com/en/blog/optional-html/">optimization of HTML for production</a>, it’s downright pathetic what’s going on in the HTML part of the field, even if HTML was <em>not</em> the most important (document) language on the Web.

How’s this for CSS? CSS has long spun out of control. Symbolically, I peg it all on the day we introduced <a href="https://www.w3.org/TR/css-variables-1/">custom properties</a>: On the server side we were always able to work with variables, but somehow the mindset snuck in that CSS better was a programming language and that therefore, variables had to be brought into the spec. I’m bending the story but it matters little—<a href="https://meiert.com/en/blog/the-css-problem/">CSS has exploded</a> and while that has had many benefits, it also threw a wrench into us ever understanding, mastering, exhausting CSS. We will never get there anymore: No one will ever fully understand, master, and exhaust CSS. Except for the junior frontend developers, as we now get told, who better move on to other engineering positions…

And JavaScript? Who actually writes native JavaScript? Doesn’t everyone now go for the Node ecosystem, plus one or more JavaScript frameworks on top? What has happened with CSS had earlier already begun for JavaScript—that developers started to go for abstractions instead of mastering the language. jQuery is still the most prominent example, but other frameworks like <a href="https://qooxdoo.org/">qooxdoo</a> are even older; and these days we don’t even <em>hire</em> anymore for native development skills—we hire by abstractions.

What these paragraphs want to say is that HTML, CSS, and JavaScript alone—if you agree with them being the key technologies for frontend development—are so huge, so important, also so messy, that learning a <em>programming</em> language is a joke. A bad joke, it turns out, ending with people outside the field ridicule it, and people inside take shortcuts at every opportunity.

<h3>Start Respecting Frontend Development</h3>

That bad joke now, and our bad joking, must stop.

That joke-telling, this false narrative, has cost us dearly.

While the digging started early, with web design and development becoming commoditized (thanks first to <a href="https://en.wikipedia.org/wiki/Microsoft_FrontPage">FrontPage</a> and <a href="https://en.wikipedia.org/wiki/Adobe_Dreamweaver">Dreamweaver</a>), it was a small part of the field then (vendors and standards contributors) that made web development super-cool, but also <a href="https://meiert.com/en/blog/spec-fragmentation/">super-complex</a>. That commoditization and complication of the Web that has progressed over two or one decade, respectively, was accompanied by a large part of the field that looked on, and that thereby helped frontend development perhaps not to a grave, but to quite a spacious hole.

Where we’re at now, the baseline quality of the HTML, CSS, <em>and</em> JavaScript that <em>professional</em> developers write is abysmal. Another way you can tell this is when you consider that in the 90s and the early 2000s, we complained about the “outsiders,” people who had just learned HTML and CSS and wanted to become web designers (or <a href="https://meiert.com/en/blog/are-you-a-web-designer-or-a-web-decorator/">web decorators</a>), and who in consequence undermined the field’s output quality and reputation. For years now we’ve instead been complaining about our own, our peers. <em>Exclusively.</em> Those peers who may well not be able to write a document, style sheet, or script by hand. And now, thanks to the easily disparaging remarks of a tech company CEO, we get reminded that this pendulum swung so far, so hard, that we get the idea frontend development was irrelevant. That’s how messed up this is by now.

It’s time this changes. This was in parts a rant, but here are some suggestions.

<ol>
<li>Respect HTML.</li>
<li>Respect CSS.</li>
<li>Respect JavaScript.</li>
<li>Understand that these three languages, especially in conjunction, are more complex than any random programming language. Frontend development is document, formatting, <em>and</em> script language territory.</li>
<li>Understand that frontend development rests on a robust understanding of these languages, an understanding that’s near impossible to obtain (and ridiculous to ask for from a junior developer).</li>
<li>Understand that frontend development goes beyond HTML, CSS, and JavaScript—not in the direction of where software development may want to have it, the backend, but towards the user: accessibility; performance; usability; design; information architecture; &c.&nbsp;pp.</li>
<li>If you’re not one of them, leave frontend developers alone. They don’t tell you how to do your work, either.</li>
<li>Respect frontend development.</li>
</ol>

When we do that, we quell the insinuation that frontend developers were second-class developers who should at the first opportunity become backend or “full stack” or other types of developers.

No: We would <em>recognize frontend developers as first-class developers</em>, and <em>support them</em> to get order into the chaos that “web development as a commodity” and “web development as software development” have caused.

Finally, as frontend developers and frontend development managers we need to show more respect to our own field and ask for more from ourselves, too. That some of the industry’s output is pathetic—I will say it again—is largely our own responsibility. While others need to understand what frontend development really means, we need to clean up our own backyard.

Let’s all do this. Thank you.

<em>Many thanks to <a href="https://jadjoubran.io/">Jad Joubran</a> for reviewing this post.</em>

<em id="note-distraction"><sup>*</sup> Let’s admit, however, that frontend developers are also quite easy to distract. I don’t know a single one who would not aspire to be a great <em>software</em> developer, too. When that part of the frontend developer’s ego kicks in, we look behind us again, to the back end, and not ahead, to the front end.</em>

<em id="note-validation"><sup>†</sup> We’ve for too long played down the validation blind spot, not realizing how all the invalid code would eat the craft and the profession from the inside. Imagine your mechanic, your lawyer, or your doctor would go about their craft as frontend developers go about HTML. If they did they would end up in the same mess frontend developers find themselves today—evidently lacking basic professional standards, in a field constantly in or at the brink of identity crisis, questioned and bullied by neighboring disciplines, and—probably rightly—not always trusted.</em>