返回社区

战胜癌症,投身无障碍倡导

当你收到改变人生的消息或信息时,会发生什么?你会如何回应?又如何消化?来听听 DJ 讲述他在得知自己被诊断出癌症后,是如何重新调整心态的。

在 Youtube 上观看
时长 49分钟

Jonathan:好的,DJ,欢迎来到本周的 Exercism 播客。非常高兴你能来。我们现在坐在哈勒姆,Haarlem,大家都这么念,要是我念错了你就纠正我。这个名字你本来应该念得出来。好,我再试一次。

DJ:好,我们是哪三个音来着?好,Harlem。里面没有 G。好,Harlem,Harlem。好,Harlem。

Jonathan:Haageslach,吃着郁金香长大的。麻烦的就是那个喉音 G,我怎么都发不好。

DJ:可 Harlem 里根本没有 G 啊,是 H。

Jonathan:对,是那个 R。行,这次我是从这个角度说的。不过真的很高兴你能来上今天的节目。你跟 Exercism 打交道有不少年头了吧。我是说,你参与进来大概有多少年了?

DJ:我其实不记得第一次……第一次我想着,哦,我要去烦人、去抱怨。我从 Exercism 第一个版本就在了。我记得,好像是圣诞节前后,那时我在找些练习来做。然后我发现了它,注册了账号,接着就没再用。后来有了 V2,这个我记得很清楚。不过我想大概有三四年了吧。真正开始想“哦,我要去帮点忙,我要告诉别人我觉得他们哪里做错了”,大概是四年前。然后我会去把它修好。对。

Jonathan:修好之后再说。对。那从技术的角度讲,Exercism 显然是你进入科技行业比较后期才遇到的吧?

DJ:对,我肯定不是用它来学一门新编程语言的。一开始它对我来说就是那种忙碌、忙碌的活儿。你知道,就跟有些人觉得打扫卫生特别解压一样。我当时工作很忙,于是就决定再做点别的事。因为你知道,手头本来就已经一堆事了。所以我在找练习,我做过 Codewars,做过 HackerRank 那些东西,然后发现了 Exercism。我喜欢 Exercism 的地方在于,那里有你在别处找不到的新练习。它没有那种“把代码打得多短”或者“跑得多快”的要求,而是纯粹看你能不能用自己喜欢的方式把练习做出来。很酷。而且额外的好处是,你可以用多种语言来做。对我来说是这样:我上过大学,学的是计算机科学,但我选这个只是因为不知道自己想干什么。我什么都想干,我父母开了家玩具店,当时经济不景气,生意越来越差。所以我想我得做点什么。

Jonathan:那大概是哪一年?你说的是……危机是哪年?2008?2009?那就是那会儿。好。

DJ:危机是哪年?美国那场危机?2008、2009 年。就是那时候。对,没错。我现在 31 岁。我 17 岁开始上大学,所以差不多就是那段时间。而且我当时已经在一家 ICT 公司工作了。你试过把它关掉再打开吗?没有。没有。

Jonathan:没有,没有。对,对,坏了就重新打开嘛。

DJ:对,所以在企业里工作的人都知道,办公室里电脑最常见的问题就是没插电。所以你看,我在一家 ICT 公司、一家 IT 公司工作,他们也做一些编程。但我决定,既然我要上大学,又得养活自己,因为我父母的玩具店因为全球危机生意不好,那我最好做点自己已经会做的事。于是我就报了计算机科学。

Jonathan:这差不多就接到现在了。对。当时是在荷兰吗?对,对。在代尔夫特理工大学。好。

DJ:对,对,是在代尔夫特理工大学。我那时 17 岁,刚开始学计算机科学时我真的很喜欢。学了大概七个月,然后我没有退学,但我得了癌症。所以我离开了大学。等我回去的时候,学校对我很不好办。课程体系变了,他们不太愿意让我选修一些二年级和三年级的课,说我是“酒喝多了”。我说,其实我是在跟死亡搏斗,不过还是谢谢你。所以我决定改去工作。于是我只做自己真正想做的项目。那就是我接触 Java 之类语言的开始。还有一些 C、Haskell、Prolog,不同课程涉及很多不同主题。但在工作中,我用的是 C#。

Jonathan:她……

DJ:我年轻的时候就会 Ruby,那时我想当游戏开发者,因为据说那是做游戏该用的语言。其实并不是,但当时是。

Jonathan:那你最初是怎么对科技产生兴趣的?从很小的时候开始?显然你经历了父母开玩具店、然后经济衰退这些事。但在此之前的某个时刻,应该有个让你觉得“这个有意思”的瞬间吧。

DJ:对,大概是我 12 岁的时候。其实更早,从我很小的时候就开始了。我小的时候还没有 Windows 95,那时候是 MS-DOS。我妈妈会给我父母开的那家印刷公司记账。他们在开玩具店之前开过一家印刷公司。她用 Xact 记账,那是一款很常见的会计软件。它跑在 MS-DOS 上。界面看起来就像你在电影里看到黑客操作的那种,对吧?就是那种绿屏,像《黑客帝国》里的屏幕。后来稍微变成白色的了。看起来特别有意思。我喜欢在里面乱点,把她做好的账全毁了。她特别烦这个。我爸爸年轻时,其实是城里为数不多拥有刻录机的人之一。所以在他那一代,他是最早……

Jonathan:就是《黑客帝国》那种屏幕,一行行往下掉的。

DJ:拥有这种设备的人之一。他会帮别人复制数据、刻盘。所以他算是喜欢电脑的。家里有几台这类小玩意儿,但也仅此而已。我没有游戏电脑。我从小家里也没有电视机。我参加过童子军,还做过竞技帆船。但到我 12 岁时,我确实有了一台电脑。它很慢。就是那种电脑,年纪稍大一点的人知道我在说什么。它有个 turbo 按钮。我想我记得你聊过这个。你一按下去,电脑就真的发出“嗡”的一声,然后跑得更快了。

Jonathan:你家电费也涨了不少。然后我就玩《过山车大亨》。哦对。玩了很多。你玩到哪儿了?

DJ:对!涨了不少。所以我玩《过山车大亨》。哦对,玩了很多。那台电脑慢到什么程度呢,有个关卡,我记得是某个资料片里的,好像叫 Arid Heights。那是第一个不用花钱就能玩的关卡。我花了大概四个月才通关。太不可思议了。现在用我的电脑,估计一个小时就能搞定。但当时就是那么慢。不过那很棒,特别棒,我很喜欢。

Jonathan:太厉害了。那可是最棒的游戏之一。

DJ:对,对。它也让我真的想去搞游戏开发。倒不是因为我喜欢编程,我只是喜欢玩游戏。所以从 12 岁到 18 岁之间,我拿 RPG Maker 折腾过一阵子。那个……我想它是日本的,反正是个被翻译成面向国际、主要是美国受众的程序,你可以用它做 RPG。它基本就是点击操作,整个事件系统都有界面,但底层的编程语言是 Ruby。整套脚本语言是 RGSS,就是 Ruby Game Scripting System 之类的。所以你可以通过改脚本里的坐标,把内置的那些界面,比如菜单,在屏幕上挪来挪去,因为这些脚本是公开的。那就是我做的第一件事。我把界面挪来挪去,感觉自己特别有成就感。你没有一点编程基础也照样能玩。对,我见过。我是说,我当时一点编程都不懂。你就是看到一些数字,明白那是屏幕上的坐标,把它们改一改,屏幕上的界面就变了,特别爽。

Jonathan:那你就是高手了。我是说,资深。对,资深。所以屏幕上发生的事和你要做的操作之间,联系还挺直接的。几乎是即时的。你能马上看到结果。

DJ:你能几乎立刻看到结果,对吧?这也正说明了为什么有些人认为,教初学者入门用解释型语言更好。就是因为有即时反馈。在那之后,我又去做过一些更复杂的系统。有人做了树叶在屏幕上飘动的图形,我就写了个小脚本,让那片叶子真的动起来,在屏幕上飘来飘去。虽然我当时才 14 岁,但大家都认识我的网名。我觉得那个网名挺讲究的,就是我的名字后面加个商标符号。别人想称呼我时特别别扭,因为他们说的其实是指我,这倒挺爽。年纪再大一点,我发现编程本身只是好玩,但并没有到“哦,我这辈子就要干这个”的程度。我那时想当外科医生,想当宇航员,还想去做药物设计。结果没有,都是机缘巧合。所以到我 17 岁上大学前在那家 ICT 公司工作时,我算是有点编程知识了,但并没有想成为程序员。也没有“哦,硅谷是我见过最酷的东西”那种感觉。我只是……

Jonathan:……让它在屏幕上飘。它只是你的一部分,或者说是你本来的样子。也是我赚钱的一种方式。对。

DJ:那是我赚钱的一种方式。对,那就是份工作。直到我真的上了大学、真的去上了那些课,我才意识到自己很擅长这个。这还惹得一些同学不爽,他们特别不喜欢我迟到老半天进来,成绩还是比他们高。

Jonathan:你觉得你当时在大学里之所以那么行,一部分是因为那些内容早就放在你脑子里、已经内化了很多年?你觉得这是个因素,还是说你天生就对它敏感?就是有天赋,一看就懂。正好有……

DJ:正好有相关的研究。我记不得那篇论文的名字,连研究者的名字也记不得。但他们研究过……是不是世界上每个人都能成为程序员。记得几年前有一股大潮流,说人人都该学编程吗?他们发现,人基本上分成两类:一类能理解,一类不能。这没关系。他们觉得把这个结论说出来很重要。其实那并不是研究的目标,但那是结论。他们觉得有必要把结论讲清楚,因为这意味着,你学不会并不代表你笨,只是说明理解那些逻辑结构需要某种东西。所以这跟知识无关。你见过它多少次?或者你对这门语言了解多少?这纯粹是,你能不能建立起让一切豁然开朗的思维模型。他们发现,有人能,有人不能。而且两类人中,投入的时间不同,熟练程度也各不相同。我觉得很多事都是这样。我很喜欢做饭,但我厨艺变好只是因为花了很多时间在里面。对。所以你去多试。我觉得这确实有技巧的成分,因为我认识一些人,很要好的朋友,他们试过做饭。对。关于这个我就说这么多。因为如果你正在听,你自己心里清楚。这不是他们的错。有一部分东西我觉得是天生的,有一部分是后天学来的。我觉得编程也一样。我早先折腾过编程,这有用吗?当然,百分之百。这就像一个人学乐器,但他已经会看谱了,那肯定有帮助。它未必给你天大的好处,但确实帮到了我。不过很大一部分原因也是我已经靠它赚钱了。所以我当时在……

Jonathan:关于这个我就说这么多。百分之百,百分之百,百分之百。那你在大学期间,除了读书是不是也靠做东西赚钱?就像是两边同时进行。

DJ:对,是这样。我基本上是学习加工作,加起来一周大约 60 个小时。然后还要出去玩。

Jonathan:所以你不知怎么把一周变成了 270 个小时。对,不知怎么变的。对,对,对。

DJ:不知怎么变的。对,就是不知怎么变的。对,对。我很擅长只睡很少的觉。我也不宿醉,到现在都是,顶多就是累,仅此而已。所以这对我来说很合适。荷兰语里有句话叫 studeren is leren combineren,意思是学习就是懂得如何把不同的事情组合起来的艺术。对我来说,尤其是这样,这话非常贴切。

Jonathan:然后你刚才讲癌症那段提到了一个很有意思的点。你在上大学,然后这事就突然来了。对。猝不及防,就是这样。

DJ:对,那天挺震惊的。震惊归震惊,但我其实很平静。被诊断出癌症,对很多人来说是个很漫长的过程。不是说你去看医生,他告诉你“你有癌症”,这种事从来不会发生。你去医院,做各种检查,医生一直都提心吊胆。等你经历过一次之后,你就知道该留意哪些表情了,但在他们确定之前,他们不会告诉你你得了癌症。所以这是个很漫长的过程。有的人要几周,大多数人要几个月,还有些人要好几年才知道。而可怕的地方也在这里:如果他们不去查,那这东西就会要了你的命,因为你发现得太晚了。对我来说,我在医院里待了四个月、好几个月,最后他们终于告诉我说,对,你得的是淋巴瘤,这个那个,总之就是这些。我们不知道。我们能给你诊断,但没有预后。所以我们知道你得了什么,但不知道你还能活多久。我们知道情况不好,但不知道有多糟。就是这样。

Jonathan:所以等于同时告诉了我一切,又什么都没说。然后我说,好,那接下来怎么办?对。

DJ:然后我说,好,那接下来怎么办?对。告诉我这个消息的人对我的反应不太满意,他们觉得我没当回事。但我说,你告诉我你不知道该怎么做,那下一步呢?我觉得对我来说唯一真正改变的是,除了当然差不多有一年没法参赛之外,我不再对很多事情说不了。所以在得癌症之前,我工作、学习、出去玩;在那之后,我反而开始做得更多。你确实做得更多了。对。

Jonathan:你确实做得更多了。对。大多数人会说,好啦,慢下来,别这样了。

DJ:我不再存钱了,开始花钱,因为存着有什么意义?我要是死了,有人就会说,哦,他本来可以拿存下的那些钱做多少大事啊。现在年纪大了,也许那并不是最明智的决定,但当时我的前额叶皮层就是这么告诉我的,那会儿正处在青春期的尾巴,那就干吧。所以我到处旅行,拼命工作,想学什么就学什么,学的就是计算机科学,但我只上我被允许上、而且我想上的课。后来,我大一的一位助教搬去了斯坦福,那在加利福尼亚,是那几所顶尖大学之一。他说,你想帮我做一个暑期项目吗?因为我在这家初创公司工作。我说,行啊,特别自信,尽管我这辈子从没碰过 Android 编程。我有台 Android 手机,那是个 Android 项目。我在大学学过 Java,仅此而已。我说,行,行,交给我,我来做。我能得到什么?他说,我们付你 3000 美元,你必须在夏末之前完成。当时我和一个人在 RNM 同居,她在我生日那天出轨了,于是我打电话给我最好的朋友,她来自得克萨斯,她说,你刚满 21 岁,何不干脆过来?你有什么好失去的?正是如此。过来吧。于是我就去了。我飞过去,当我在得克萨斯时,那位助教说,嘿,看起来你在得州。

Jonathan:你有什么好失去的?没错。过来吧。我就需要这个。

DJ:我们可以让你飞过来。所以你不如先度完假,然后改签回程机票,过来和我们一起工作一阵子。于是我照做了。我的硅谷故事就是这么开始的。即使我当时已经在靠专业赚钱了,但那更多只是达到目的的手段,我就这样被拉进了加利福尼亚和工作里。我已经有自己的公司了,因为我……21 岁。

Jonathan:你 21 岁就在荷兰开了自己的公司?我开公司是为了税务原因。好。

DJ:我开公司是为了税务原因。当时我在那家 ICT 公司干活,但我希望编程的活不按雇员来做,因为当雇员赚不了多少钱。而且我还能享受不少税收优惠。所以我注册了一家公司,跟我的 ICT 老板说,喂,听我说,我想以这家公司的名义来做编程的活。他说,行,同意。我还会给你涨薪,因为那样你就不是雇员了。我说,太好了。所以我已经有那家公司了。因此我可以合法地拥有一家美国客户,因为我已经……或者你是转包出去然后……对,我把自己转包了出去。很棒,很棒。我基本上就这么干了四年,来回飞。

Jonathan:哦,你转包出去了。然后正是。所以你常驻荷兰?对。然后你飞过去,干点活,再回来?对,我在这边也会干活。

DJ:你回来,对,我也会在这边干活。所以我做一些远程的工作。但我会飞过去开会,你懂的,在那边建立起一种工作生活和经验。它完全取代了我原本想从大学得到的东西。所以我就不再去学校了。我是说,这大概在五年前结束。那时候我开始在这边雇人。所以公司做大了,不再只有我一个人。我跟一位大学朋友说,嘿,你想和我一起做这个项目吗?那个项目其实来自美国的一个客户。他说,行,我们干吧。我另一个最好的朋友,她其实被一家美国公司聘用了,所以我还是有理由飞过去看她,这很好。所以我会去拜访客户,开发新客户,然后飞回家,我们再一起干活。他们付我们美国的薪水。太爽了。而且不知道的人可能不了解,这边的物价低得多。所以……

Jonathan:是吗?我是说,这是……

DJ:你当时就在那一带?对,那真像开玩笑一样。比如说,我知道在荷兰我被惯坏了,这里有水果蔬菜,我们自己种很多,也从欧洲进口很多。但在市场上,半公斤,也就是 500 克草莓,如果是当季,你要付一到两欧元。在最贵的超市里,除了那些环保超市,当季大概 2.5 欧。不当季会涨到四五欧元。但我们就假设,为了讨论方便,算两欧。同样多的草莓,在帕罗奥图的 Molly Stone's,大概要 11 美元。你说真的?对。所以那真的……我觉得这是个很好的定价依据。我一个房间加一个卫生间,房租每月 3000 美元。太离谱了,根本不可持续。这也是为什么他们必须付那么高的薪水。

Jonathan:真的。

DJ:所以对,当你搬回这边,一段时间里还能拿同样的薪水,那就很棒。对,太爽了。后来我在这家公司里成长也到头了。但我从来没有真正意识到,哦对,我想做编程,或者我想当程序员。就只是我擅长这个,能靠它赚钱。后来我才开始喜欢上它。

Jonathan:所以现在你在科技圈、这个技术领域里。有一件事我想问你,也很想请你多讲讲,就是无障碍这个整体概念。现在我对它的含义算是有点摸黑。我知道这对你来说很在意,但请你多讲讲。

DJ:对,目前我主要做的是计算机程序,要么是给手机用的,也就是 app,要么是网站或网页应用,通常你在台式机、笔记本或任何能上网的设备上用浏览器来访问。无障碍就是让你做的东西具有包容性,让别人也能用上。它本质上跟编程没什么关系。我们谈起无障碍,会问:有没有方便轮椅进出的入口或卫生间?让空间更无障碍,就是让它更包容,让更多人能用。我觉得我经历过很多,多少其实很难量化,但我在全世界,包括这个国家,都遇到过种族歧视和无知带来的糟糕经历、负面经历。

Jonathan:我觉得。

DJ:其中大部分我都坚信是源于无知,但事情能夸张到我的手表、我的智能手表把皮肤烫伤,因为他们设计的时候没有考虑到肤色更深的人。所以当我去反映说皮肤上出现了一块印子,手表要么测不到我的心率,要么就把我烫伤时,他们的官方回复是:试着把它戴在里面,那里色素更少。那就是官方回应。你看我,别人可能看不出来,我的肤色像焦糖牛奶酱 Dolce de Leche 那种颜色。所以你知道我并不算很深的肤色,也不算很浅,刚好在中间。可我遇到过洗手液分配器不出洗手液。

Jonathan:那就是官方答复。那就是官方回应。

DJ:或者门打不开。好,真的吗?真的。你知道,这些事是让我烦,但都只是不方便而已。我身边没有视力受损到需要辅助工具的人。我身边没有聋人或者听障人士,但我能想象,如果他们的处境对这些事情存在负面……

Jonathan:好。

DJ:对他们生活造成的负面影响会是怎样,因为这本来就是这么回事,对吧?所以当我去研究这件事的时候,其实就是有天晚上我打开 Google,开始读 Mozilla 关于无障碍的页面,那上面确实有不少信息。我发现,作为 Web,主要是 Web,也包括 app 开发者,我们能为让东西更包容做的很多事情并不复杂。所谓不复杂,我是说几周前我做过一次演讲,展示了大概 15 分钟的工作所带来的差别,不,是让别人听完全无法使用的东西和不算太糟的东西之间的差别。所以那些公司说什么“哦,让东西无障碍要花很多钱、很多时间”,那只是借口。往好里想,是无知,但也是扯淡。

Jonathan:就是个借口。

DJ:确实就是。所以当我发现做起来很容易时,我就开始为它发声。

Jonathan:那给我举个例子,比如在 app 或网页浏览器里,随便举一个就行。

DJ:哦,最简单的例子。人们默认你有鼠标。也就是说,悬停状态,你在手机上根本没有悬停。这是大家最熟悉的东西,因为他们在手机上用网站,想看提示信息,却看不到,除非长按某个东西,因为长按才是手机上模拟悬停的方式。现在想象一下,你没有触摸设备,也没有鼠标,你用键盘。如果你用标准的网页元素,也就是 HTML,按它原本设计的方式去用,或者你用 Android 或 iOS app 该用的正确基础组件,或者你用 React Native 这类库,那就不会出问题。关键在于,比我聪明的人已经把这件事想了无数遍。到处都是文献,讲用标准能如何让所有人受益。但如果你没法用键盘浏览一个网站,那就意味着世界上有一部分人用不了你的网站。这很可惜,因为你做东西就是想让人用的。所以这跟要多干多少活无关,这完全关乎你想不想让你的作品被更多人用上,至少你应该想。我想你说的是……

Jonathan:所以我想你说的是,处理事情时更聪明一点,而不是非得……

DJ:我觉得一部分是教育问题。我是说,很多人不知道这是个问题,因为没人告诉过他们这是个问题。我发现人们抱怨这个特别容易,说哦,你应该、你应该、你应该把所有东西都做得无障碍。但如果你不知道……因为这个词太宽泛了。比如你说“把它做成无障碍的”……

Jonathan:因为这个词太宽泛了。比如你说“把它做成无障碍的”,那就像在问,你说的到底是什么意思?在这语境里它非常宽泛。超级宽泛。

DJ:在这语境里它非常宽泛。超级宽泛。它宽泛得难以置信。更糟的是,有些让东西无障碍的做法,反而会妨碍另一部分人使用。比如你视力不好或者失明,你很可能会用盲文显示屏,它把页面上看到的内容转成盲文,这很棒,很了不起。那它是怎么,它会生成那种……它是有触感的。好,所以是触感的。对,特别酷。就是一块能摸的触摸屏,会把内容显示成……盲文,还是……对,对,不,真的就是盲文,仅此而已。或者他们会用屏幕阅读器,把屏幕内容读出来,或者两者都用。很多人两者都用。这些人……

Jonathan:那它是怎么,它会生成那种……好?真的很酷,用盲文,就像,对,对,不,真的就是盲文。

DJ:就用不了这个产品,对吧?但如果你花功夫让他们能用,你可能会做这样的事,比如给图标加上说明。我们看到的图标,比如一个齿轮图标,我们觉得那是设置,你给它一个标签,说这是设置。这很好,因为现在他们能靠听或靠摸,感知到我们用眼睛能看到的东西。然而,接下来就是你需要知道的地方了,有些人会用语音指令来浏览页面。

Jonathan:比如一个齿轮图标。那像 Siri,这算个例子吗?嘿 Siri,打开 Sessence。

DJ:对,像 Siri。嘿 Siri,打开设置。对,正是。如果页面上可见的文字标签和你额外加的那个无障碍标签对不上,也就是开头文字不一样,而现在比较新的工具确实会做包容性处理,那它就点不了那个按钮。

Jonathan:那对于视力有困难的人来说,浏览的体验在这语境下就变成特别难受的事了?

DJ:对,在这些情况下,有一点很重要的是要明白,人们使用辅助技术的方式和我们预期的并不一样,对吧?一个人用屏幕阅读器,不代表他就是盲人。我有一个员工在累的时候会用它,因为这样他能保持专注。同样,有些人用语音指令,可能不是因为手不方便,而是因为在带孩子,或者在路上,人们使用这些工具的原因和它们的原始用途不一样,原因太多了,对吧?但不知道这些工具是怎么运作的,就很难为它们开发。所以我发现……我发现很多事情。其中之一是,我觉得很有意思,大学里花了大概零分钟讨论这个话题。大多数人都是这样。我聊过的大多数人,在学校里都没学过这些。

Jonathan:我是说,这大概是我第一次,说真的,我可能聊过这个话题。对,这个话题。我是说,它一直都在飘着。但真正具体的例子,我还真没怎么想过。对。你看,我妻子怀孕了,或者说怀过孕,现在有了孩子。对。那你双手就腾不出来了。正是。所以说。

DJ:正是。所以免提扬声器就很有用。这就是我们说的情境性障碍。障碍有不同的类别,对吧?有永久性障碍。比如你手被截掉了,你就没有手。但如果你扭伤了胳膊,或者手骨折了,那是临时性的。然后还有情境性障碍,也就是你双手占满了。所有这些人都希望东西能更无障碍。这不只是编程的事,任何事、世界上任何东西都是如此。但在编程里,这是我们可以影响的东西。所以第二点,也就是第一点是我们没有接受这方面的教育,对吧?第二点是,那些真正有资源投入这件事的大公司,做得很糟糕。总的来说,它们做得很糟。是的,有些很棒的团队,有些很棒的无障碍倡导者,你们自己心里清楚。确实有些大公司过去几年进步很大。但总的来说,这不是人们默认会去做的事。嗯。而确保网站能加载,却是他们会做的事。对。这才是人们真正在乎的事。

Jonathan:不过我觉得这很有意思,因为现在,围绕为无障碍做东西有一种负面情绪。我敢说,普遍的认知是,这是额外要多做的一件事。但其实如果你反过来看,说,这样做能让你的东西被更多人用到,整个局面就完全不同了。我很喜欢你讲到这一点,因为你说的时候,我感觉带着一种希望,就是,嘿,其实你可以让你的产品脱颖而出,因为你真的在让它更容易被更多人使用。

DJ:让它更容易被更多人使用。我觉得……我是不是有点太……这样说是不是有点矫情,有点傻?我觉得好的一面是,你能做到。对。这不是什么……你不需要是个火箭科学家。这很棒。不好的一面是,我们居然还在谈这个,它居然还是个例外。这很让人难过。真的很难过。但我确实希望,也确实在为让更多人意识到、进而关心这件事而努力。对。我被问得最多的一个问题是:好,DJ,你说服我了,但我怎么说服我的同事,怎么说服我的老板?

Jonathan:对。

DJ:作为一家公司、一个雇主,我们改了几件事。我们改的第一件事是,无障碍不收费。它不该出现在账单上,因为它本来就不该收费。

Jonathan:所以你是怎么,你把它算进工作范围里,你会说,好,我们照常开发你的 app,然后,好,你还想要额外的无障碍,就这样。

DJ:对,这很有意思。我们不那样做。你不会把无障碍像加动画那样额外塞进去。你不会事后再塞进设计,因为那样一来设计东西就变得非常难,对吧?所以我们现在做新东西,它就是无障碍的。这不是一个可选项。

Jonathan:可选项。所以它就是规格本身。对。它不是,不是一条。没有,没有。

DJ:它不是账单上的一条,也不是项目里的一项。客户要求的时候,我们有时候会把它列出来。他们说,能不能请你把它做成无障碍的?那我们就会把它写进去。

Jonathan:你看,我甚至也有那种假设,觉得它是额外的一块。你不会有这种假设。

DJ:觉得它是额外的一块。你不会有。对。你放在页面上的每个按钮都该是按钮。你放在页面上的每个链接都该是链接。懂我在说什么的人,这属于常识。但对很多人来说,他们并不这么做。

Jonathan:那这在最佳实践方面怎么讲?因为你可以图省事,也就是不把每个该是链接的东西都做成链接。对吧?

DJ:对,对,对,这话很有意思。这就回到怎么说服我老板那个问题了。现在作为程序员,人才非常稀缺。工作机会太多了。对大多数已经在编程领域工作过的人来说,现在找份新工作并不难。需要说明的是,我只了解西方目前的情况。我完全可以想象,在世界其他地方可能很难,但现在在西方不难。如果你的老板没法被你“这件事值得在乎”这几句话说动,那你该走人。

Jonathan:嗯。

DJ:因为如果你把它变成一场成本之争,你会输,因为他们只会看到它要花更多时间。而如果你用最佳实践,对吧?如果你用 Web,如果你用 Web 标准,如果你了解这些,如果你愿意花时间去了解这些东西,那么对于交互程度低到中等的应用来说,做到无障碍并不会多花时间。

Jonathan:嗯。因为你只是在把它作为一部分来做。

DJ:对,因为你用的是比我聪明的人想出来的东西,它们默认就是无障碍的,对吧?比如输入框。当你输入,你要把名字填进一个输入框。有个 HTML 元素叫 input 元素。如果你默认用 input 元素,它就能用键盘操作,也能用语音指令来填写。如果你用……

Jonathan:对。

DJ:别的元素,比如一个 div,然后你想让它表现得像输入框,那你很可能不会考虑到别人早就想过的所有事情。这就是关键,对吧?所以如果你不去搞什么特别的花样,也不觉得自己比那些人聪明,你大概率会用标准。用了标准,你就已经完成一半了。剩下的……

Jonathan:因为对我来说,那才是最有说服力的论点。最有说服力的论点之一就是,东西本来就是设计来这么用的,就按它设计的用法去用,对吧?

DJ:对,而且你实际上还能让新进公司的人更容易看懂你的代码。你也能让刚入门的人更容易上手,因为你可以把他们指到外面已有的那些文档上。那不是……你不是在重新发明轮子,这就是关键。而且现在,在我自己研究这件事多年之后,因为我决定去在乎它,我知道很多东西其实并不难做。

Jonathan:你。

DJ:所以如果你去做了,如果你把它们变成你日常工作的一部分,它们对每个人来说反而会变得更容易做。这让一切对所有人都更包容,也让这件事更普遍,进而又变得更简单,因为……然后还更有趣,接着……对,正是。万维网的发明者之一说过……

Jonathan:嗯,对,正是。

DJ:原话我记不全了,不过在演讲里有。你要是把这个放到网上,应该把链接放上去。对,我一定会在节目笔记里加上。但他说过,万维网是为谁而造的,是给任何人、每个人用的。

Jonathan:对,我一定会在节目笔记里加上。

DJ:所以万维网互联互通的整个根基,就是为了让更多人获取更多信息。最初是大学开始分享他们的研究细节。当然,也有政府想,哦,也许我们能把它用于军事,就像 GPS 一开始那样。但本质上,它是个科学项目,他们没料到它会变得这么大。但当他们发现,把计算机彼此连接起来、共享数据,你就能更快做更多事,能访问一个巨大的数据库,不用再把它写进会过时的书里……

Jonathan:对。你完全可以说,无障碍就是互联网的奠基支柱之一。对,正是。

DJ:互联网的支柱,你完全可以这么说。对,正是。它一飞冲天。我们得让这种状态保持下去。我们得做出有包容性的产品。这不仅适用于网页应用,不只是移动应用,而是适用于一切。所以亲爱的 Google,当你为 Google Photos 设计一套标记系统时,把黑人标记成猴子,因为你的附加数据集里没有放猴子,这就很不专业。撇开社会层面不谈,对吧?撇开年龄歧视、能力歧视和种族歧视不谈,如果你不去考虑……

Jonathan:对。

DJ:怎么让产品更有包容性,那就是不专业。这就是我的立场。我知道,人们会说,哦,你对这个太在意了。

Jonathan:嗯。

DJ:但这很有意思。我个人并不能从中得到什么好处,对吧?我在几乎任何意义上都是健全人。当然,我有点怪,小时候摔过一跤,这算一个,但除此之外,我自己并不需要这些东西,这也不是我认为人们该在乎这件事的原因。是因为我确实希望别人也能看到、听到、用上我做的任何东西。这不代表我不会犯错,我写的大量代码也完全谈不上无障碍或包容,但一旦我发现了,我就会努力去改好。而且这不是那种,哦对,这是我们可以做的事。不,有人跟我这么说的时候,我觉得这是我必须做的事。对,否则他们就用不了。

Jonathan:那就是。对,这根本不用想。就是。

DJ:就是。这真的根本不用想。

Jonathan:但这很好,因为它意味着你带来了一些新鲜的,嗯,甚至算不上新鲜,就是你把万维网比如所奠基的那种东西重新带回了前台,它像是一种核心价值,我觉得这很重要。你不该忘了这一点。因为科技对很多人来说其实相当难以企及。对它的了解,也还是集中在少数人手里。

DJ:别忘了。你想想,大多数编程语言都是英语的,默认人人都会英语。正是。对吧?很多编程语言还要求特殊硬件。比如……网络连接。对。而且是高速网络连接,这个要求越来越普遍。这些也是我跟别人提过的事。你知道,他们会写些只有你用 Mac 或者 Linux 才能用的东西。我说,可有很多人在用 Windows 啊。

Jonathan:我们该把它写回去,早些年,要是你有……想象一下那个画面。我确实记得。

DJ:真是……想象一下吧。嗯,我确实记得那些日子。对。你爸妈想打电话,而你正在上网。

Jonathan:就是你正在……

DJ:正是,他们打不进来。所以我不知道这是不是现在这一代人的问题。我不知道这是不是大量资金集中在西方带来的问题。我们这边普遍能用上高速网络,这很容易让人忘记并不是全世界都用得上。但这些其实也不是很难想到的事,对吧?对。

Jonathan:正是,他们打不进来。对,但我是说,这对话很有意思,因为 Exercism 正努力为世界上尽可能多的人创造学编程的机会。而世界上人口增长最多的地方大多在新兴市场,对吧?印度、南美、非洲,而在这些地方,眼下网络连接要差得多。所以我们是不是在做一些别人用不了的程序,因为网络撑不住?你知道,这也是必须考虑的一点。对。要考虑的事情有很多。

DJ:对,确实。不过说到这一点,当然,新兴市场里也有很多人网络很好。而在比如我待得最多的加利福尼亚,也有很多人没有网络,因为那里根本没信号,这很有意思。但总是“在线”,这种高速要求和快速设备要求,这种昂贵硬件的要求,这些……

Jonathan:连上。

DJ:它们并非全都是随意的,但有很多简单的事我们可以做,从设定预算开始。想想体积上的预算,对吧?你要往网络里推多少东西?到提供离线模式,到确保你的代码能配合辅助技术使用,这些都不难开始。所以要让它变好,其实非常容易开始。这也是我为什么会一直留在 Exercism 的原因之一。你想一想,原因之一是那里有那么多不同的意见,但每个人都想要同样的东西,我觉得这很有意思,对吧?所以有这么一大群维护者、贡献者,还有导师,他们都想要同样的东西。每个人都或多或少地说过,我要帮别人掌握一门新语言。我不太在乎他们水平多高,但我会帮他们变得更好。

Jonathan:对。

DJ:我觉得这让我想留下来。太棒了。这就是我大概还在的原因。另外,Jeremy 喜欢我抱怨。所以也有这个原因。

Jonathan:也有这个原因。太棒了。关于无障碍这个话题,讲得真的很有意思。在我们结束之前,我还有两件小事想问你。第一件是,我们很希望能深挖一下这个概念,就是你在科技领域里愿意为之赴汤蹈火的一个观点或“山头”。我们想聊这个,并且想从积极的角度来谈,是因为旧的科技行业里意见太多了。我们就想围绕这些事情聊一聊,围绕这些不同的东西好好聊一聊。那么,在科技行业里,你愿意为之赴汤蹈火的那个“山头”是什么?从积极的角度来框定,就是这是你真心愿意去捍卫的。你刚才在我们的对话里大概也稍微提过了,有没有什么是你会说,这是我认为关键的东西,是我愿意为之战斗的?

DJ:对,来吧。可选的太多了,显然让全世界的软件都变得包容是最容易抓的一个。但说来好笑,我觉得这并不是我最在乎的那个。尤其是过去几年,有很多、很多……声音很大的人,他们的行为让人不太舒服。这跟守门这类事有关。比如,哦,你没上过大学,你根本不懂你在说什么。再比如,后端比前端更复杂这种论调。你看,这又跟 Exercism 有关了。但我希望我们会看到的是,这些争论根本毫无意义。因为对做前端的人来说,如果你不知道自己在干什么,后端就是难的。

Jonathan:这就像你从没干过却想去当砌砖工。对,但你知道后端有多难……

DJ:可你知道对一个从没做过前端的人来说,前端有多难吗?我提出无障碍这个话题时,他们会说,哦,我不碰那个,因为我是做后端的。给嵌入式系统、芯片、火箭写软件的人,他们非常聪明。他们要面对的限制比我们能想象的多得多。还有游戏程序员,他们在自己那一行也非常出色,想办法让 GPU 承载那些新出的、出色的游戏里的所有贴图。这是完全不同的处理方式。但正是这一点让它有意思。让编程、让谈论编程变得有意思的,正是它的不同,正是你不理解的地方。我们应该做的就是这个,而不是说,哦,你是这个,你是那个,负面形容词、副词、名词,随便什么。对。去对它感兴趣,因为你能从中学到东西。当然,确实有些公司、有些个人、有些群体就是这么做的。很多领域之间有交叉,人们却没意识到。HTTP2 本质上是在 UDP 上跑 TCP,一种网络协议,这种做法在网络 RPG 游戏里很常见,它们需要在不保持长连接的情况下推送多得多的数据。React,你用它可以为网页和手机构建响应式应用,用的是一种叫双重渲染的技术,这来自游戏。反过来也一样,我们现在网站上有的那些辅助增强功能,也正在被引入游戏世界。对吧?尤其是微软,在一些较新的游戏里做了很多工作,加入了更多选项,比如字幕,比如菜单的配音,还有难度曲线之类的东西。所以我们知道,程序员获取知识的方式、学习的方式、学习的速度各不相同。用一个产品也是如此,不管是一个界面,比如在机器上买张票,还是玩个游戏,都无所谓。实际上,正是所有这些不同领域、不同角色之间的交叉,才会带我们走到一个一切都更好的地方。真的是一切都更好。因为你会发现,过去这些年那些了不起的大东西,都是交叉的产物。对吧?都是这些领域之间的交叉。

Jonathan:你。

DJ:人们会守门,但你这么做其实是在拖自己后腿。所以我觉得,我肯定会为之赴汤蹈火的那个山头,就是我会说,如果你不这么做,你就是在帮你自己,对吧?所以这不只是包容,而是对其他语言、其他领域、其他角色保持开放,而不是说,我的更难,我的更复杂,我的更好,我的随便什么。这也带来了很多创新,因为有人只是为了给标准加一个小东西,结果做出了一个新框架。往积极的方向想,它确实给了我们更多知识。

Jonathan:好,今天最后一个问题。对。你会给社区什么建议,任何方面的都行?可以是吃的、运动,随便什么。如果本周你只能给我们的社区一条建议,那会是什么?

DJ:对,一条建议。这有意思。我的一条建议会是……你来荷兰的时候,要明白荷兰不止阿姆斯特丹。如果你已经住在荷兰,而且住在阿姆斯特丹,要明白环线之外还有另一个世界。你自己心里清楚。如果你来自外省,别人叫你外省人时别生气。因为你确实是。

Jonathan:说完了。这就是 DJ 今天给出的好建议。DJ,非常感谢你抽时间。我们现在要去吃晚饭了,但希望大家听得开心。DJ,非常感谢你本周临时来参加这次录音。见到你真好。聊得很愉快。我们会把 DJ 提到的各种链接、演讲之类的都放进节目笔记里。DJ,谢谢你。不客气。真的非常高兴你能来,我们感谢你为 Exercism 所做的一切,也感谢你这个人。所以非常感谢你。好。

来自我们社区的更多故事

倾听、学习,并从我们的社区成员那里获得启发。