As a web developer still young in my career it behooves me to never stop learning. Hopefully that behooves me when I’m older as well, but I make no assumptions about my future maturity. So anyways, I read a lot. Books, tutorials, whatevs seems worthwhile on the topics I am studying, because there is a great deal available and it’s fairly easy to access if you have an internet connection and know how to Google and also don’t have any accessibility hindrances. [sidenote: it’s really easy to think those criteria are a very low bar to access - unpacking the assumptions in that thought are worth exploring]
It’s been helpful for me to approach my education in development thinking about how I learned English. I did not major in English, so I have a highschool level education with some college level classes to boot. And when I reflect on that education, I started by focusing on the atomic units of language: the letters, how they combined into words, then moving into how to combine words into sentences. This jump from words to sentences comprised most of the rest of my education in two ways: first, exposure to the sentences and prose of others so that I might hear the ways that English worked, I might examine the tones and structures and develop my ear for good prose. Second, the deconstruction of these sentences and paragraphs and larger units to understand the technical aspects of each unit, the verbs and nouns and prepositions and participal phrases and all the named pieces whose names and functions have faded in my memory since school.
The technical aspects have faded, but my love for literature hasn’t. I was given an appreciation for good writing, given the tools to recognize how an author uses the language to communicate and a deeper understanding of what goes into beautiful fiction and non-fiction.
Software, on a very basic level, is just humans using language to interface with computers. Websites take that and extend it over a global network. Code is not the same as prose, but the way we learn and advance in our knowledge seems similar.
So I must confess that while I enjoy the generosity of those who offer up education (whether blog posts or books or vidoes) that help me understand the languages I write, I also see each day that I’m only getting half an education.
When one is studying English (or perhaps any language, I speak only from my experience), part of the context is a recognition that one writes to communicate. The technicalities of English matter because mastering them allows one to communicate better; makes it easier to persuade, to entertain, to enlighten. Language is one of the primary tools we used to connect with others, and so we study it. Thus the part of education where I read essays and books and sentences from great writers of the past.
When I read software tutorials and books and listen to the talks, the focus is on other developers. The arguments for doign things X way are to build maintainable code, make it easier to work on teams, make our code more efficient. That’s great, but none of that addresses why we write websites. And the context for writing websites is, I assume, so that people can use them.
So what I’m missing in my education is a critique of websites that focus on people as the end goal, while recognizing that websites exist as technical projects.
Everything I learn is focused on the grammar, the construction of good code, but no one that I have encountered asks whether that good code results in better things for the users.
To be less abstract, think about projects you have worked on. Have you ever encountered an issue where a project manager or owner asks for a “simple” change to make something better that you in turn sigh heavily about because the change is not “simple” and may in fact result in significant underlying changes because of well… computers are dumb and what seems simple to humans may in fact be rather complicated for computers?
That complication could be due to any number of factors: perhaps you were dumb in the way you architected things and you never imagined, perhaps the framework you’ve chosen to implement is opinionated and the authors opinion is that your needs are unecessary, perhaps it’s just that what humans find helpful is hard to provide via code. No matter what, that disconnect between what is helpful and what is easy to accomplish is what I think would be easier to anticipate if I were more well-versed in good websites.
What the hell is a good website though? It’s just as subjective as asking what is a good book.
And yet. I have numerous friends with whom I can have delightful conversations about books - recently read ones we liked, we didn’t like, books that were critically praised and whether we agreed with the critics. We have this common awareness that books can be dissected on multiple levels and we can critique on all levels.
I’m missing those conversations around the web, in the context of specific websites. What I often see are either dissections of code that are something like “We needed to do this, here’s how we solved the problem” or “Here’s some usability things you can do to increase engagement” or even “Here’s how to think about this aspect of web development.” All of those are incredibly valuable. They they don’t seem to equip me with the ability to do user-centered development - development that understands the context of a website’s usage and is built in such a way that it’s easy to engineer tools that work better for users.
I’m not finished with learning the grammar of code. I have so much to learn. But I’m ready to start approaching the problems I face from a people perspective, and not from an engineering perspective. Then, perhaps, I can start feeling more confident about the design decisions I make.