正逢沮丧的雷姆,机缘巧合在微博上认识了一位年龄 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 能力
HTTP
-
HTTP 报文结构是怎样的?
-
HTTP有哪些请求方法?
-
GET 和 POST 有什么区别?
-
如何理解 URI?
-
如何理解 HTTP 状态码?
-
简要概括一下 HTTP 的特点?HTTP 有哪些缺点?
-
对 Accept 系列字段了解多少?
-
对于定长和不定长的数据,HTTP 是怎么传输的?
-
HTTP 如何处理大文件的传输?
-
HTTP 中如何处理表单数据的提交?
-
HTTP1.1 如何解决 HTTP 的队头阻塞问题?
-
对 Cookie 了解多少?
-
如何理解 HTTP 代理?
-
如何理解 HTTP 缓存及缓存代理?
-
为什么产生代理缓存?
-
源服务器的缓存控制
-
客户端的缓存控制
-
什么是跨域?浏览器如何拦截响应?如何解决?