任何一款开源软件都不会是完美的。
使用过程中遇到问题,有的人会说,这是语言本身的限制;有的人会寻求临时性的解决方案;还有的索性换个技术栈。
他不一样,打从2013年开始,只要是他遇到的库,使用过程中遇到问题,他会执着地去社区提 pull request 。
一点一滴,就像一个拿着刻刀的工匠,逐渐打磨出完善精密的形状。
那年被提名为 Node.js Colloborator 的时候,他还只是个创业公司的小码农。
如今,他已是前端智能化开源项目 Pipcook 的负责人。
雷姆表示:“前端是一群非常有想象力的开发者,我希望能更多帮助他们发挥这种能力。”
▐ 游戏、留级与编程:误打误撞的前端
点进他的 GitHub 首页,赫然会被头像里那个笑得谦逊而温柔的动漫女孩吸引,浅蓝色的头发轻柔地飘扬开,仿佛给整个博客页面吹过一阵轻风。
那是他最喜欢的动漫角色,雷姆。也是他在阿里的花名,寓意着坚强和温柔。
成为一名前端工程师,是他从未想过的。
和天才少年从小接触电脑和代码的套路不同,雷姆是学无机非金属材料与工程的,从大二起,他无心上课,沉迷游戏,甚至因为学分不够被留级了。从08级1班降到09级1班,以往甚少管学习的父母也急的展开了促膝长谈。
故事依然没有走向 GPA 爆表逆袭的一面。
雷姆喜欢上一个女孩,女孩想做一个网站开店。于是他开始自学 flash,然后学 DW,学 ActionScript 和 jQuery,学着学着有点上头,他就把做网站的事情给忘了……
后来,他就做了前端。
▐ 左手公司,右手社区:不要给自己设限
雷姆的第一份工作在北京一家创业公司,去了之后才发现并不是前端岗位,主要职责是用 Node.js 写服务器,做邮件推送系统。
创业公司比较辛苦,变化也多,遇到的困难超出自己的领域是很常见的事情。
反而是在社区里的雷姆,可以专心致志写自己喜欢的技术,所获得的认同感和成就感远高于工作。
雷姆所负责的项目,上线第一天由于缺少严谨的测试和审核流程,在用户端出现了比较严重的问题。“我觉得无论作为开发,还是测试,仿佛是墨菲定律的实践典范,你觉得不会发生的,就真的会来。”
正逢沮丧的雷姆,机缘巧合在微博上认识了一位年龄 50+,在银行做账务类工作的老师。这位老师业余爱好编程,同样的工作,别人做 6 个小时,他自己通过编程的方式 2 个小时就能完成,从而有更多时间去学习更多的东西。
“从他的经历,我感觉到平时的抱怨是自己没有真的想方设法去解决自己的问题。”
遇到超出范围的问题的时候,不要用“我只是一个前端”来逃避。单纯地聚焦在这个问题上,从0开始看它,不给自己设限,随时准备好在在编程领域学新的东西,慢慢地,就会越懂越多。
这是雷姆最早学会的程序员职场成长法则。
与此同时,他从未停歇在 GitHub、知乎等地的输出和耕耘,作为 Node.js Collaborator 的贡献者,他收获了2.2k 深度用户粉丝,是大家心中低调的大神。
(雷姆式习惯谦虚:不不不,我不是大神)
▐ “做一件有利于所有前端工程师的事儿”
雷姆的职业生涯兜兜转转,他曾抱着“一边写码、一边旅游”的梦想做了兼职外包工程师,却因为旅游区 WIFI 和位置不好容易断网,又回归了全职;他曾因为“丈母娘喜欢大公司名气”来到了阿里巴巴机器人公司,又由于项目终止和转岗,做出了新的职业选择。
“那时候,我不知道自己应该做什么。”离开了阿里,这是雷姆一直在思考的事情。
这种困惑并不是他要不要成为一个前端,而是成为一个前端是为了什么。
技术并非是一种冷漠的推动生产力的力量,它不仅解决了时代下的生产效率问题,财务利润问题等,对于技术背后的个体而言,他们每推进的一行代码,是如何与自身追求的理想价值相关联的,这是技术背后的动力和温度。
一开始,雷姆只是把前端当做一份工作。渐渐地,他真真切切地在 coding 的领域收获了乐趣。无论多晚下班,他每天都会花时间泡在社区和开发者交流。
“我发现,国内外的前端都是一群非常有想象力的开发者。因为前端的技术相对比较轻,更容易让开发者实现自己想做的东西。”
彼时,谷歌的深度学习框架 tensorflow 正在流行,雷姆尝试着在社区写一个 Node.js 的版本。尽管这个版本的 tensorflow-nodejs 只能做预测使用,但依然引起了 Node.js 创始人 Ry 以及 jQuery 的作者等不少大牛的关注。
但由于 tensorflow 胶水层的代码是用 Python写的,越往深,几乎全部沉淀在 Python 这边。雷姆发现,这样写下去,几乎等同于重造,只好搁置了。
2 年后,雷姆机缘巧合认识了阿里淘系的甄子老师,甄子提出,“能不能直接从 JS 调用到 Python ?”
听到这个想法的雷姆瞬间进入了亢奋状态,当晚便开始自己的捣鼓尝试。
“越写越觉得正确,真的可以把这个生态打通!”
认同甄子老师理念的雷姆,再次回到了阿里,加入了 FX Team,一支致力于探索和实践前端智能化领域的队伍。
雷姆:左二
这一次,他已经非常知道自己的方向了。
“这就是我想做的事情,我希望架桥,我希望降低前端开发者的学习成本,以更低的门槛,去最大化地释放他们的想象力。”
▐ 开源项目 Pipcook —— “前端工程师的智能化”
知乎上有人质疑,前端非要和 AI 绑定在一起,纯属异想天开的炫技。
“前端要和市场沟通,它是主观的、动态的,非要搞个什么智能化,就变得简单而机械了。”
不同于理所当然可以智能化的后端,在这个新概念的领域里,大部分人都无法理解,也觉得无法落地。
对于雷姆和开源项目 Pipcook 而言,我们不是做前端的智能化,而是前端工程师的智能化。
“它不是说这个前端页面里有多少智能化的东西在里面,而是我们国家有多少人有使用机器学习去解决问题的能力,Pipcook 就是为此而存在的。”
前端社区可以通过复用 Python,来补充自己生态中的不足,实现从前端工程师向机器学习工程师的转型的第一步。它是一座桥,连接了前端和机器学习。就像雷姆最喜欢的 Node.js 当年,为前端工程师搭起了一座通往服务端的桥。
现在的 Pipcook,依然不是最终最完美的连接方式,雷姆和他团队的伙伴们依然在不断尝试,突破新的思考角度,突破新的编程方式,希望找到最适合前端进入机器学习的方式。
而前端智能化的落地场景,并不诞生于开源技术的圈定和规划,而是社区所有充满了想象力和创造力的前端开发者,将会如何利用这样新的思考问题的角度,把二者生态连接起来,以更有效的方式,去解决更多的问题。
“就是这种慢慢找到目的和答案的感觉,让我越来越兴奋。”
除了 Pipcook 的项目,雷姆在阿里淘系最有价值的收获,是找到了技术的立足点。
在社区,技术要受欢迎,要黑科技,要酷,要的是大呼精妙的过瘾和爽感;在淘系,由于业务场景的复杂和丰富,有时候雷姆从技术角度出发觉得理所当然要做的 ABCD 4件事,会被甄子老师一遍又一遍问,目的是什么,出发点在哪里,如何让业务提效或者减少人力……
技术不再是一颗螺丝钉,雷姆开始学着用体系化的视角去看待产品和技术问题,这种将思考的珍珠串成连贯线路的感觉,让雷姆觉得自己的代码不飘了,有了真切的立足点,是他工作中另一个亢奋的源泉。
▐ 结语
聊起社区和技术的时候,雷姆的语速总是不自觉地加快,气息里都是神采飞扬。
聊起生活里的琐碎,雷姆习惯性慢半拍,歪着脑袋想好一会儿才能依稀记起那些时间和地点。
一如他喜欢的动漫角色,妖尾里的纳兹,灼眼的夏娜,他们都是有着清晰理想目标的元气少年少女,雷姆将自己满满的元气和干劲儿交给了 coding ,这样的幸福无可比拟。
他的爱、细心和浪漫同样交给了 coding 。他曾经将自己的名字和夫人的名字(Yorkie & Babeee),悄悄咪咪写进测试用例里,作为一种镌刻,长长久久将名字留在了 GitHub 里,被无数志同道合的人不经意阅读与祝福。
“真正的工程师,内心应该是开放而包容的,他们不会纠结于某些概念学不动、要不要学,而是通过实践和参与,取百家之所长,让自己的代码或者软件,能烙下历史的烙印,无悔于工程师三个字。”
这是雷姆对 coding 的尊重和执着。
雷姆的 GitHub :
https://github.com/yorkie
附:Pipcook 项目介绍
1.项目地址
https://github.com/alibaba/pipcook
2.项目介绍
可实现什么:提供前端可用的视觉和 NLP 能力
可用于哪些场景:Design2Code
运行环境:mac、linux
开发语言:JavaScript、Python
开源协议:Apache 2.0
架构图:https://github.com/alibaba/pipcook/issues/30
✿ 拓展阅读
嘉宾|雷姆
编辑|橙子君
出品|阿里巴巴新零售淘系技术