【晒出你的第83行代码】十年全栈编程,视障工程师@蔡勇斌带我们走进他的代码视听世界

简介: 作为一个拥有10年PC开发经验的盲人程序员,他不仅参与了钉钉无障碍版本的测试,还编写过很多帮助盲人使用电脑之类的软件。他带我们走进了属于他的代码视听世界,让更多盲人看见。

最近社区有个很火的《向代码致敬,寻找你的第83行》活动缘起于前几天,在阿里巴巴的一个小黑屋里,5名对代码有着极致追求的程序员参与了阿里代码领域最高荣誉“多隆奖”最终角逐(多隆作为淘宝的第一代程序员,也是很多技术人心中的大神)。那天代码评审现场,看到某代码片段最后结尾,多隆突然补上一句,往上翻看第83行。代码一般都是几百行,他看到最后,居然还记得第83行的一个细微瑕疵,这得是对代码怀着怎样的敬畏之心。

于是,在五四青年节之际,社区发起了来晒晒属于你的“第83行”的活动,活动中邀请业界的大牛、大神们来晒代码或者Review代码!最终,由网友和大牛共同评选出了获得点赞和大牛评分最高的2位参与者,其中一位正是蔡勇斌,一个拥有10年PC开发经验的盲人程序员。我们一起来看看他是怎么写出极简代码的。

5月29日,多隆在第二届研发效能嘉年华(云效)直播间为其颁发了“多隆奖”(https://yq.aliyun.com/promotion/566)。

@蔡勇斌 获奖的代码如下:

我是一个盲人工程师。在测试淘宝和天猫WEB端时,发现“我的淘宝”和“收藏夹”链接鼠标悬浮时会弹出内容,但盲人用户使用键盘无法实现该操作,因此根据相关的无障碍标准给对应产品提出了以下解决方案,让我们的代码更健壮、产品更完善,经得起“每一位用户”的考验。

不缩进、不多站位符,一行能写完绝不用两行,代码按相关性空行,这就是我们盲人工程师当中“最优雅”的代码。

常人眼里使用记事本编程被视为“装逼”,但盲人工程师却是最无障碍的代码编辑器。

16459e4046ad62490fd4198a8af16e97b0615a38

对于蔡勇斌晒出的代码,本次活动的评委——阿里巴巴系统软件事业部高级研究员多隆评价称:“简洁,这可能是盲人工程师特点。”其获奖评语为,“作为一个拥有10年PC开发经验的盲人程序员,他不仅参与了钉钉无障碍版本的测试,还编写过很多帮助盲人使用电脑之类的软件。他带我们走进了属于他的代码视听世界,让更多盲人看见。”

能够获得此次的“多隆奖”,蔡勇斌表示十分感谢。

08481c60ffc2e0a4803cc822bac7bc163bb09170

大家好,我叫蔡勇斌,我是一名视障者,同时也是一位信息无障碍工程师。我的主要工作是给阿里巴巴的淘宝、天猫、支付宝、钉钉等等主流产品做无障碍测试。我的业余工作是开发盲用程序,主要是给一些视障者做一些辅助工具。

我的开发经验已经有十几年了,包括Web端、移动端、PC端都有涉及,不管是前端还是后端都有做过代码相关的工作,算是一个全栈工程师。代码对于我来说其实和普通人差不多,就是一个和机器交流的语言。不管是Java也好,C也好,还是web端的JavaScript、Html等语言,我都有接触过。

对我们来说,写代码主要靠的是读屏软件,通过一种语音的方式,来去逐行逐字地去朗读代码。过去我们总是说,用记事本写程序是个很装逼的行为,但对于我们来说记事本就是一个很好的编程环境,因为它的无障碍效果最好,不管是快速查找、跳转、或者浏览,都是一个非常便捷的工具。当然,到后续要涉及更多的平台开发,比如说Visual Studio、Android Studio、Eclipse这些编程环境多多少少都会存在很多的无障碍,我们用起来并不是很方便。所以我们都会通过记事本的方法去写代码,通过这些环境来做编译,来实现最终的程序编译过程。

所以,我们编写程序时追求越简洁越好,不追求过多的排版。排版是相对于视觉而言,对于听觉而言,就是一个不是很重要的信息。比如说缩进,在我们看代码时如果逐字去朗读的话,你会发现很多的空白符,包括颜色的高亮对我们来说也是没有帮助的。

那么视障工程师写代码是不是就不需要排版呢?当然是否定的。现在,我们追求的都是协同工作,视障者写的代码别人要能很方便地去阅读,所以我们也会强迫自己去做一些力所能力的排版工作,让大家都能够很方便地阅读代码,一起去开发这些项目。

最后,感谢这次的第二届研发效能嘉年华,以及感谢阿里云的这次晒代码活动,也感谢评委老师多隆,让更多人知道无障碍代码的编写,让更多人关注到无障碍。

向代码致敬!

下面我们也精心挑选了参加活动的部分同学代码欢迎点评学习

1、@1350194977002867—我是一个盲人工程师。在测试淘宝和天猫WEB端时,发现“我的淘宝”和“收藏夹”链接鼠标悬浮时会弹出内容,但盲人用户使用键盘无法实现该操作,因此根据相关的无障碍标准给对应产品提出了以下解决方案,让我们的代码更健壮、产品更完善,经得起“每一位用户”的考验。

https://yq.aliyun.com/roundtable/67516/answer/152583#visit152583

2、@故事老神仙-接触建站开始一直玩到了现在的一个网站代码的第83行,是一行普通的代码,没有特别的地方,但不由让自己想起了当初的那份热爱,那份期待,那是初接触代码的小惊喜小激动。

https://yq.aliyun.com/roundtable/67516#answer-146773

7、@逐梦之旅-作为一个正要面临高考的小白程序猿,总有一天,我也会拥有我的“83行”,我也会成为你们中的一员

https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.256.1b726b3fy3tHbn&order=score&type=&p=1#answer-147150

11、@wujianhui-最近写的学校电脑报障系统

http://yq.aliyun.com/roundtable/67516/answer/147576#visit147576

12、@随手飘一个--写代码越久,越来越习惯多写注释,考虑以后的易用性功能

https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.153.2e8118a8NMH8d4&order=score&type=&p=5#answer-147177

17、@起名字好难-11年用python重写的一个06年用TC做的一个动画(好绕口……)

http://yq.aliyun.com/roundtable/67516/answer/147247#visit147247

20、@尼古拉斯雷-看了那个阿里巴巴的那个开发手册,然后就知道如何去优化这些代码,如何去规范的定义变量名之类的

https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.892.2ccd6b3fahgMyS&order=score&type=&p=2#answer-146477

24、@海阔天空yy-以下是我写的一个,用来测试redis集群的测试程序

https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.892.2ccd6b3fahgMyS&order=score&type=&p=2#answer-146532

32、@1706825784780553-晒代码

http://yq.aliyun.com/roundtable/67516/answer/147198#visit147198

34、@david_duan-天池的一个比赛,名次166,春节假期期间一个通宵写的~

https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.892.2ccd6b3fahgMyS&order=score&type=&p=2#answer-147054

41、@青藤木子-以前给妈妈弄的一个语音翻译App,就是利用微信聊天中自带的复制功能把复制的文字合成为语音

http://yq.aliyun.com/roundtable/67516/answer/147546#visit147546

60、@幸运兔-从大学时代起就比较注重代码书写规范,当初的汇编没有太多的约定,自己都会为每行代码加上注释,好处一看便知,现在转行Java之后多年,依旧能够快速理解那时代码逻辑。 https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.307.51806b3fV3GIep&order=score&type=&p=4#answer-146572

80、@德哥-图式关系存储与搜索 http://yq.aliyun.com/roundtable/67516/answer/146978#visit146978

71、@luckmore-动态负载均衡跟 容灾保护的一个东西 http://yq.aliyun.com/roundtable/67516/answer/147187#visit147187

102、@小生蚝-初二的时候帮学校写的“校运会直播系统”

http://yq.aliyun.com/roundtable/67516/answer/150524#visit150524

109、@1026704017609990-我的83行代码,注释写的不好,希望各位大佬指教哈哈

http://yq.aliyun.com/roundtable/67516/answer/147217#visit147217

134、@小小小豆奶-最近写的解析字符串里面数据对应的模板的方法,还是很多不规范的,但是在往规范的方向靠

https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.230.3cd56b3fEgMIV4&order=score&type=&p=18#answer-146704

143、@wfping-菜鸟,入行一年

https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.230.1fe36b3fjdZDrJ&order=score&type=&p=21#answer-146597

145、@1572054130306817我的第83行代码是学习笔记,记录着学习的点滴

https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.230.1fe36b3fjdZDrJ&order=score&type=&p=21#answer-146587

目录
相关文章
|
3月前
|
Python
编程之禅的奇幻之旅:探寻代码世界与生活万象的惊世共鸣,颠覆你的认知!
【8月更文挑战第7天】编程不仅是技术活,更融汇艺术与哲学。它启示我们在生活里追求简洁高效,如Python列表推导式的优雅;教会我们面对挑战时冷静分析,正如调试代码;体现分工合作的重要性,像模块化设计;并鼓励持续优化,提升效能。编程所蕴含的生活智慧,能引导我们创造更美好、有序的人生。
49 1
|
程序员
编程高手,都在培养自己的“硬核力”
编程高手,都在培养自己的“硬核力”
117 0
|
4月前
|
数据采集 人工智能 数据可视化
“会数据同学”首站走进雅戈尔,看老牌男装品牌如何用“数据+AI”华丽转身
“会数据同学”首站走进雅戈尔,看老牌男装品牌如何用“数据+AI”华丽转身
130 0
|
人工智能 运维 中间件
推荐一位阿里朋友的巨作,助你成为顶尖服务端开发者——《服务端开发:技术、方法与实用解决方案》
推荐一位阿里朋友的巨作,助你成为顶尖服务端开发者——《服务端开发:技术、方法与实用解决方案》
599 0
|
人工智能 机器人
人工智能使用入门小妙招
人工智能提升营销功能的一个重要方法是帮助团队更好地进行预测,而不是手动挑选活动目标。多年来,我们都坐在会议室里,盯着电子表格里的单元格做出决定。鼓励团队成员思考,如果他们能够更好地预测...
134 0
人工智能使用入门小妙招
|
程序员 数据库
“科班出身”的程序员和“培训出身”的程序员的大型辩论(甩锅)现场
前几天阿粉说阿粉最近换了公司,而且入职之后干掉了公司里面的测试数据库的事情,而接下来的事就比较有意思了,来自“科班出身”的哥们和来自“培训出身”的我的大型辩论(SIBI)现场,也不能说是通俗的甩锅,但是确实有那么点意味。
“科班出身”的程序员和“培训出身”的程序员的大型辩论(甩锅)现场
|
架构师 安全 Java
开发者故事|热爱代码且发量惊人,一名反“内卷”研发工程师的日常
许多人在选择“程序员”这一职业的背后,或多或少都会有故事可讲。本文是我们与一名 Erda 的用户沟通时深度挖掘到的故事,征得本人同意后对其进行了整理,并设立了【开发者故事】这一栏目,旨在收纳广大同学的故事。
264 0
开发者故事|热爱代码且发量惊人,一名反“内卷”研发工程师的日常
|
人工智能 算法 IDE
玩游戏也能学编程!少儿编程教育如何为中国AI时代“播种”?
玩游戏也能学编程!少儿编程教育如何为中国AI时代“播种”?
282 0
|
程序员 UED
小视频源码的发展之路,专业的程序员给你涨知识
最早的小视频应用只是作为一个工具应用出现在公众面前。 经过多年的发展,它已经转化为各种各样的形象,在公众面前。 短视频资源的开发过程是什么? 让我们看看。
小视频源码的发展之路,专业的程序员给你涨知识