对于程序员来说,敲代码是编程工作中不可缺少的“仪式”。那么如果是身患残疾、抑或是无法通过手部来编码的人群来说,又如何突破这道最基本的防线呢?本文的作者就是一位罹患手部疾病的开发人员,他通过自己的切身经历表明,借助外部工具,即使身体方面有所欠缺,也能够成为合格的技术人员!

声明:本文已获作者 Naomi Saphra 翻译授权。

作者 | Naomi Saphra

译者 | 王艳妮,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

2015年8月,我的手无法继续工作了。我仍可以控制自己的手,但是每个动作都会积累更多的痛感,所以每一步都很艰难:比如早上起来穿衣服,发条短信,甚至仅仅是拿起个杯子。

那年夏天我在谷歌实习,即将开始在苏格兰攻读博士学位,但整天写代码的生活让我痛苦不已。在诉说这个故事时,我经常提到,在我学会如何不用双手实现编程之前的很多个月,那段时间我没有事干,唯一能做的事就是去酒吧点一杯伏特加,还要用吸管来喝,现在想想挺好玩的。

我已经被疾病困扰四年了。

Talon

由于这种残疾,我无法用手打字或写字。很多人问过我,是哪些东西让我在手部疾病的限制下仍然保持高效工作的?我希望我的经验之谈对于那些症状比我更重和更轻的人都能有所帮助。那些症状比较轻的人往往只是有轻微的机械劳损,减少键盘的使用就能使他们的情况改善。

此处登场的明星就是Talon(https://talonvoice.com/)了,这个系统可以让你轻松编写自定义语法和脚本,与语音识别系统配套以实现编程。指令的范围从简单的常用符号别名到复杂的元命令,它们重复先前的话或改变听写模式。举个栗子,就括号而言,我对(,),(),和()⬅️都有单独的指令(将光标留在括号之间,以便我说的下一句话被括起来)。

每个Talon用户都有许多私人脚本。我写的最宝贵的脚本可能是我带索引的剪贴板:

用法很简单。在使用我的光标控制(my cursor control)命令选择一个特定的短语后,我会说“clip [foo]”(复制),每次我想输入相同的短语后,再说“paste [foo]”(粘贴)。因此,对于一个特别讨厌的变量名,我只需要录入一次。但是,这确实引入了一个新难题:每个变量都有两个名称,即其书面名称和口头名称。这种不幸的副作用加大了给变量命名的难度,这被称为“计算机科学中最难的问题”。

如果你是Vim或Emacs的高级用户,你可能会对这些感到熟悉。我有针对搜索、移动光标、选择和操纵剪贴板的指令。学习如何听写代码的过程非常类似于彻底地学习一个新的文本编辑器,都一样归结于自定义你的特定语言和需求这个挑战。

Talon社区有依据不同应用程序或编程语言生效的专用指令。比如,对于Perl用户,借鉴Emily Shea的设置可以作为一个不错的起点:

(完整版视频可点击:https://youtu.be/Mz3JeYfBTcY)

我的Talon设置的语音识别方面是依赖Dragon来进行的。不幸的是,Nuance已停止了OSX Dragon支持脚本语言的版本。

Talon背后的开发者,Ryan Hileman,正在着手一个合适的替代品,但在我写本文时,这个应用还未面世。

一个小插曲

人们经常问我疾病的诊断是什么,但严格来说这取决于我身处哪个国家。在初步假设是腕管的毛病后,美国的风湿病专家给了我第一个诊断:弯管综合征,俗称鼠标手,这个词在医生的词典里意思就是“你走吧”。

但我并没有走。一位神经科医生对我进行了皮肤活检,然后我在美国的官方诊断就变成了“特发性小纤维神经病变”(idiopathic small fiber neuropathy),意思就是说我缺少传递热量和疼痛的关键神经纤维,但却没有人知道病因。特发性(idiopathic)在医生的词典里也是“你走吧”的意思。

然后我去了英国。我带去了在美国的医疗记录,但我的英国神经科医生没有看我的医疗记录或给我进行体检。在简短的谈话之后,他给我一张写着他找不到任何生理原因的纸条,这就是我在英国的诊断,并且他“怀疑有重要的功能叠加”,这就是医学院里的老师教的,如何委婉表达某人有妄想症时的一套说辞。

我的全科医生看了纸条以后告诉我,他是不会给我开止痛药的,也不会让我去找神经科医生重新检查一次,也不会建议我去寻求任何其他专科医生的治疗。他只会介绍我去心理医生那里来帮助我“消解我痛苦背后的根源性问题”。

然后我说了句“NTM的”,他就把我从办公室里撵出去了。大堂里倒是的确挂着“禁止骂人”的标语。

装备

用语音听写的过程中,我使用的是两种不同的麦克风。在办公室,我用的是Sennheiser ME-3,而在旅途中,我用蓝牙耳机,Sennheiser MB Pro 2。

另一个对我来说很重要的设备是我的脚踏板,我用的是PageFlip Firefly。它可编程,所以我修改了设置,包括一个对于在Skim上阅读有用的设置,左踏板对应一下单击,右踏板对应一个下箭头。我可以用脚来控制滚动条,以及进行点击来注释。我添加的另一个踏板设置将某踏板操作对应到单击并shift + enter,这个设置对于Jupyter Notebook以及在Quiver中记录我的研究笔记和数学演算非常有用。

当我的手的情况变得异常糟糕时,我没法移动鼠标,我需要使用shortcat,它可以让我通过语音指示键盘而不必使用鼠标就能按下按钮。

最后一件必备的装备是一对大护腕。我的护腕主要用途是阻止我习惯性地去使用自己的手,我总是在会议上戴上它们,因为这样比不断地重复“我的手有残疾所以无法握手”这句话更简单一些。

另一个小插曲

我经常做各种噩梦,梦见我的大拇指断掉了,梦见我手上的每根骨头都断裂,梦见我的手臂上爆发出大片的流血伤口......然而每次睡觉醒来,留下来的疼痛感仍然像一场看不见的噩梦。

限制

也许有些讽刺的是,如果你开始用语音听写代码了,最让人担心的是你是否会使你的声道产生机械劳损。静静地说话实际上可能会造成更大的伤害,多喝水很重要,良好的姿势可以防止你的声音以及身体的其他部分受到伤害。我强烈建议去找一位,教演员和歌手如何保护自己声音的声乐教练。

工作间隙的休息时间是很重要的,而且你可能会觉得在工作之余,说话变成一件很累人的事情。

语音识别技术并不完美,如果你有特殊口音,错误率会更高。此外,每次出现感冒或喉咙痛时,你可能都无法编程。所以我对轻微的小感冒都很畏惧。

拥有一个私人空间来进行语音听写是很重要的。我无法在家高效工作,但是自从我有了一个私人办公室,我好几个研究项目的前进势头就迅猛了起来。我知道这对许多人来说是一个巨大的限制,因为当今兴的是那种破坏生产力、令人窒息的开放式办公。

如果你的工作场所已成为这一趋势的牺牲品,你可能也还有别的选择。在许多国家,如果你有残疾,大公司将有义务为你提供私人工作空间。

附录

我的残疾生活并不容易,但由于享乐适应原理以及令人满意的工作和爱好,我其实觉得过得挺开心的。如果你最近罹患某种残疾或慢性疼痛,可能会觉得你永远也无法适应患病的那种生活方式。这就是为什么我试图跟你讲述我遇到的挑战以及我的成功。对于那些已经克服逆境的人,人们往往有两种反应:“这件事情原本就不那么难”或“我永远也做不到”。你要越过这两种反应。这件事情确实很难——但你能做到。

如果你目前身体健全,请对身边的残疾人,不论是同事还是其他人,只要你有能力帮助他们,就对他们有价值且充实的工作给予支持吧。我鼓励其他残疾科学家和开发者在遇到任何问题时与我联系。

原文:http://nsaphra.github.io/post/hands/

作者:Naomi Saphra,爱丁堡大学机器学习PhD在读。

【END】

90%的程序员学Python这么认为:

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

 热 文 推 荐 

☞ 重磅!全球首个可视化联邦学习产品与联邦pipeline生产服务上线

☞ 语音识别技术简史

☞ 物联网成网络安全防护新重点!

☞10 步教你接手同事的代码!

☞亚马逊首席科学家李沐国内首次亲授「深度学习实训营」

☞CSDN & 火星财经, 联手发起Libra超级节点竞选!

☞"学了阿里中台,却依然做不好系统?" 聊聊阿里的项目管理

☞如何写出让同事无法维护的代码?

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

双手无法敲代码的程序员,该如何编程?相关推荐

  1. 除了敲代码,程序员还能有什么副业?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者简介:于亚豪,毕业于郑州理工大学,目前就职于北京八爪鱼科技有限公司,担任移动端开发小组长 ...

  2. 第二! 他排中本聪与V神中间, 单靠文字就“打败”了敲代码的程序员!

    来源 | <Mastering Ethereum> 作者 | Andreas Antonopoulos.Gavin Wood 出品 | 区块链大本营(blockchain_camp) An ...

  3. 除了敲代码,程序员还需要哪些必备技能?

    良好的写作水平,是个被严重低估的软件工程师必备技能! 作者 | Gergely Orosz,软件工程经理 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 自 ...

  4. python浪漫代码-使用Python代码的程序员也浪漫

    原标题:使用Python代码的程序员也浪漫 代码也浪漫:用Python放一场圣诞节烟花秀! 天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花庆祝昨晚法 ...

  5. 开源者的自我修养|为 ShardingSphere 贡献了千万行代码的程序员,后来当了 CEO...

    当一个人处在持续地追求与锋锐地思索状态中,他将收获怎样的价值与自由? 有人说,敲过万行代码的程序员,可以写一份基础版入行指南,给初阶人群作入门参考.码过十万行代码的程序员,能写一本进阶版技术手册,给陷 ...

  6. 开源者的自我修养|为 ShardingSphere 贡献了千万行代码的程序员,后来当了 CEO

    当一个人处在持续地追求与锋锐地思索状态中,他将收获怎样的价值与自由? 有人说,敲过万行代码的程序员,可以写一份基础版入行指南,给初阶人群作入门参考.码过十万行代码的程序员,能写一本进阶版技术手册,给陷 ...

  7. 当 ChatGPT 比你更会写代码,程序员还能干什么?

    作者 | 何苗 出品 | CSDN(ID:CSDNnews) 大模型的火热引爆了 AI 编程领域的全面革新,人们开始思考如何借助 AI 提高编程效率的同时,也在思考未来需要怎样的"新程序员& ...

  8. 增删改查java代码_程序员:听说你正在为天天写增删改查代码而烦恼

    有相当多的一部分程序员一直都只接触业余应用的功能,天天写业务代码的程序员也被戏称为CURD程序员,CURD就是增(create).改(update).查(read).删(delete)的意思. CUR ...

  9. 除了写代码,程序员还能做哪些副业呢?

    作者 | 沉默王二 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 许多年轻程序员会单纯地认为:"只要做一名正儿八经的程序员,在技术上深耕细作,在工作上兢兢业业,就一定能 ...

最新文章

  1. pytorch利用多个GPU并行计算多gpu
  2. php gzipstream,c# – 在WebRequest中发送gzip数据?
  3. calipso是什么意思_眰恦是什么意思?
  4. golang go get 命令行安装库 报错 go: cannot use path@version syntax in GOPATH mode 解决方法
  5. spark on yarn 完全分部署_大数据Spark面试题(一)
  6. jdk内置线程实例_EA问题的JDK14实例
  7. Springmvc,Spring MVC文件上传
  8. 最新版飞鸽传书(http://www.freeeim.com)下载
  9. 请求时才延迟加载JavaScript文件 - 优化篇
  10. 【Java从0到架构师】Redis 应用 - Jedis 基本使用、使用缓存的用户登陆、缓存常见问题
  11. idea的黄色感叹号之Spring Configuration Check (Please configura/setup Spring facet for modules)
  12. ubuntu系统下,Firefox火狐浏览器播放网页视频失败,显示未安装视频插件
  13. 【矩阵论】线性空间与线性变换(3)(4)
  14. python求平行四边形的周长_高考数学解析几何有哪些实用的运算技巧?
  15. 百度api获取经纬度以及经纬度的转换
  16. 无线耳机哪个品牌好一点?真无线蓝牙耳机推荐品牌
  17. 企业微信对外收款有限额吗?
  18. Manifest merger failed : uses-sdk:minSdkVersion 21 cannot be smaller than version 24
  19. Android设备的序列号与ro.serialno
  20. 根据网络上的视频的m3u8文件通过ffmpeg进行合成视频

热门文章

  1. [FFmpeg] CMake 单独编译 ffplay 之基础篇
  2. 论文阅读:Uncertainty-aware Joint Salient Object and Camouflaged Object Detection
  3. 论文翻译:Two-phase Hair Image Synthesis by Self-Enhancing Generative Model
  4. leetcode python3 简单题26. Remove Duplicates from Sorted Array
  5. scrolling=no 无法根据坐标获取元素_三坐标测量仪类型
  6. leetcode题库3-- 无重复字符的最长子串
  7. 《统计学习方法》—— 感知机对偶算法、推导以及python3代码实现(二)
  8. rust笔记13 闭包
  9. Flutter实战一Flutter聊天应用(九)
  10. mysql sql能力_MySQL SQL优化