structuralism
The idea of structure, as used in this newsletter, is nothing new. It was first introduced by Ferdinand de Saussure in 1916, in his enormously influential Course in General Linguistics. In it, Saussure describes language as a graph, and words as vertices. Between these vertices, there are negative edges representing difference, and positive edges representing signification and similarity.
To understand a word, then, we must understand the topology that surrounds it. The meaning of each word arises from its relationships. Language is not a mere collection of words, it is a structure; each part is defined by its relation to the whole.
Saussure's approach gave rise to structuralism, a school of thought in which a wide variety of systems — social, narrative, biological, mathematical — were modeled as structures.1 The structuralists were especially interested in paired concepts like masculine/feminine, which were defined through their mutual opposition.
These pairings are typically referred to as binary oppositions, or simply binaries. These binaries, however, aren't Boolean. Both "masculine" and "feminine" are continuums; our language simply places them on opposite ends of the same continuum. The structuralists were interested in the implications of these oppositions — to become less masculine is, necessarily, to become more feminine — and how they shaped our culture.
It's entirely possible to understand structures without studying structuralism. We are, perhaps, uniquely qualified; few disciplines allow a definition as concise as "a graph where vertices are concepts and edges are relationships."
But structures exist in every domain. These structures are opportunities; they allow us to draw parallels between those domains and our own. Whenever we delve into a new topic, we should look for the parts which resonate.
For example, consider this metaphor:
That's a very shallow reading
Here, text is a layered container. The upper layers, the surface, must be peeled away to reveal the lower layers, the substance.
When we say a person is shallow, we mean they never delve into these lower layers. They consume nothing of substance, and therefore have no substance.
A surface, then, is cosmetic; changes to something's surface won't affect its substance. It is a facade, a veil to be lifted. Whenever this isn't the case, it must be called out:
- Don't read too deeply into that
- It does what it says on the tin
The shallow-metaphor contains two implicit assumptions: surface and substance are opposites, and shallow/deep is aligned with surface/substance. They are, effectively, the same continuum.
The first assumption is only sometimes true. A good interface, for instance, distills the underlying implementation. The surface reveals the substance.
The second assumption, however, is often a useful heuristic in software. Consider an application, split into the familiar binary of frontend and backend. The application is available on multiple platforms, and thus requires multiple frontends:
As part of the application, these frontends are shaped by that application's sense. They share a common purpose. Their implementations, however, tend to reflect their differences. Parallel implementations are difficult to write, and even harder to maintain; broad similarities tend to hide subtle differences. Unable to live in both, business logic is squeezed into the backend.
And this business logic is, arguably, the substance of the application. As users move between frontends, the backend remains the same. When building a new frontend, we're rarely able to reshape the backend to fit our needs.
None of this applies, however, if there's a single frontend:
Here, the frontend and backend exist on the same continuum, but we can draw the threshold wherever we like. If our team is full of frontend developers, our frontend will be full of business logic. The surface and substance are intermingled.
And then we come to software without a frontend, which industry luminaries sometimes call deep tech:
This is meant to mirror the binary of basic and applied research. Basic research delves into the nature of the world; while lacking any immediate applications, it is expected to enable a wide range of applied research in the future. Likewise, deep tech is expected to enable a wide range of future applications.
But where basic research is defined by its proximity to observable phenomena, deep tech is only defined by its distance from the user. Nothing aligns depth with substance. All too often, what someone calls deep tech is just a solution in search of a problem.
Surface is not necessarily opposed to substance. And where it is, surface/substance is not necessarily aligned with shallow/deep. Nevertheless, we often speak and act as if they are.
This is, perhaps, necessary. By placing two concepts at opposite ends of the same continuum, or aligning two continuums with each other, we reduce the world's dimensionality. We make it tractable.
We should, however, be willing to introspect on these reductions. There is, for instance, a convention that surfaces are feminine. Consider our assumptions about a person who buys makeup, or works as a receptionist.
In our industry, this means that early-career women are often pushed towards frontend roles. I've seen this justified as the sort of work they'd be "good at" or "interested in." Our intuition is a reflection of what we choose to align, and how.
When communicating, then, we must be aware of our audience's intuition. To be concise, we must work with that intuition, building atop it. But if we wish to be precise, it's often necessary to break that intuition apart, articulating differences that have long been overlooked.
-
A survey of these various projects can be found in Jean Piaget's Structuralism. ↩
This post is an excerpt from my (incomplete) book on software design. For more about the book, see the overview.
Thanks for sharing Zach! I like the overall arch of teaching in this one. For me, as a coarse takeaway, that was "What is structuralism, and some reason to care."
Criticisms:
The graph containing "We are, perhaps, uniquely qualified" is problematic. I don't know who "We" is. Unless you've pinned it down loudly and explicitly elsewhere, I think it's too loose. (Coders? Architects? Managers? Engineers who love theory? Exactly people with CS degrees? Exactly the people who read your work?) It also comes across as patting ourselves -- whoever that is heheheh -- on the back and therefore is slightly unseemly. Maybe the entire graph could be deleted and it'd be an overall improvement. This is minor overall though -- it doesn't harm understanding other than possible confusion around who is "we", and even that's not a biggie. That said, I wonder if there's an opportunity here to drop this graph and shore up a stronger and clearer PoV for how different groups of folks with different backgrounds may come to experience structuralism.
"If our team is full of frontend developers, our frontend will be full of business logic." This makes me want to stand up for frontend developers who are also good overall designers. I can easily imagine a frontend team who would still do the decoupling because they'd view it as good practice. I can't tell how much of a throwaway statement this was for you, however, it may be limiting the reader's understanding of your point. How should I be analyzing your imagined team of frontend developers who don't decouple? Is that bad, and so what? (Also, are you OK with pissing off readers who have a specialty in FE work!? heh)
The treatment of the surface/depth opposites along with women in our industry being "pushed towards frontend roles" is interesting and controversial to me. I wondered for a moment how coincidental it was to write about the original surface/depth spectrum then later talk about buying makeup. But then it seemed clear there was zero coincidence. The lines of thought here are confusing to me... On the first reading I wasn't sure how much I should be thinking about structuralism as a core concept versus being concerned with analyzing sexism and stereotyping in tech. After a second reading, I realize you did use the phrase for instance in there. So then I found it reasonable to assume the former focus -- structuralism -- is by far primary. Either way I found it interesting writing, but perhaps it could use better directives for me the reader. (I vaguely recall commenting on this a long time ago. Apologies if I'm repeating myself. Also, apologies if I'm contradicting my past self haha.)