事后改造成本远高于设计期纳入
别名: 事后改造 · shift-left accessibility · 设计期纳入
概念解释
组件库在第一天就给出名称、焦点和键盘行为,后面每个屏幕是在复用。等上线后再把自绘控件补进无障碍树,面对的是已经分叉的实现、失效的测试、忘掉的产品决策。事后改造成本远高于设计期纳入(accessibility retrofit cost)比的是同一条能力在两个时机的总账:设计期是约束,改造期是翻工——含回归、培训、沟通和已经流失的用户,不只是多写几个属性。
机制
设计期把约束放进共享层,边际成本接近「多个状态」。事后每个画面都是特例:自定义下拉、画布内热区、动画里的焦点,要逐个逆向工程。第二层是贵的往往不是补一段替代文本,而是把交互模型从「只有指针说得通」扳回来——每一次扳动都要重写状态机、重教团队、把已经按旧模型写的功能再测一遍。时间还会放大账单:人走了、文档没了、第三方控件的合同锁死了版本。
怎么研究
按缺陷来源阶段记账:设计期纳入的组件级修复工时,对上线后同类问题在 n 个屏幕上的修复工时加回归。分类哪些账单是「改文案」,哪些是「改交互模型」。不要编造跨行业的倍数;只比较本产品两条时间线。
自变量:能力进入共享组件的时机(设计期 / 上线后)。 因变量:人时、回归轮次、涉及屏幕数、因改造而延期的发布数。
物理设施的加装账单不能直接搬到软件——软件没有坡道几何,但有组件扩散和状态机翻工,要分开报。
边界
对比度、替代文本、字幕轨这类表层项,事后补相对便宜,不能拿来否定整条成本差,也不能假装它们代表改造的全部。十年遗留系统上,「设计期」已经过去,比较的是下一次改版纳入还是再拖一年,不是回到立项日。有些改造被法规或诉讼突然触发,预算形态不同于自愿重构。内部工具用户少,绝对值可能不高,但单用户成本仍然符合「越晚越贵」。
怎么落地
- 新组件未提供名称、角色、焦点和键盘行为,不准合入共享库。
- 估算改造时把回归和涉及屏幕数写进账单,不要只估「加 aria 的小时数」。
- 改版窗口(设计系统升级、结账重做)强制搭载无障碍,避免单独立项等预算。
- 验证:选一个已上线的自定义控件,列出它出现的屏幕数 × 补齐键盘与名称的工时,对比把它做成库组件时的工时。差距写进下一次设计评审,作为「现在做还是以后做」的依据。