Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 60 — Final: A11y Mindset & Next Steps

Đã đọc 0/15 mục · còn khoảng 12 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Mở đầu — vì sao bài này quan trọng

Bạn đã đi qua một hành trình dài. Từ những khái niệm nền tảng như POUR và WCAG, qua semantic HTML, ARIA, color contrast, keyboard navigation, screen reader, cho tới các component phức tạp như modal, combobox, tooltip, rồi cả testing, design system, pháp lý, và AI. Đó là rất nhiều kiến thức kỹ thuật. Nhưng nếu bài học cuối cùng này mà tôi chỉ tóm tắt lại kỹ thuật, thì tôi đã thất bại với vai trò mentor của mình.

Bởi vì sự thật phũ phàng là thế này: kỹ thuật không phải thứ khiến accessibility (a11y) thất bại trong đa số công ty. Tôi đã chứng kiến hàng chục đội ngũ biết chính xác cách viết một aria-label đúng, cách kiểm tra contrast, cách test bằng NVDA — nhưng sản phẩm của họ vẫn không tiếp cận được. Vấn đề không nằm ở việc họ không biết làm thế nào. Vấn đề nằm ở mindset — cách họ nghĩ về accessibility, thời điểm họ nghĩ tới nó, và ai họ cho là "người dùng thật".

Bài học cuối cùng này không dạy thêm code. Nó dạy bạn cách suy nghĩ để tất cả những gì bạn đã học không bị lãng quên sau khi đóng khóa học. Nó là tấm bản đồ để bạn đi tiếp — một mình, trong một công ty thật, với deadline thật, với những đồng nghiệp chưa từng nghe tới WCAG. Đây là phần biến bạn từ "người biết về a11y" thành "người thực sự thay đổi được sản phẩm".

Khái niệm cốt lõi

1. "Accessibility không phải tùy chọn" — nó là baseline

Hãy đặt a11y đúng chỗ của nó trong đầu bạn. Nó nằm chung nhóm với security, performance và usability — những thứ không ai đặt câu hỏi "có nên làm không". Không ai họp và hỏi "lần này mình có nên mã hóa mật khẩu không?" Không ai debate "trang này có cần load dưới 5 giây không?". Đó là baseline — mức tối thiểu để sản phẩm được coi là hoàn thành.

Accessibility phải nằm cùng nhóm đó. Khi ai đó nói "phase 2 mình sẽ làm a11y", họ đang nói điều tương đương với "phase 2 mình sẽ làm bảo mật". Nghe là thấy sai. Mindset shift đầu tiên và quan trọng nhất: a11y là điều kiện để định nghĩa "xong", không phải một tính năng cộng thêm.

2. "Khuyết tật là một phổ, không phải một nhóm nhỏ"

Nhiều người hình dung người khuyết tật là một nhóm nhỏ, cố định — người mù, người điếc — và nghĩ "chắc chỉ 1-2% người dùng của mình". Đây là hiểu lầm nguy hiểm nhất.

Khuyết tật là một phổ (spectrum) và phần lớn là tạm thời hoặc theo hoàn cảnh (situational). Người gãy tay dùng chuột một tay. Người bế con nên chỉ có một tay rảnh. Người đứng ngoài nắng nhìn màn hình không rõ vì contrast kém. Người trong quán cà phê ồn ào cần phụ đề video. Người lớn tuổi mắt mờ dần theo tuổi. Người mệt, người say tàu xe, người dùng điện thoại đời cũ mạng chậm.

Khi bạn làm a11y tốt, bạn không phục vụ 2% — bạn nâng chất lượng cho 100% người dùng trong những khoảnh khắc họ yếu thế nhất. Đây là "curb-cut effect": vỉa hè hạ thấp làm cho xe lăn ban đầu, nhưng người kéo vali, đẩy xe nôi, giao hàng đều hưởng lợi.

3. "Shift left" — chuyển a11y về đầu quy trình

Chi phí sửa một lỗi a11y tăng theo cấp số nhân theo thời gian phát hiện. Một quyết định về color palette sai ở khâu design tốn 10 phút để sửa. Cũng lỗi đó, phát hiện sau khi ship, có thể tốn cả một sprint để refactor toàn bộ design system. Mindset "shift left" nghĩa là: đưa a11y vào từ khâu research, persona, wireframe, chứ không phải chờ tới lúc QA hay tệ hơn là chờ khách hàng khiếu nại.

4. "Perfect is the enemy of done" — tiến bộ hơn hoàn hảo

Đây là mindset cân bằng lại ba cái trên. Nhiều người mới học a11y bị tê liệt vì thấy WCAG có hàng trăm tiêu chí. Đừng. Một trang web đạt 80% a11y hôm nay tốt hơn một kế hoạch hoàn hảo mãi không launch. Hãy fix cái ảnh hưởng nhiều người nhất trước (keyboard trap, contrast, form không có label), rồi cải thiện dần. A11y là hành trình liên tục, không phải cột mốc một lần.

5. Bạn là người ủng hộ (advocate), không chỉ người thực thi

Kỹ năng quan trọng nhất từ giờ trở đi không phải code — mà là thuyết phục. Bạn sẽ phải giải thích cho PM tại sao cần thêm thời gian, cho designer tại sao màu thương hiệu cần điều chỉnh, cho sếp tại sao đây là rủi ro pháp lý và kinh doanh. Ngôn ngữ của kỹ sư (WCAG 2.1 SC 1.4.3) không thuyết phục được business. Ngôn ngữ của rủi ro, doanh thu và người dùng thật thì có.

Tình huống thực tế

Ví dụ 1 — Tiki và "curb-cut effect" trong thực tế

Giả định một đội sản phẩm ở một sàn thương mại điện tử lớn của Việt Nam (tương tự Tiki) quyết định làm lại luồng thanh toán để đạt chuẩn a11y: thêm label rõ ràng cho mọi ô nhập, thông báo lỗi gắn với đúng field, nút bấm đủ lớn (48x48px), và thứ tự focus hợp lý.

Mục tiêu ban đầu chỉ là "hỗ trợ người dùng screen reader". Nhưng sau khi ship, đội đo lường và phát hiện điều bất ngờ: tỷ lệ hoàn tất thanh toán trên mobile tăng, và số ticket hỗ trợ về "không biết điền gì" giảm. Lý do? Những cải tiến đó giúp tất cả người dùng — người lớn tuổi mua hàng cho con cháu, người điền form khi đang di chuyển trên xe buýt xóc nảy, người mắt kém.

Bài học: a11y không phải chi phí từ thiện, nó là đầu tư vào conversion và giảm chi phí vận hành. Khi bạn đi thuyết phục business, hãy nói ngôn ngữ này — "form dễ tiếp cận hơn = ít người bỏ giỏ hàng hơn".

Ví dụ 2 — Vụ kiện Domino's Pizza và cái giá của "phase 2"

Đây là câu chuyện có thật và kinh điển. Domino's Pizza (Mỹ) bị một người dùng khiếm thị, ông Guillermo Robles, kiện vì website và app của họ không dùng được với screen reader — ông không thể đặt một chiếc pizza mà lẽ ra ai cũng đặt được. Domino's kháng cáo lên tận Tối cao Pháp viện Mỹ năm 2019, lập luận rằng luật ADA không nên áp dụng cho website. Tòa án từ chối xem xét kháng cáo, để nguyên phán quyết bất lợi cho Domino's.

Kết quả: một công ty tỷ đô tiêu tốn nhiều năm và chi phí pháp lý khổng lồ cho một vấn đề mà nếu làm đúng từ đầu chỉ tốn vài ngày công của lập trình viên. Đây chính là "shift left" bằng máu và tiền thật.

Bài học: với các công ty Việt Nam đang mở rộng ra thị trường quốc tế (EU với European Accessibility Act có hiệu lực 2025, Mỹ với ADA), a11y không còn là chuyện "làm cho đẹp" — nó là rủi ro pháp lý trực tiếp. Nếu bạn là người duy nhất trong đội hiểu điều này, việc lên tiếng của bạn có thể tiết kiệm cho công ty hàng tỷ đồng.

Ví dụ 3 — Người kỹ sư đơn độc ở một startup fintech

Một bạn học viên (gọi là Minh) làm frontend ở một startup ví điện tử tại TP.HCM, khoảng 15 người, không ai từng nghe tới WCAG. Minh vừa học xong a11y và rất máu, đề xuất "mình phải audit toàn bộ và fix hết". PM gạt đi: "không có thời gian, để sau".

Thay vì bỏ cuộc, Minh đổi chiến thuật — đúng theo mindset advocate. Anh không đòi làm hết. Anh chọn một thứ đau nhất: màn hình xác nhận chuyển tiền có contrast quá thấp và không đọc được số tiền bằng screen reader. Anh quay một video 90 giây bật VoiceOver trên iPhone, cho cả đội thấy trải nghiệm "chuyển tiền mà không nghe được mình chuyển bao nhiêu" đáng sợ thế nào với một fintech. PM đồng ý fix ngay. Từ chiến thắng nhỏ đó, Minh cài axe DevTools vào quy trình review, rồi dần thêm a11y vào "definition of done".

Bài học: đừng cố ăn cả con voi trong một lần. Chọn một chiến thắng nhỏ, có sức nặng cảm xúc, chứng minh giá trị, rồi mở rộng. Văn hóa a11y được xây từ những chiến thắng nhỏ liên tiếp, không phải từ một bản memo hoành tráng.

Hướng dẫn từng bước

Đây là lộ trình 90 ngày để bạn biến kiến thức khóa học thành thay đổi thật ở nơi làm việc.

Bước 1 — Tự audit bản thân trước (tuần 1). Lấy chính sản phẩm bạn đang làm, chạy một audit nhanh: keyboard-only navigation, một extension như axe/WAVE, và 5 phút với screen reader. Ghi lại 5-10 lỗi rõ ràng nhất. Đừng công bố vội — bạn cần dữ liệu trước khi mở miệng.

Bước 2 — Chọn một "chiến thắng nhỏ" (tuần 2). Từ danh sách lỗi, chọn một lỗi (a) ảnh hưởng nhiều người, (b) dễ fix, (c) dễ demo cảm xúc. Fix nó, hoặc chuẩn bị đề xuất fix kèm bằng chứng.

Bước 3 — Nói ngôn ngữ của người nghe (tuần 3). Khi trình bày, dịch WCAG sang ngôn ngữ business: rủi ro pháp lý, số người dùng bị ảnh hưởng, tác động tới conversion/support ticket. Với designer, nói về trải nghiệm; với PM, nói về metric; với sếp, nói về rủi ro và tiền.

Bước 4 — Đưa a11y vào quy trình, không phải trí nhớ (tuần 4-8). Ý chí cá nhân sẽ hết pin. Hãy gắn a11y vào chỗ nó tự chạy: thêm mục a11y vào PR checklist, cài linter (eslint-plugin-jsx-a11y), thêm axe vào CI, thêm dòng a11y vào Definition of Done. Khi nó nằm trong quy trình, nó tồn tại kể cả khi bạn nghỉ.

Bước 5 — Xây liên minh (tuần 8-12). Bạn không thể làm một mình mãi. Tìm một designer, một PM, một QA cùng quan tâm. Chia sẻ tài nguyên, tổ chức một buổi lunch-and-learn 30 phút. A11y bền vững khi nó là văn hóa nhóm, không phải sở thích của một người.

Bước 6 — Tiếp tục học và kết nối (liên tục). Đọc WebAIM, A11y Project, theo dõi các chuyên gia, tham gia cộng đồng (kể cả nhóm Việt Nam về a11y). Tiêu chuẩn và công cụ thay đổi liên tục — mindset học suốt đời là điều duy nhất không lỗi thời.

Lỗi thường gặp & mẹo

Lỗi 1 — "Overlay widget" giải quyết tất cả. Nhiều công ty bị dụ mua các plugin "accessibility overlay" (như AccessiBe) hứa hẹn fix a11y bằng một dòng script. Cộng đồng a11y và cả người dùng khuyết tật đã phản đối mạnh mẽ những công cụ này vì chúng thường phá vỡ screen reader và tạo cảm giác an toàn giả. Mẹo: a11y thật đến từ code và design đúng, không có nút thần kỳ.

Lỗi 2 — Chờ hoàn hảo rồi mới bắt đầu. Bị tê liệt vì hàng trăm tiêu chí WCAG. Mẹo: fix cái ảnh hưởng nhiều người nhất trước, chấp nhận tiến bộ dần. 80% hôm nay hơn 100% không bao giờ.

Lỗi 3 — Chỉ tin vào công cụ tự động. Các tool tự động chỉ bắt được khoảng 30-40% lỗi WCAG. Chúng không biết alt text có nghĩa hay không, thứ tự focus có logic không. Mẹo: luôn kết hợp automated + manual (keyboard + screen reader) + người dùng thật.

Lỗi 4 — Làm a11y trong im lặng. Bạn fix nhưng không ai biết, không đưa vào quy trình, và người tiếp theo lại phá vỡ nó. Mẹo: mọi cải tiến a11y phải để lại dấu vết trong quy trình (checklist, CI, tài liệu) để nó không bị hồi quy.

Lỗi 5 — Nói ngôn ngữ kỹ thuật với người không phải kỹ sư. "Cái này vi phạm SC 2.4.7" — không ai ngoài bạn quan tâm. Mẹo: luôn dịch sang tác động con người, tiền bạc, hoặc pháp lý.

Mẹo vàng — Ưu tiên trải nghiệm thật hơn điểm số. Đừng săn "điểm Lighthouse 100". Một trang 100 điểm vẫn có thể dùng rất tệ với người thật. Mục tiêu cuối là người dùng làm được việc của họ, không phải con số đẹp.

Bài tập thực hành

  • Bản kiểm kê mindset của chính bạn. Viết ra 5 mindset shift trong bài này và tự chấm điểm 1-5 xem hiện tại bạn (và đội của bạn) đang ở đâu với từng cái. Với 2 điểm thấp nhất, viết một hành động cụ thể để cải thiện trong 30 ngày tới.
  • Kịch bản thuyết phục. Tưởng tượng PM nói: "Chúng ta không có thời gian cho a11y sprint này". Viết ra câu trả lời của bạn trong 3 phiên bản: nói với PM (ngôn ngữ metric), nói với designer (ngôn ngữ trải nghiệm), nói với CEO (ngôn ngữ rủi ro/tiền). Mỗi phiên bản tối đa 4 câu.
  • Chọn chiến thắng nhỏ của bạn. Lấy một sản phẩm thật bạn đang làm (hoặc một website Việt Nam bạn hay dùng). Audit nhanh 15 phút, tìm ra một lỗi a11y đáng để đấu tranh nhất. Viết một đoạn 150 từ giải thích tại sao chọn nó và bạn sẽ demo tác động cảm xúc của nó thế nào.
  • Thiết kế lộ trình 90 ngày cá nhân. Dựa trên phần "Hướng dẫn từng bước", viết lộ trình 90 ngày riêng cho bối cảnh công ty bạn: bạn sẽ audit gì, chọn chiến thắng nào, gắn a11y vào quy trình ở đâu, kéo ai vào liên minh.

Tóm tắt

Chúng ta khép lại khóa học không bằng một dòng code, mà bằng một cách nghĩ. Hãy mang theo năm điều này:

  • A11y là baseline, không phải tùy chọn — nó ngang hàng security, performance, usability. "Phase 2 làm a11y" cũng vô lý như "phase 2 làm bảo mật".
  • Khuyết tật là một phổ — phần lớn là tạm thời và theo hoàn cảnh. Làm a11y tốt là nâng chất lượng cho tất cả mọi người ở khoảnh khắc họ yếu thế nhất (curb-cut effect).
  • Shift left — đưa a11y về đầu quy trình; sửa sớm rẻ hơn sửa muộn hàng chục lần (bài học Domino's).
  • Tiến bộ hơn hoàn hảo — đừng để hàng trăm tiêu chí làm bạn tê liệt; fix cái quan trọng nhất trước và cải thiện liên tục.
  • Bạn là advocate — kỹ năng quyết định giờ là thuyết phục và xây văn hóa, không chỉ viết code. Thắng bằng những chiến thắng nhỏ, gắn a11y vào quy trình, và xây liên minh.
Bạn bắt đầu khóa học này để biết cách làm accessibility. Bạn kết thúc nó với một trách nhiệm lớn hơn: trở thành người khiến accessibility xảy ra ở những nơi nó vốn không tồn tại. Kiến thức của bạn giờ là một lợi thế hiếm — rất ít người trong ngành thực sự hiểu và quan tâm điều này. Hãy dùng nó tử tế. Mỗi lỗi bạn fix, mỗi cuộc tranh luận bạn thắng, là một người thật đâu đó vừa được dùng sản phẩm mà trước đây họ bị chặn ngoài cửa. Đó là công việc đáng làm. Chúc bạn đi xa.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi