Reducing Complexity With More Appropriate Solutions
Like many large platforms, McGraw Hill’s Learning Management System had accessibility problems. The stakes were unusually high. Texas state vendor eligibility required a documented ACR, and without it McGraw Hill couldn’t compete for contracts tied to one of the largest education procurement cycles in the country. A third-party audit was cataloging surface findings. What nobody had yet done was figure out what those findings meant at a system level, and what it would take to fix them properly.
Several teams were working through the backlog. Ours happily handled the tickets requiring the deepest systems-level understanding. Our triad was a dev lead, a TPM, and me. I was the only UX designer on the effort and what I kept finding, working through tickets with the dev lead, was that the surface findings were symptoms of deeper systemic problems. One example was a collection of tickets separately flagging inaccessible tab panels. These all turned out, on closer inspection, to be something else entirely. The real issue was that a tab component was being used as a secondary navigation menu. The auditors had read the visual appearance and missed the semantic failure underneath.
Rather than refactoring the tabs and their panels, the simpler solution was to replace it all with a more appropriate pattern. I wasn’t just resolving tickets. I was reading the system underneath them.
I was able to do the remediation and implement the new pattern myself. I took the opportunity to build a scalable secondary nav accessibly from the start, including a documented addition to the Figma Library, designed to work at 400% zoom and across viewport sizes, with its styling fully separated into the theme layer. This was not the first time that I pulled work from the backlog to lift some weight off the team.
That pattern repeated throughout the project. I was noting where design decisions made in a vacuum years prior had compounded into a dozen failure points. The right answer was to rebuild or replace appropriately rather than add gum to spider webs.
Because I write HTML and CSS at a working level, I didn’t have to wait for developers to implement my proposals before finding out if they worked. I wrote the production-ready markup directly. Developers could take that markup, attach logic, and move quickly. For more significant rebuilds, I worked through the design simultaneously in Figma, validated behavior in code as well as with product owners, and then came back in after developer implementation to further optimize the markup. This became an efficient cycle for us.
One such example involved complete deconstruction of a nested content player used by teachers and students across the platform.
The remediation effort concluded with a delivered ACR and McGraw Hill maintained Texas state vendor eligibility. From there, the contracts are understood to have been in the tens of millions of dollars, with compounding potential from other states that follow Texas procurement decisions.