Make things online as simple as they need to be
Not everyone accesses the web on equal footing, so check what you make.
An important reminder from Terence Eden - we should always assume that someone might be accessing the things we make online on devices/in conditions that aren't the latest state-of-the-art.
In the middle, a young woman sits on a hard plastic chair. She is surrounded by canvas-bags containing her worldly possessions. She doesn’t look like she is in a great emotional place right now. Clutched in her hands is a games console – a PlayStation Portable. She stares at it intensely; blocking out the world with Candy Crush.
Or, at least, that’s what I thought.
Walking behind her, I glance at her console and recognise the screen she’s on. She’s connected to the complimentary WiFi and is browsing the GOV.UK pages on Housing Benefit. She’s not slicing fruit; she’s arming herself with knowledge.
The PSP’s web browser is – charitably – pathetic. It is slow, frequently runs out of memory, and can only open 3 tabs at a time.
But the GOV.UK pages are written in simple HTML. They are designed to be lightweight and will work even on rubbish browsers. They have to. This is for everyone.
Not everyone has a big monitor, or a multi-core CPU burning through the teraflops, or a broadband connection.
Web development these days has definitely headed down the single page application route as opposed to the server-side route. I'm not here to bash one or the other - both have their benefits for sure, but it's definitely worth having a think whether what you are making might be used by someone in imperfect conditions like the story above.
Clearly, they are making a joke, but this makes me sad. ☹️
Most people would never see this, but it would be nice if they had even given the simplest of functionality like a single search box which loaded a map tile image. This is called graceful degradation.
This isn't new - the BBC were doing this 8 years ago - millennia in internet terms.
You check whether someone has something enabled, and then layer on functionality from a base level experience.
If you are making something that's only ever going to be used in a certain context - a highly complex stock trading web app say, then you might be OK. But I suspect most people aren't making that, and most things on the web should be simpler by nature.
However, the general principle applies: you can't tell where or in what situation someone might need to use your service - especially if its informational or public sector.
Things like flaky 3G, temporary network errors, browser extensions, ad blockers, CDN downtime, DNS lookup failures can all impact a service, so the smaller it is to download and easier to run the better.
Make it robust not fragile
I love web technology, and the advances we've made in recent years are wonderful in terms of what's possible. However, we need to try and think about building things robustly.
The woeful love of over-complication, layering more and more fragility and bandwidth … It needs to get in the sea.
Making stuff is hard. Words matter, and think about what you write first and foremost before your technology choices. I know simplicity isn't always the answer, and sometimes complex things need to be complex, but would reviewing your technology choices potentially open up your product to more people?
Things to think about
- Server-generated content if you can: Are you serving content that could be easily server-generated - it would work on the most devices out there.
- Consider payload size: is downloading a 500KB JS framework essential for your web app? If you are making a simple form, could it be validated without JS?
- Progressively enhance CSS: start simple. then use @supports for CSS to layer on advanced layouts.
- Keep JS simple: if you need JS, can you just use vanilla JS or do a lot with a vanilla JS framework that compiles down to the smallest possible size? HTMLDom.dev.
- Progressively use JS frameworks: if you need a JS framework, like React, try and progressively layer the experience so all benefit: see how Smashing Magazine did it.
- Do right by YOUR audience: Have a look at your analytics if you have it, and see what devices people are accessing your app from, and make an informed choice, considering the widest range of contexts what you are making could be used in.
There's nothing like hearing stories of real users using technology and struggling to make you realise we can do better.
Use the least complex technology needed to deliver the right level experience to as many people as possible.