If you go talk to a senior software developer, you’ll probably hear them complain about spaghetti code. This is when code is overwrought, unorganized, opaque, and snarled with dependencies. I perked up when I heard the term used for the first time, because, while I can’t identify spaghetti code as a designer, I sure as hell know about spaghetti workflows and spaghetti toolchains. It feels like we’re there now on the web.
I wonder what young designers think of this situation and how they are educating themselves in a complicated field. How do they learn if the code is illegible? Does it seem like more experienced people are pulling up the ladder of opportunity by doing this? Twenty years ago, I decided to make my own website, because I saw an example of HTML and I could read it. Many of my design peers are the same. We possess skills to make websites, but we stopped there. We stuck with markup and never progressed into full-on programming, because we were only willing to go as far as things were legible.
This essay resonated deeply with me. I wrote my first line of HTML about twenty years ago. I remember editing the Yahoo homepage in Netscape Composer around that time, and building a Geocities website not that long after. It felt easy and approachable, even if
<table> syntax was often inscrutable and unpredictable. A few years later, the CSS wave hit the web and I learned about why it was appropriate to separate presentational code from the page’s markup.1 CSS has become more complicated since then, but it continues to make sense to me, even though I need to look up the flexbox syntax every time I use it.
Over the last five years or so, even the most basic website stopped being treated as a collection of documents and started being thought of as software. Over the same period of time, I have gone from thinking that I know how to build a website quickly and efficiently to having absolutely no clue where to start learning about any of this stuff. I can’t imagine being eight years old again and being interested in the web as something anyone can contribute to.
See Also: Chimero’s spoken, longer-form version of this essay, given as a talk at Mirror Conf.
And, yet, the easiest way to make a few boxes side-by-side that have the same resulting height despite allowing a flexible amount of text in each remains
display: table-cell. The same technique allows perhaps the easiest way to vertically centre an unpredictable amount of text. Like tables for layout purposes, it still isn’t semantically correct, but we use it anyway. ↩︎