freeCodeCamp 中文社区创始人 Miya 对我的采访

1. 简要介绍一下自己吧。
艺名水歌、网名 TechQuery,Web/JavaScript 全栈开发者,是多个国内外开源软件项目的作者、贡献者。现为 freeCodeCamp 成都社区第四任负责人,也在开源社基础设施组和 ThoughtWorks 公司工作。2018 年也终于成为小时候仰视的微软最有价值专家(开发者技术类)。
2. 你是什么时候开始接触电脑,什么时候开始写代码的?
小学二年级暑假,老爸给我报了个电脑学习班,从 MS-DOS、Windows 95 开始学,就打开了新世界的大门。正巧学习班租用的是本地新华书店的写字楼,从那时起就养成了课后找书看着学的习惯。
至于写代码,虽然小学三年级开始的计算机课有教 Logo 语言(小图龟),初一每周的兴趣课也有 VB 6 编程,但在当时惧怕数学、英语的我看来,都是抱着书催眠的东西…… 直到大一上 C 语言专业课也没自己写过实用程序。最早上手编程还是因为在大学 IT 社团为同学、老师修电脑太多,发现命令行脚本可以大大提高机械重复工作的效率。
3. 水歌这个称呼是怎么来的?
因为在大学社团里一遇到技术、公益活动的话题就滔滔不绝,那时流行“论坛灌水”的说法,学长就叫我“水哥”…… 我一开始是拒绝的,听起来很“水”,可叫多了就“真香”了,后来又被“伪文艺”的我改成“水歌”~
4、你在大学阶段最难忘的经历是什么?
我的大学 ≈ 图书馆看书写代码 + 做公益 IT 社团
(这两点是我今天对 IT、编程、开源、社区有所思考、有所建树的基石)
虽然高中合伙建过社团,但因为校史上从未有过 IT 社团,基本是自己摸索着做,换届半年后还让学弟给解散了,自觉很不成功…… 当来到川大,遇见飞扬俱乐部这个白手起家、日臻完善的公益 IT 社团,便毫不犹豫地投身进去。
虽然我加入时飞扬已 5 岁,但却正处在从第一次危机中爬出来的过程 —— 技术员水平青黄不接,我们上一届卸任前还出了大型电脑维修活动现场丢了一台联想奥运纪念版笔记本的重大事故。但也是从那时起,我提出的“现场桌椅围合式布局”、设计的《电脑维修服务记录单》和起草的《电脑维修技术员考核大纲》成了飞扬至今的标配。
本届团队上任前的改革研讨会上,我提出的“软件、网络两部合并为研发部”方案被采纳,并成为创始团队成员,开始跟着代码大神学艺。但前期还主要在带其他维修师傅带不过来的“可怜”徒弟,在实践中审校《电脑维修技术员培训教材》、开发软件维修工具,在研发部只担纲“产品经理”和官网副站长,并无独立编码能力,直到大三大四筹划创业也打算做个懂技术的产品经理。
而随着飞扬官网建设的深入,我自己也发起了【川大百科】和《i 飞扬》杂志在线版,本想给学弟学妹锻炼代码能力的工作长期无人问津,一气之下就现学现卖,开始成为真正的程序员了。其后 Windows 注册表分析器、校园宽带路由拨号器、百科数据迁移工具、在线杂志框架等作品相继出炉,它们也成为我后来霸面多家公司拿到多个前端 offer 的敲门砖。
5. 大学毕业后,你的第一份工作是采购业务专员?
家庭原因让我对书店有种特殊的情感,台湾诚品、贵阳西西弗等民营独立书店兴起后令我眼前一亮,对比国营古板的新华书店,觉得这才是“一个城市的精神家园”该有的样子!看了《独立书店,你好!》之后,还曾走街串巷寻访成都的独立书店,所以当初就抱着“每天上班沐浴在油墨清香中”的想法去了一家成都本土的连锁书店。
但近一年的工作让我发现,中国的图书发行行业无论是否国营,状态都相差不大,对绝大多数从业者而言只是生意,我用一张公式不多 Excel 自动表格和一个按键脚本把每天 3 小时的人工压缩成半小时程序运行,已经是大家眼中的“大神”了……

6. 你是 JavaScript 全栈开发者,为什么选择这门语言?对于想学编程或者初入门编程的小伙伴,你有什么建议呢?
我与 JavaScript 结缘也是好事多磨。
高中从电脑杂志上知道 JS 时 jQuery 刚刚发布,那时的主流舆论还是鄙视它的,把各种历史遗留问题和非语言标准的 IE bug 放大来写文章,把它渲染成一个充满 bug 的语言…… 那时,我还是看到文字多的 IT 书籍就退避三舍,没有任何实践,也就没有任何求证,就“人云亦云”了…… 现在真想对当年那些文章作者说:“报道出了偏差,你们可是要负责的!”
后来在大学社团开发电脑装机自动化脚本,因为 Windows 的 DOS 批处理功能羸弱,微软常用的 VBS 语法太丑,新系统力推的 .Net PowerShell 性能、兼容性差,曾仰慕的新手神器 Python 也发展得很庞杂了,微软系统自带的 JS 方言 JScript 就成了首选。毕竟我们这一代大学生都是谭浩强“绿宝书”养大的,“弱类型的类 C 脚本”写起来很舒服~
但我从“懂你”这个层面真正爱上 JS,还是 2015 年劳动节在家仿写 jQuery 开始的,后来这个项目也成为我第一个成熟的开源项目 iQuery.js。
JavaScript (ECMAScript 5) 是一门原生支持函数式编程范式的、基于原型的面向对象语言。
在深入的实践中理解了一门语言的精髓,便会发出由衷的感叹 ——
一个函数、一个对象就能千变万化,简洁得恰到好处、强大到无以复加!
所以总的来说 ——
实践求真、学以致用是学好编程的要诀之一

7. 你参与了很多开源项目,其中哪些经历让你觉得特别有成就感?
高一从堂哥那儿知道了 Ubuntu,为我开启了开源世界的大门。早期只是国内外 Linux 发行版的小白用户,平时的技术钻研还主要是 Ghost XP。但也正是对当年四大系统论坛之一的 Deepin 技术理念的认同与关注,让我在它转型 Linux 的伊始就有所参与。至今还记得 Deepin Linux 第一版发布后连夜安装体验,激动地给联合创始人 hiweed(冷罡华)写建议邮件。在之后的几个版本也给当时的核心开发之一写过 bug、改进汇总文章。如今,Deepin 不但成为最好的中文 Linux 发行版,而且也在国际上名列前茅!
只提提改进建议总觉得自己还没真正参与进去,把自己积累的零散代码放在 GitHub 上也只是自娱自乐。终于在写开源代码 2 年后,2016 年从圣诞节前到来年春节后的两个月,我对 jQuery.prototype.contents()
方法支持 HTML 5 <template />
标签的补丁,在外国前辈耐心指导下历经 8 次修改终于发布在 jQuery 3.2.0!第一次在亿万人每天使用的国际开源项目中留下自己的名字,别提多美了,哈哈!
当然,最让我有成就感的肯定是,有朝一日我自己开发的 Web Components 框架 WebCell 能步 Vue.js 之父尤雨溪的后尘,走出成都、走向世界啦!

8. 你觉得国内有哪些不错的开源项目?
与开源结缘的 14 年,我见过、用过太多国人开发的优秀开源软件,在此只列举还在活跃开发、受众甚广的各领域典型代表 ——
- 硬件级:Grub4DOS,系统启动神器
- 系统级:Deepin,最好的中文 Linux 桌面系统
- 软件引擎:NW.js、Electron,国人创始、全球社区
- 应用软件:Notepad++,Windows 上最强大的文本编辑器,台湾同胞力作
- Web 引擎:Vue.js,个人品牌经营最成功的国人开源项目
- Web 应用:Hexo,生态完善的静态内容网站生成器,台湾同胞力作
9. 你在高中阶段就创建社团,大学期间是川大技术社团的骨干之一,如今是 freeCodeCamp 成都社区的第四任 leader,同时你还在其他技术社区中承担角色,你觉得应该如何运营一个技术社区呢?
大二刚做维修技术师傅时,还像大一新生那样冲在干活儿的第一线,忙得顾不来自己的徒弟,一个徒弟就向社长反映,社长和我说了句 —— 社团每项工作不是让 100% 胜任它的人去做得完美,而应该让还不够格、但可以努力一下做到的人去锻炼。从此我开始转变为导师的角色,事先规划、过程指导、事后复盘,4 年下来荣获“最受欢迎技术师傅”荣誉,但三个和尚问题还是屡见不鲜。
离开大学校园来到 FCC 成都社区,第二任 leader 姜姜也刚上任,虽然她上学时没有社团经验,但兼职打工时敢闯敢干的拼劲儿让她能把我提议“半月一次小活动”的方案贯彻执行,女生天生的亲和力也让她能不断认识、邀请各路大神来做讲师。也正是因为成都社区的人脉扩大,让我们遇见了后来的第三任 leader 青松。
青松与姜姜一见面就说“我想个人出资办个成都前端大会”,与我和姜姜在那一年前的打算不谋而合!而且他不但有想法,也已经做了一些功课,再加上超强的执行力,竟带领大家一个月就办成了首届成都 Web 前端大会!从此大家对他十分佩服,也在换届时众望所归地高票接过姜姜的重担。刚上任就把原定中型活动的 React 技术交流会做成爆款大会,开创了技术大会整合技术招聘的新模式。接下来又多次与美团合办中型技术活动,也把我之前走进名企的想法做成系列活动,最后在第二届成都前端大会上支持我把开源市集实验落地。
姜姜为成都社区招募了不止青松一员大将,还有主办 Code for City 黑客松的 AK、带 FCC 进校园的书香、技术才女 Helen、设计小生波波、设计才女佳琦、文采飞扬的民成、社工经验丰富的小山、创立技术周刊的倩玉和小白、摄影大牛南宾…… FCC 成都社区在两年内一跃成为成都著名、辐射西南、全国知名的城市技术社区,离不开这些被发掘出的人才各显神通!
加上在 FCC 的两年半,我也做了十多年公益技术社团,自认为还没达到心中的“成功”,因为比起领工资的商业公司,公益组织要面临更严峻的人的积极性和工作传承性问题,对此我一直想不出一个满意的答案。
但在 2019 年春节前后用 Hexo 给开源社和 FCC 成都社区做新官网时,摸索出一套基于 GitHub 工作流的技术社区运营法,把一个技术社区转化为一个开源文档项目,现正在 FCC 成都社区实验。

10、你今年有哪些计划呢?
今年有幸加入 ThoughtWorks,希望能在“敏捷软件运动”发祥地之一的公司学习、锻炼团队工作能力,也向公司中的技术社区同仁取经,给我自己的开源项目和技术社区的运营带来一些启发与助益。
同时,也期待我新创的“开源办社区”模式在我和 FCC 成都社区的小伙伴共同努力下,能有效地运作起来,造福更多人!
至于自己的业余生活嘛,希望去年给自己挖的文体爱好大坑可以填上一些,哈哈~
11、对于最近在 GitHub 上关注度蛮高的 996.ICU,你怎么看?
改革开放 40 年来,年轻人终于学会了理性的抗争。感谢互联网!感谢万维网!!感谢开源运动!!!
12. 你最喜欢哪部电影?
作为一个“伪文艺”,我最不会回答“哪部作品最好”一类的问题了…… 问我“世界上最好的编程语言”我倒是能斩钉截铁 —— JavaScript!哈哈~
其实即使我是“真文艺”也难以回答,不同类型片的镜头语言相差很大,就像各地美食一样,各有各的美味,还是看水歌版【豆瓣年度电影榜单】吧,哈哈~