When I first got started with accessibility, I was hungry for knowledge. I wanted to learn everything, read everything I could get my hands on, go through all the courses, apply for certifications.
I always felt I was doing something, learning something. Naturally, I accumulated a lot of background knowledge and lots of useful bits along the way. There was a lot of momentum. I was pumped.
I was fending questions left and right and there was little someone could throw my way I felt I didn't already know.
Until I got to my first bigger accessibility project. I had to revamp a rather complex form, making sure keyboard users could navigate it and screen reader users could fill everything in. For everyone who has had to deal with forms and accessibility, you know I had to watch out for a lot of common and not-so-common pitfalls:
- Make sure all form fields can be accessed with the keyboard
- Make sure the tab order makes sense and matches the visual order on the page
- There should be no keyboard traps
- For any information that's revealed on mouse over, there is an on-screen equivalent
- The current field is visually focused
- All form fields have visible and programmatically-linked descriptions
- All form fields have correct roles and state information
- All multi-state elements provide their current status
- All form fields provide complete instructions and cues
- If a field has an error, the error is sufficiently described in text
- Error messages provide the information needed to correct input
- For certain forms, the user has options to reverse, confirm or correct information
- Text contrast
- Live regions after submission
I mean...it's enough to make your head go boom.
And I though I knew all of this. But it was only until I sat down and had to go through that form that I found out how much I didn't know.
Here's the thing.
When you spend lots of time learning and researching, you're building just-in-case knowledge. You're not wasting your time by any means. But you won't know what you won't know until you have to sit down and apply the knowledge. And then it becomes a case of recalling what you know. Now, you may or may not have good memory and you may or may not have learned that bit already. Either way, you will need to make sure that what you think you know is valid.
And you do this by researching and learning just that bit for the use case in front of you.
This is just-in-time knowledge. You look at what's in front of you, you figure out what you know and validate that, plus what you don't know and how to learn it.
I'm not disputing it's not useful to know all the ARIA roles that apply to a specific HTML element. But you can always find that out from MDN. I'm saying it's more useful to know how a toggle button is supposed to behave and when implementing one makes sense.
Through just-in-case learning, you're spreading yourself thin and building up a large body of knowledge that's potentially useful for a given scenario.
But it's only through just-in-time learning that you'll actually solidify knowledge by picking one thing from your large body of knowledge and diving deep into just that one thing. Through applying that knowledge in various scenarios, you're building up your intuition for when to reach for a specific piece of information from that body of knowledge you already possess.
And intuition is not something you can learn ahead of time.