January 15, 2021

What is Programmatic Determinability?

Programmatic Determinability is a big part of accessible websites. It's about clarifying what seems obvious, then getting cheesecake.

The phrase "programmatic determinability" appears a lot in the Web Content and Accessibility Guidelines (WCAG). It's also the kind of phrase that could make you sound smart or conceited, depending on how you use it. For these two very important reasons, I wanted to figure it out.

The official definition of "programmatically determined" kind of helped, but only kind of.

Determined by software from author-supplied data provided in a way that different user agents, including assistive technologies, can extract and present this information to users in different modalities

This is a bit...dense. So I want to unpack it a bit.

A Conversation Between Users and websites #

The most succinct definition I can think of programmatic determinability stops misunderstandings between users and websites.

Sometimes you get into arguments with people who refuse to say why they're upset. No matter how many questions you ask, they only give variations of "I'm upset and you should already know why." It's impossible to reach any kind of agreement or resolution, and most likely you storm off on them with less-than-pleasant thoughts.

A better scenario is you meet someone upset, and when you ask why, they say they're upset a store no longer sells their favorite cheesecake. You probably can't fix the underlying issue, but now you can do more helpful things like:

The first fruitless, frustrating argument version is a website without programmatic determinability.

Your website (the angry friend) isn't giving enough information to users using assistive technology (the frustrated friend). The user asks but gets nothing, doesn't know what to do next, and leaves in a huff.

Want to avoid that scenario? That website needs that info in a coded format the browser can understand. Then the browser can share it and the two friends, user and website, can finally reconcile. This is programmatic determinability.

Share "Obvious" Info with Users #

Here's a specific example: say an English-speaking user visits a website written in a foreign language. They know it has information they need to read but can't understand it. If the computer could talk, their interaction could go like this:

It goes back and forth like this for a while until the user quits from frustration. They tell all their friends how uncooperative the site was and its reputation suffers and dies on a neglected 404 page.

The site in question forgot the lang attribute on its html tag. Without that, the website couldn't tell the user it was written in Italian. It can't share the info that would end this fight between user and website since it isn't programmatically determinable.

The lang attribute is the coded way the browser can understand what the language is. When it's included, the exchange may go like this.

Now the relationship is saved, the user isn't lost, and they can go out for cheesecake together later!

Many accessibility issues can be boiled down to this kind of argument between users and inaccessible webpages that don't communicate well.

These take even more forms - knowing how to solve them for as many users and websites as possible is part of the never-ending accessibility journey. Programmatic determinability is only one part of it, albeit one of the most important ones.

Keep it in mind, and your users will never miss out on cheesecake with your website again.