Web Development as a Cargo Cult
Tagged: rants thoughts
I recently read "Everything Easy is Hard Again" from Frank Chimero and was surprised to discover the root of some of my angst. In short, Frank's essay talks about how everyone pays the cost of how complex web development has grown. It's great food for thought. It helped me put into words a feeling that's been bothering me: why, despite all the new tools, frameworks, and paradigms, is using the web still so hard and frustrating?
I don't have as much experience in this domain as Frank does. I first touched HTML when I was 12 - back in 2002. I have also been steadily moving away, repelled, from web development over the years and now find myself in an SRE role. A few years ago, it was possible to view the source of any web page and see how its author achieved some effect to learn from it, improve it, or re-use it. What's more, the whole journey could begin by editing some text, saving it as *.html, and clicking on it. The barrier of entry was so low that a curious 12-year-old like me could get into it.
Now, even a hello world example will use a package manager, at least one pre-processor, a framework, a toolkit for automating development tasks, and handful of supporting libraries. In order to view it, the browser will download a megabyte's worth of code and rev up the CPU to parse, render, and execute it. All of it is minified, uglified, transpiled, and impenetrable. A person can get this up and running with a few commands, however, all these dependencies are a black box, which only makes the problem of illegibility worse.
The current approach to making web sites resembles a cargo cult. What's a cargo cult? When researchers contact primitive tribes, they inadvertently share technology like radios, sharp knives, or processed food. Sometimes, after the scientists leave, the tribe develops rituals aimed at summoning the visitors back with their treasures. The rituals can be elaborate, involving fake air traffic controllers sitting in a fake air traffic control tower near a fake landing strip. Similarly, complex web development tools promise "cargo" - a "seamless experience" and "delightful customer engagement" - in return for applying the tool to every project without regard for the end users.
Surely, this is only an old fart grumbling? Modern websites are more accessible, predictable, portable, easier to navigate than ever? Let's look at some data: the top three problems that users of screen readers face, according to the 2017 WebAim: Screen Reader User Survey, are: CAPTCHAs; screens or parts of screens that change unexpectedly; and links or buttons that do not make sense. Despite good vision and health, these three design patterns aggravate me everyday.
Even though companies like Basecamp and Airbnb are constrained to the same building blocks like everyone else, they produce polished, intuitive websites. How do they pull it off? Their decision process works like a feedback loop that uses methods such as A/B or usability testing to measure the effect of a change on users. Each cycle of the loop tests a hypothesis and helps figure out good next steps. It's a lot like the scientific method, which gave us rockets, vaccines, and a platform for cat memes. In contrast, the decision process in cargo cults is based on popularity and mysticism, and results in discussions like "Which is better for building fake air traffic control towers? Mud or bamboo?" or, a topic closer to our lives, "Angular vs. React". Neither leads to cargo or happy users.