Skip to content
Back to blog
Part 6 of 6 in series
Learning in Public: Accessibility Literacy

A curated collection of articles exploring this topic in depth.

4 min read

Accessibility as Engineering

Reflections on the shift from compliance to structural engineering and a curated reading list for building deeper accessibility literacy.


Retrofitting accessibility into this site has been less about fixing a collection of bugs and more about evolving a mental model. As this series concludes, I have realised that accessibility literacy is not a destination but a shift in how I approach engineering.

Beyond the Checklist#

When I began this initiative, I framed the problem around the 'what': which attributes to add, which roles to define, and which WCAG clauses to satisfy. The shift came from applying a familiar principle: focusing on the 'why' rather than the 'what' in a domain where I had not yet done so.

Accessibility stopped being a final compliance pass and started being a fundamental quality of engineering. Checklists helped me identify specific gaps, but developing a mental model of how the browser interprets structure ensured the implementation remained robust. By understanding how the browser interprets code, I moved from reactive patching to proactive, inclusive design built into the foundation of the system.

The Browser as Stakeholder#

I already thought in terms of stakeholders, but I had not applied that lens to the browser itself. Once I did, it changed how I read my own code. The browser is constantly interpreting it to build the Accessibility Tree, synchronise programmatic state, and respect system-level preferences.

Treating the browser as an active participant in the user experience means working with its defaults rather than against them. This perspective shift makes accessibility feel like a natural extension of software architecture rather than an external imposition or a visual afterthought.

Systems over Intentions#

In my experience, "I will remember to do this" is a dangerous phrase in software development. Systems need memory, and in anything more than a trivial project, that memory must be encoded in the architecture.

By moving accessibility guarantees upstream into the content pipeline, the linting configuration (with eslint-plugin-jsx-a11y), and the automated test suite, I have removed the risk of human error. Automation and architectural constraints are not just about efficiency; they are about integrity. They ensure that the inclusive experience I have built survives the next update, the next redesign, and the next moment of forgetfulness.

What I would do differently#

If I were starting this project again, I would design in accessibility from day zero. This is not a new lesson. Retrofitting any quality concern into an existing system is harder than building it in from the start, but accessibility makes that cost especially visible.

I would also avoid the temptation to over-engineer complex ARIA roles early on. Starting with clean, semantic HTML and landmark disambiguation provides the vast majority of the value with minimal complexity. Accessibility is often a matter of doing less, but doing it more intentionally and with greater technical awareness.

Further Reading#

A handful of resources that were instrumental in shaping my understanding.

Mental Models and Systems Thinking#

These resources helped me move from implementation details to high-level architectural thinking.

Browser Behaviour and Semantics#

Understanding the "how" requires understanding how the browser processes and exposes structure to assistive technologies.

Automation and Invariants#

Starting points for encoding accessibility guarantees into the pipeline.