Hard to break
I keep thinking about some feedback that Cassie received recently.
She had delivered the front-end code for a project at Clearleft, and—this being Cassie we’re talking about—the code was rock solid. The client’s Quality Assurance team came back with the verdict that it was “hard to break.”
Hard to break. I love that. That might be the best summation I’ve heard for describing resilience on the web.
If there’s a corollary to resilient web design, it would be brittle web design. In a piece completely unrelated to web development, Jamais Cascio describes brittle systems:
When something is brittle, it’s susceptible to sudden and catastrophic failure.
That sounds like an inarguably bad thing. So why would anyone end up building something in a brittle way? Jamais Cascio continues:
Things that are brittle look strong, may even be strong, until they hit a breaking point, then everything falls apart.
Ah, there’s the rub! It’s not that brittle sites don’t work. They work just fine …until they don’t.
Brittle systems are solid until they’re not. Brittleness is illusory strength. Things that are brittle are non-resilient, sometimes even anti-resilient — they can make resilience more difficult.
Kilian Valkhof makes the same point when it comes to front-end development. For many, accessibility is an unknown unknown:
When you start out it’s you, notepad and a browser against the world. You open up that notepad, and you type
<div onclick="alert('hello world');">Click me!</div>
You fire up your browser, you click your div and …it works! It just works! Awesome. You open up the devtools. No errors. Well done! Clearly you did a good job. On to the next thing.
At the surface level, there’s no discernable difference between a resilient solution and a brittle one:
For all sorts of reasons, both legitimate and, as always, weird browser legacy reasons, a clickable
divwill mostly work. Well enough to fool someone starting out anyway.
If everything works, how would they know it kinda doesn’t?
Killian goes on to suggest ways to try to make this kind of hidden brittleness more visible.
Furthermore we could envision a browser that is much stricter when developing.
This something I touched on when I was talking about web performance with Gerry on his podcast:
There’s a disconnect in the process we go through when we’re making something, and then how that thing is experienced when it’s actually on the web, which is dependent on network speeds and processing speeds and stuff.
I spend a lot of time wondering why so many websites are badly built. Sure, there’s a lot can be explained by misaligned priorities. And it could just be an expression of Sturgeon’s Law—90% of websites are crap because 90% of everything is crap. But I’ve also come to realise that even though resilience is the antithesis to brittleness, they both share something in common: they’re invisible.
We have a natural bias towards what’s visible. Being committed to making sure something is beautiful to behold is, in some ways, the easy path to travel. But being committed to making sure something is also hard to break? That takes real dedication.