英文原文:An Autobiography of a Blind Programmer
原文作者(author):Parham Doustdar(@PD90)
我常被问到的问题就是,做为完全失明的人,我是怎样编程的?我在一些地方提供了该问题的回答。比如,我在 Quora 上回答过《有视力障碍的电脑程序员是怎样编程的?》,我也在 LiveCoding.tv 的这里和这里讨论过该话题。然而,本文从更深层次的视角看待我的生活、以及塑造我当前职业生涯和选择的转折点。如果你不介意,本文更像是自传。如果你感到不可思议,请把你的手交给我,让我们盲人为视力正常的人指路。
缘起
我出生于 1990-2-7,家里排行老三,生活在伊朗首都德黑兰。我生来就完全失明,只具备觉察到光的能力,很明显,我是不具备的。
我踏入编程世界是在 14 岁那年。
对于盲人而言,记住 11 年前的编程书籍,要用很多努力。由于制作书籍的盲人版本非常昂贵、且耗费时间,这种实验通过声音、而非布莱叶盲文注1完成。
我想不起来那本书的作者了。然而,我记得书名是《Visual Basic 6.0》。
对于不了解这本书的人,在那个年代,Visual Basic 算作最容易的入门语言之一,它由微软创建,你可以编写面向 Windows 的应用程序,除此之外,主要卖点在于你可以轻松地创建图形用户界面(GUI)注2。因此,你能想象到,这本书以创建响应用户输入的 UI 为中心,比如,摆放两个文本输入框,它们之间弄个加号。当你点击「求和!」按钮时,它就会把两个文本框里的内容加在一起,并显示结果。看着不错吧?
当然,这还没有真正触动我。
我想要更多的东西,这本书却未能满足我的需求。
我想开发……一款游戏,一款盲人可以玩的游戏,给盲人身临其境般、声效体验的游戏。让人惊叹的游戏,类似于我兄弟们在 PS 注3 上玩的超爽游戏。
这绝不是一开始就有的想法。事实上,在玩过 Jim Kitchen 的音频游戏之后,我才萌生了这个想法。这种体验非常独特,想要为盲人专门开发,提供绝佳的体验。当然,我常常反对提供更具可访问性的解决方案,而是使得主流产品可访问(比如,创建「盲人聚集区产品」)。然而,我发现,大部分游戏本质上依赖于视觉,这是不公平的期望。
我开始创建一款游戏,姑且称作 Swimming(游泳)。玩法简单:保持游泳,能多快就多快(方向键:上),根据你听到声音的那只耳朵来选择向左或向右(方向键:左、右)。比如,如果你听到来自左侧的声音,你就向左游;如果你听到来自右侧的声音,你就向右游。如果你方向控制错误,你就会撞在游泳池的池壁,并被震晕几秒钟。
无论怎样,这次经历压根儿算不上成功案例。
有一点需要提一下,我还没有正当职业。我生活在伊朗,没有收入来源,不管怎么说,我都不能要求我的父母去做。这不是我的处事风格。
现在说说现实世界的体验问题:看了一本书,教我在 IDE 里创建 GUI,你只需拖拽控件,就能在后端产生代码,这种书是不能教会你编程的。我记得,我的 Swimming 游戏就有 3 个按钮,它们出现的理由是因为 Visual Basic 6.0 IDE 为我生成的。后来,我联合一些朋友创立了 Lighttech Interactive,我从朋友 Robert Osztolykan 那里听到的第一句话是:「伙计,你是怎样看代码的?」
最后,这个项目失败了。然而,它教会了我非常重要的东西:我喜欢编程。我感到充实,因为我能够让计算机做我想做的事情。我想帮助其他人。
求学之旅
正是这种体验,让我选择了软件,做为我在大学想学习的课程。这个决定本身存在问题:高中没有对应的课本,大学相应的课程没有我需要的书。我要么依赖于自己的知识,要么让别人为我读书。然而,我讨厌为了通过考试而学习既定数量的教材,我更喜欢靠自己。我凭借自己的知识,在家里鼓捣了不同的编程语言。我在所有的编程课里都得了 A :数据库、以及包含手动编程的其它课程。
对于数学和理论课,比如数据存储和检索、操作系统、统计学、以及依赖于演示的其它课程……我都不太擅长,因为我没有学习它们的渠道。
最终,这些经历为我赢得了副学士学位注4。另外,凡是教学方式依赖于理论或图形化演示的,我都心生憎恨。
我尽量遵循教育系统,好让自己能多学习不同的技术。在大学期间,我就发现 PHP 和 web 是我乐于从事的方向,它们促使我尝试了不同的框架。
职业生涯
我在 FreeNode 的 #yii 频道认识了 Howard Chang。当他问一些问题时,碰巧我在,我为了让他关注我,就刻意给他留下了印象。
这让我得到了第一份做 PHP 的开发工作。当然,这是我的第一份工作,尽管我的技术能力与团队其他人处于同一水平,只是我的软技能还不够好。最终我惹毛了经理,你们多数人可能猜到了(你读到这里,可能正捂着脸吧),大量的不和谐情景随之而来,我常常感到好奇:「嘿,我做了什么?他为什么对我大吼大叫?」是的,那个家伙一直都讨厌我。我只记得他说过一句话,让所有人惊呆了几秒钟,原话记不住了,大意为:「我不会让一个瞎子破坏我的生意!你明白吗?」
因此,我辞职了。我在那天发送了一封邮件,说我不想再来这家公司了。我的软技能就是这么差劲儿。
我的下一个东家是一家很棒的创业公司。创始人是一位健谈的加拿大籍伊朗人,他的想法很棒:BusinessX。
我是做为第一名员工被雇佣的。前景广阔、人们意气风发,激情随处可见。我们打算改变小企业互动和展示自己的方式。
除此之外,什么都没有发生。
就我而言,我仅有一些能够说得出口的品质,我敢说你也这样。不知为什么,我们都倾向于让我们的所有成就看起来微不足道、以及让我们的个性、技能和特征不太完善。同时,我们期望其他人都羡慕我们、拥护我们,以及只是承认我们是多么地优秀,这样我们就能继续活在美好的幻觉里。
好吧!我跑题了。
我钦佩自己的一个品质,即我对学习的渴求。以非常快速的节奏观察、处理和学习,当 BusinessX 走过小企业生命周期(婴儿期、青春期,再返回婴儿期)时,我观察、学习,我还学到了教训,James Altucher 在 LinkedIn 发表了《今年你要离职的十大理由》一文,促使我离职,以寻找更多的成长机会。
但是,我没有自己创业,我再次加了一家公司。
由于我完全失明,我已经越来越多地转向后端 web 开发了。我从来没有写过一行生产环境里的视图代码,这也是我的新公司让人着迷的地方(我负责 Asterisk 系统的后端 API,它销售一些服务)。我现在能够实施我想做的所有实践:测试驱动开发、设计模式的实际应用、重构、以及各种术语。我做到了。
创办博客的初衷
我在目前的公司上班时,发现了一本书《Soft Skills》。在当时,还没有盗版(对不起,John Sonmez)。然而,通读了 Uncle Bob 的《代码整洁之道》之后,我很想再找一本类似的书。毕竟,依我拙见,BusinessX 第一阶段的开发努力未能成功,开发人员属于非常重要的原因。功夫不负有心人,终于有一天,我找到了网上流传的一份拷贝,如获至宝。看完这本书,我意识到,通过博客分享你自己,具有强大的力量。
还有一件事,从我 13 岁起,我就读了很多书。拥有一台屏幕阅读器,每分钟读 520 个单词,这简直是老天的恩赐,让我汲取知识。后来,我决定把我在学的、和已经学到的东西分享出去,展示给世界,同时引发分享和讨论、得到指正,促使我坚持下去。我在 SitePoint 网站上的作者简介页面、我在 Quora 上的个人主页、当然还有这个博客,都有例子。
因此,除了非常陈旧的文章,我认为,正式启动博客的理想方式就是向你谈谈我自己。希望你能喜欢我的故事。
你对我的自传有什么看法?它回答你的疑问了吗?它引发了新问题吗?如果你有任何疑问希望得到回答,或者你想给本文任何反馈,请写在下面的评论里,我乐于看到。
请分享本文!
译文: 《一个盲人程序员的自传 》 腊八粥
注释
- 盲文(法语:Braille)、香港多用“點字”、“凸字”。是盲人使用的文字,由法国人路易·布莱叶发明,透过盲文板、盲文机、盲文打印机等在纸张上制作出不同组合的凸点而组成。https://zh.wikipedia.org/wiki/盲文
- 图形用户界面(Graphical User Interface,简称 GUI)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。https://zh.wikipedia.org/wiki/图形用户界面
- PlayStation(俗称为 PS 或 PS1),是日本索尼旗下的索尼电脑娱乐(SECI)于 1994 年 12 月 3 日推出的家用游戏主机。当时与 PlayStation 竞争的还有世嘉公司的世嘉土星和任天堂公司的任天堂 64 等。通过争取第三方游戏厂商的策略,最后 PlayStation 在游戏软件数量上以绝对的优势赢得这场次世代主机市场的胜利。至 2005 年,PS 的全球销量约为 1.03 亿台。https://zh.wikipedia.org/wiki/PlayStation_(遊戲機)
- 副学士学位(英语:Associate Degree)是一种源自美国和加拿大的初级学位,为四级学位系统中的初级学位一种,一般分为文科副学士(Associate of Arts,简称A.A.)及理科副学士(Associate of Science,简称A.S.)。修读者一般须在社区学院或专科学院修读两年,通常无需通过论文考核,与高级文凭的严格制度不同。与之最接近的亚洲教育资历为大专文凭(但通常大专文凭取得者须在大学全职学习三年)。https://zh.wikipedia.org/wiki/副學士