Kuvan kuvaus: suunnittelija seisomapöydän ääressä takaapäin kuvattuna, kahdessa näytössä näkyy suunnittelujärjestelmän komponenttikirjasto kohdistustiloineen — visuaalinen tunnusmerkki suurimittakaavaiselle saavutettavuussuunnittelijaprofiilille.

Lukuaika: 10 minuuttia

Toimituksen huomio. Tässä profiilissa kuvattu suunnittelija on yhdistelmähahmo. “Maya Okafor” ei ole yksittäinen todellinen henkilö; elämäkerta on koottu viiden saavutettavuussuunnittelun vanhemman vastuuhenkilön rekisteröidyistä haastatteluista. He johtivat vuosina 2019–2025 usean kvartaalin saavutettavuusohjelmia kuluttajainternettiyrityksissä, joiden käyttäjäkanta oli noin 80–300 miljoonaa. Jokainen numero, jokainen artefakti ja jokainen epäonnistuminen alla olevassa aikajanassa on todellinen ja poimittu yhdeltä viidestä ammattilaisesta; synteesi — yhden uran kaari yhden ohjelman läpi — on toimituksellinen vapaus.

Tuote on myös naamioitu. Mitä nimeämme tarkasti, on sen mittakaava (noin 200 miljoonaa kuukausittaista aktiivikäyttäjää alussa, noin 240 miljoonaa lopussa), sen tekninen pino (React- ja TypeScript-käyttöliittymä sekä iOS- ja Android-sovellukset, jotka jakavat saman suunnittelukielen) ja suunnittelujärjestelmän pinta-ala, jonka Maya peri (noin 410 komponenttia, joista noin 90 oli “ensisijaisia”). Nämä ovat muuttujia, jotka säätelevät työn vaikeutta.

Se maanantai, kun hän astui sisään

Maya Okafor liittyi yritykseen sateisena maanantaina tammikuun lopulla 2022 vanhempana tuotesuunnittelijana suunnittelujärjestelmätiimissä. Hän oli kolmekymmentäneljä. Hän oli viettänyt kuusi edellistä vuotta suuren kustantamon digitaalisessa yksikössä, jossa hänestä oli tullut — melkein vahingossa — se, joka tiesi, miltä kohdistusrenkaan pitäisi näyttää ja miksi brändin edellyttämä 2,6:1-kontrastisuhde tertiääripainikkeissa ei tosiasiassa ollut hyväksyttävä. Hänellä ei ollut muodollisia saavutettavuustodistuksia. Hän kertoi aina oppineensa kaiken kantapään kautta: olemalla se suunnittelija puhelussa, kun ruudunlukuohjelman käyttäjä lähetti tukitiketin eikä kukaan muu osannut toistaa ongelmaa.

Uudessa yrityksessä ei ollut saavutettavuusvelvoitetta. Ei saavutettavuustiimiä. Oli Saavutettavuuden työryhmä, joka kokoontui joka toinen keskiviikko kello 16 Tyynenmeren aikaa ja jolla oli Mayan ensimmäisenä keskiviikkona kuusi osallistujaa. Sillä oli Confluence-sivu, jota oli päivitetty viimeksi vuonna 2020, Slack-kanava noin 140 jäsenellä ja kolme viestiä viikossa, ja — Maya tajusi myöhemmin — täsmälleen yksi vipuvarsi: 41 avoimen saavutettavuuteen liittyvän tukitiketin jonossa, joista seitsemän tuli yhdeltä vammaisoikeusjärjestöltä, joka oli lähettänyt yritykselle sähköpostia neljännesvuosittain vuodesta 2019.

”Ensimmäisenä luin jokaisen niistä 41 tiketistä. Toisena tulostin ne ja laitoin mapiin. Ei siksi, että kukaan tarvitsi mappia — vaan koska minulla täytyi olla konkreettinen esine pantavaksi VP:n pöydälle kolmen kuukauden päästä, kun keskustelu kävisi hankalaksi.”

Maya Okafor, yhdistelmähahmo, ensimmäisestä kuukaudestaan

Perustelujen rakentaminen: valitusmäärä, oikeudellinen altistuminen, markkinaosuus

Ensimmäiset kolme kuukautta eivät olleet suunnittelutyötä. Ne olivat tutkimustyötä. Maya teki kolmea asiaa samanaikaisesti.

Hän kvantifioi valitusvirtauksen. Tukitiimin kanssa hän poimi kaikki viimeisen kahdenkymmenneljän kuukauden tiketit, jotka sisälsivät jonkin tusinasta lippusanasta — “screen reader”, “VoiceOver”, “TalkBack”, “JAWS”, “NVDA”, “contrast”, “keyboard only”, “WCAG”, “ADA”, “EAA”, “I can’t read”. Hän löysi noin 1 470 erillistä valitusta, joista noin 280 oli ratkaisematta yli yhdeksänkymmentä päivää. Hän kartoitti ne tuotepinnoille: noin 38 prosenttia kassalta, noin 22 prosenttia viestittelystä, noin 14 prosenttia profiilin luomisesta, noin 9 prosenttia videotoistiesta. Tuo jakauma päättäisi kuusi kuukautta myöhemmin, mitkä komponentit kirjoitettaisiin ensin uudelleen.

Hän kvantifioi oikeudellisen altistumisen. Yritystä oli nimetty kahdessa ADA Title III -kanteessa edellisenä kahdeksantoista kuukautena, molemmat soviteltiin. Maya ei voinut nähdä sovintosummia — lakiosasto ei antanut niitä hänelle — mutta hän pystyi näkemään oikeudenkäyntifrekvenssin käyrän toimialansa julkisessa asiakirjassa. Hän rakensi laskentataulukon, joka otti yrityksen altistumispinta-alan ja tuotti arvioidun vuotuisen sovinto- ja korjauskustannusten vaihteluvälin “ei-mitään-tehdä” -uralla. Kyseisen vaihteluvälin keskipisteen arvo oli useita miljoonia dollareita vuodessa.

Hän kvantifioi markkinamahdollisuuden. Tämä oli se rivi, joka sai huoneen liikkeelle. Maya täydensi yrityksen käyttäjätutkimusdataa WebAIM-ruudunlukuohjelman käyttäjäkyselyllä, CDC:n vammaistilastoilla ja Eurostatin vammaisprevalenssitiedoilla tuotteen palvelemille EU-markkinoille. Hän tuotti yhden dian: yrityksen noin 200 miljoonasta kuukausittaisesta käyttäjästä arviolta 14–22 miljoonaa käytti tuotetta jonkinlaisella avustavalla teknologialla tai ei-oletusasetuksilla. Analytiikka osoitti tämän segmentin vaihtuvan noin 1,8 kertaa koko perustan vauhtia. Jos tämän segmentin säilyvyys saataisiin pariteetin tasolle, nettovaikutus vuotuiseen liikevaihtoon olisi Rahoituksen tunnistama luku.

”En koskaan näyttänyt Lakiosaston lukua Markkinoinnille enkä Markkinoinnin lukua Lakiosastolle. Kullekin näytin luvun, joka merkitsi heille eniten. Talousjohtajalle näytin molemmat, yhdellä dialla, rinnakkain. Se oli kokous, jossa ohjelma sai rahoituksen.”

Maya Okafor, yhdistelmähahmo, rahoitustapauksesta

Ohjelma hyväksyttiin Q2 2022:n lopussa. Henkilöstömäärä: seitsemän, kasvamassa yhteentoista kahdentoista kuukauden aikana — kolme suunnittelijaa, neljä insinööriä, kaksi laadunvarmistuksen asiantuntijaa, yksi ohjelmapäällikkö, yksi tutkija, jolla oli kokemusta vammaisyhteisön rekrytoinnista. Budjetti ulkoisiin testausyhteistyöhön: kuusinumeroinen vuotuinen rivi. Valtuutus: hyväksyntä kaikille uusille suunnittelujärjestelmän komponenteille, veto-oikeus komponenteille, jotka epäonnistuivat saavutettavuustarkistuslistassa. Tuo viimeinen lauseke — veto — oli se, josta Maya neuvotteli kovimmin. Se oli ero ohjelman ja luvan-anomisharjoituksen välillä.

Suunnittelujärjestelmän uudistus: tokenit, kohdistus, liike

Tekninen työ alkoi Q3 2022:ssa ja jatkui seuraavat neljätoista kuukautta. Maya jäsensi sen kolmeen erään, joita hän kutsui — dioissa ja päivittäiskokouksissa — Perustuksiksi, Komponenteiksi, Malleiksi. Tuon järjestyksen kurinalaisuus oli ohjelman tärkein arkkitehtuurinen päätös, hän sanoi usein.

Erä 1 — Perustukset

Ensimmäiset kuusi kuukautta rakensivat suunnittelutokenit uudelleen. Vanhassa järjestelmässä oli noin 84 väritonkenia ilman semanttista nimeämistä — “Blue/600”, “Grey/400”, “Brand/Primary” — eikä kontrastimetatietoja. Mayan tiimi korvasi ne noin 40 tokenin semanttisella paletilla, joka oli järjestetty toiminnon mukaan: content-primary, content-secondary, surface-base, border-default, sekä interaktiivinen portaikko (action-primary, action-primary-hover, action-primary-pressed) ja tilaportaikko. Jokaisella tokenilla oli metatiedoissaan kontrastisuhde sen pinnan suhteen, jolle sen oli hyväksytty sijoittua, sekä lippu siitä, minkä WCAG-vaatimustenmukaisuustason se täytti. Työkalut noudattivat tätä: suunnittelija ei voinut sijoittaa content-tertiary -tokenia surface-base-pinnan päälle Figmassa ilman, että lintteri merkitsi sen.

Sama erä standardoi kohdistusrenkaan. Vanhoissa komponenteissa oli — Maya laski — noin seitsemäntoista erilaista kohdistusrengaskäsittelyä, joukossa 1 pikselin pistekatkoviiva, joka hävisi vaaleilla taustoilla, ja 2 pikselin yhtenäinen sininen rengas, joka rikkoi asettelun tiiviisti pakatuilla listoilla. Uusi rengas oli yksi token: 2 pikselin ääriviiva, joka oli offset 2 pikselin läpinäkyvällä välillä komponentin reunasta niin, että rengas näkyi kaikilla pinnoilla. Jokainen interaktiivinen komponentti otti sen käyttöön oletuksena; poistumismahdollisuutta ei ollut.

Liikepreferenssit olivat kolmas perustus. Vanha järjestelmä kunnioitti prefers-reduced-motion -asetusta noin yhdessä paikassa — yhdessä käyttöönotto-animaatiossa — ja natiivisovellukset eivät kunnioittaneet sitä missään. Uusi perustus teki liikkeestä tokenin, jolla oli kolme arvoa (ei mitään, vähennetty, täysi) ja joka johdettiin kaikkien animaatioprimitiivien läpi. Suunnittelijan, joka yritti ohittaa preferenssin, täytyi liittää kirjallinen perustelu, jonka ohjelman vastuuhenkilö tarkisteli.

Erä 2 — Komponentit

Perustuksien oltua vakaat tiimi kääntyi noin 90 ensisijaisen komponentin puoleen. Lista järjestettiin kuukauden yksi valitusvirtausdatan mukaan, jonka Maya oli kerännyt: kassa ensin, sitten viestittely, sitten profiili, sitten video. Jokainen komponentti kävi läpi standardoidun uudelleenrakennuksen: näppäimistönavigoinnin kartta, ruudunlukuohjelman semantiikka, kohdistusjärjestys, kontrastivarmennus jokaisessa tilassa, vähennetyn liikkeen variantti, RTL-variantti ja — Mayan vaatimuksesta — dokumentoitu testifixtuuri, jonka laadunvarmistustiimi voisi ajaa jokaisessa julkaisussa.

Luottokorttisyöttökenttä oli vanhassa muodossaan ollut yksittäinen <input> automaattisella muotoilulla JavaScript-koodilla, joka rikkoi ruudunlukuohjelman ilmoituksen kirjoitetuista merkeistä; uudelleenrakennus käytti neljää erillistä syöttökenttää eksplisiittisillä otsikoilla, aria-describedby-liitetyillä virheillä ja sisäisellä validoinnilla, joka ilmoitettiin kohteliaan live-alueen kautta. Se vei kuusi viikkoa yhdeltä suunnittelijalta ja yhdeltä insinööriltä. Kassaan liittyvät saavutettavuustiketit vähenivät noin 70 prosenttia seuraavana kvartaalina — koska suurin osa uusista tiketeistä yksinkertaisesti lakkasi saapumasta.

Erä 3 — Mallit

Viimeinen erä oli se, jonka Maya kuvaili toteutukseltaan helpoimmaksi ja koordinoinniltaan vaikeimmaksi. Tiimi dokumentoi koostumusmallit — kuinka rakentaa saavutettava modaalivuo uudelleenrakennettujen komponenttien päälle; kuinka koostaa lista sekamediatavaroista; kuinka jäsennellä asetussivu niin, että navigointi toimi ääniohjauksen alla. Mallit lisättiin suunnittelujärjestelmän dokumentaatiosivustolle ajettavina koodiesimerkkeinä. Vaikea osa ei ollut niiden kirjoittaminen. Vaikea osa oli saada jokainen tuotetiimi käyttämään niitä oman keksimisensä sijaan.

Insinöörirullaus

Uudelleensuunniteltu suunnittelujärjestelmä on kirjasto; se ei itsessään ole rullaus. Ohjelman vaikein projektinhallintatyö — Maya oli tästä yksiselitteinen — oli siirtymä. Tuotteella oli noin neljäkymmentä tiimeistä, jotka omistivat kahden–viiden pinnan, joilla kaikilla oli käytännössä vapaus kuluttaa suunnittelujärjestelmää millä tahdilla sen tiekartta salli. Naiiivi suunnitelma olisi pyytänyt jokaista tiimiä siirtymään kvartaalin kuluessa. Tuo suunnitelma olisi epäonnistunut.

Mayan ratkaisu oli asteittainen mandaatti. Uudet komponentit toimitettiin oletuksena; vanhat jäivät ominaisuuslipun taakse, mutta jokainen vanhaa komponenttia edelleen käyttävän pinnan julkaisu avasi automaattisesti P2-tiketin sen tiimin jonoon. Tiketti eskaloituisi automaattisesti P1:ksi yhdeksänkymmenen päivän jälkeen ja P0:ksi sadan kahdeksankymmenen päivän jälkeen. Neljän kvartaalin kuluessa noin 78 prosenttia vanhojen ensisijaisten komponenttien käytöstä oli siirtynyt. Kuuden kvartaalin kuluessa luku oli noin 94 prosenttia.

”Vaikea osa ei ollut suunnittelujärjestelmä. Vaikea osa oli neljänkymmenen tiimin organisaatiokaavio ja budjettisykli, jota ei ollut rakennettu sitä varten. Komponentit olivat kolmen kuukauden työ. Rullaus oli kolme vuotta.”

Maya Okafor, yhdistelmähahmo, siirtymästä

Mitä ohjelma maksoi — ja mitä se palautti

Maya piti kirjaa tarkasti. Kun ohjelma sulki virallisen vaiheen Q4 2024:ssä, kulut olivat yhteensä — kahden ja puolen vuoden, yhdentoista omistautuneen henkilöstöjäsenen ja ulkoisen testauksen myötä — jossain korkeiden yksittäisten miljoonien luokassa dollareita. Saavutettavuuteen liittyvien tikettien saapuminen oli laskenut noin 73 prosenttia vuoden 2022 lähtötasosta, vaikka käyttäjäkanta oli kasvanut noin 20 prosenttia. Ohjelman aikana avatut kaksi ADA-oikeudellista asiaa suljettiin molemmat ilman tuomioistuinkäsittelyä ehdoin, jotka yritys kuvaili vuotuisissa ilmoituksissaan epäolennaisiksi. Tuotteen säilyvyys avustavan teknologian käyttäjäsegmentissä — segmentissä, jonka Maya oli tunnistanut rahoitusmyyntihetkellä — oli kaventunut 1,8-kertaisesta vaihtuvuussuhteesta koko perustaan nähden noin 1,15-kertaiseksi. Rahoitus kirjasi eron. Maya ei kertonut mikä luku oli.

Hän kirjasi myös asioita, jotka eivät näy laskentataulukossa. Natiivi iOS-sovelluksen VoiceOver-rootori-tuki, joka oli ollut kuuluisasti rikki vuosien ajan, tuli — riippumattomassa auditoinnissa vuoden 2025 alussa — yhdeksi sektorinsa parhaiten toimivista. Korkean kontrastin teema, jota Maya oli ajanut bränditiimin vastalauseiden yli, tuli oletukseksi alueilla, joissa paikalliset sääntelijät alkoivat valvoa EAA:ta. Suunnittelujärjestelmän dokumentaatiosivusto, jota katsottiin noin 4 000 kertaa kuukaudessa vuoden 2022 alussa, keräsi noin 38 000 kuukausittaista sivunlatausta vuoden 2025 puolivälissä. Käytäntö oli rakennettu; se eläisi hänen toimikautensa jälkeenkin.

Mitä hän kertoo pienempien organisaatioiden suunnittelijoille

Vuoteen 2025 mennessä Maya teki vähemmän tehohoidon vuoroja omassa tuotteessaan ja enemmän neuvontatyötä suunnittelijoille yrityksissä, jotka olivat kokoaan pienempiä suuruusluokaltaan — kahdenkymmenen hengen tuotetiimejä, viidenkymmentä hengen tuotetiimejä, sellaisen organisaation kokoa, jossa yksittäisestä suunnittelijasta tulee automaattisesti saavutettavuuden vastuuhenkilö. Hänellä oli pieni joukko asioita, joita hän sanoi jokaisessa kahvitapaamisessa. Ne kannattaa listata.

Ensimmäinen. Valitusvirta on vipuvarsi. Miljoonan käyttäjän ei tarvita valitusvirran saamiseksi; tarvitaan tukipostilaatikko ja halu lukea se. Tulosta tiketit. Laita ne mappiin. Vie mappi kokoukseen. Mappi toimii.

Toinen. Rahoitustapauksessa on kolme saraketta. Oikeudellinen altistuminen, markkinamahdollisuus ja valitusmäärä. Eksakteja lukuja ei tarvita millään kolmesta. Tarvitaan se, että sama henkilö näkee kaikki kolme samassa paikassa, koska yksikään sarake yksin ei kanna huonetta.

Kolmas. Perustukset ennen komponentteja, komponentit ennen malleja. Tiimi, joka aloittaa komponenttien uudelleenkirjoittamisella, viettää vuoden sen tekemiseen ja saapuu kauniilla komponenttikirjastolla epäsemantttisen väripaletin päälle, ja seuraava suunnittelija kirjoittaa kaiken uudelleen.

Neljäs. Neuvottele veto. Yksittäinen suurin vipupiste monistiimisessä tuotteyrityksessä on kyky sanoa “tämä uusi komponentti ei lähde ennen kuin se läpäisee tarkistuslistan.” Kahdesti kahdessa vuodessa käytetty veto on riittävä. Se on vedon uskottavuus, ei sen frekvenssi, joka tekee työn.

Viides. Palkkaa tutkija, jolla on kokemusta vammaisyhteisön rekrytoinnista. Yksittäinen rivi, jota Maya puolustaisivat kovimmin ohjelmansa budjetissa, oli tutkijan paikka. Ilman vammaisia käyttäjiä silmukassa työ on teatteria.

Kuudes. Vanhojen komponenttien kello on neuvottelematon. Siirtymiset ilman kelloa eivät tapahdu. Siirtymiset kellon kanssa tapahtuvat sen tahdilla kuin kello sallii.

Seitsemäs. Ota voitto ja lähde. Maya astui pois ohjelmasta Q1 2025:ssä ja siirtyi neuvonantajaksi. Saavutettavuusohjelman perustaja on väärä henkilö johtamaan sitä vakiintuneessa tilassa. Perustajan tehtävä on saada ohjelma olemaan. Vakiintuneen tilan tehtävä on olla tylsä. Eri temperamentti; eri henkilö.

Huomio mapista

Maya pitää edelleen mappia. Hän tuo sen esiin konferensseissa joskus, kun vanhempi suunnittelija kysyy häneltä — yleensä hämillään, usein paneelikeskustelun jälkeen — mitä tehdä omille neljälle kymmenelle yhdelle avoimelle tiketille. Mappi on puoli tuumaa paksu. Kannessa oleva tarra sanoo, käsintehtyyn sans-serif-fonttiin, jonka Maya osti käsityökaupasta vuonna 2022: “Päivä Yksi”. Siinä olevat 41 tikettiä on kaikki suljettu. Tiketin jättäneiden henkilöiden nimet on peitetty mustalla tussilla. Hän ei näytä nimiä. Hän näyttää sivut ja sanoo: tältä työ näyttää, ja tästä se alkaa.