玉伯:开源有带给我什么

在2021年527蚂蚁技术日上,蚂蚁内源社区举办了内源专场,在专场上玉伯给大家分享了《开源有带给我什么》,以下为演讲的图文整理。

我的开源之路

我从2009年到2018年,接近十年时间,一直在做开源的一些事情,在这个过程中收获了很多东西。今天就和大家分享一下,回顾这十年,我的一些收获和感触。

我最开始注册GitHub是09年的夏天,再之前,是在Google Code上面有一些个人项目。这张图是10年7、8月之后,开始在GitHub上疯狂提交代码的时候,那时候整天沉浸在代码里面,现在回想起来还是很开心的。

这些年做过一些开源项目,最开始是模块加载器Sea.js,在淘宝时期和别人一起开发了Kissy项目,来支付宝的早期做过一个不太成功的项目Arale,做了大概两年觉得这个方面是不对的,马上切换开始去做Ant Design,再后来又开启了AntV数据可视化开源项目。当然,体验技术部还有很多做的不错的开源项目,比如egg.js和Chair,不过这些我参与不多。

我的收获之一:高效工作

这些年我一直在思考,我在参与开源的过程中真正的收获是什么。

我总结了三点。其中第一个就是养成了高效工作的习惯。

高效工作里面包括几个小点,首先是文档优先。

在文档方面我印象最深的一件事,就是在2010年左右参与到CommonJS开放组织里面,这是一个虚拟的组织,最主要的产出就是文档,我在里面感受到了业界这些顶尖的专家对于文档的重视。

当时,大家通过一个wiki系统以及Google Group论坛在一起,讨论什么叫模块,以及拟定它的1.0、1.1等版本的规范细则,每个规范中都有很多分支,围绕里面的很多细节,大家吵的不可开交。正是通过大家的努力产出的这些规范文档,对整个行业都起到很大的帮助。

经常参与开源的同学可能发现,在文档优先这方面,老外比我们重视太多了,有点项目可能还只是个空壳,但里面已经讨论很多了,把很多想法思路、怎么做、可能遇到什么坑这些问题,通过文档和讨论,想的比较清楚了才动手去写代码,这点和国内是很不一样的。

当你真的深度参与开源,并且以文档先行的方式去实践的话,你的收获会非常之大。

第二点就是,在开源社区非常强调异步协作。无论是GitHub上的issues,还是Google的Groups,都是异步协作的利器,后来语雀的讨论区也借鉴了这些思路,就是是因为我们发现,异步协作比线下会议高效很多。我也非常想在公司内去推行异步协作,在体验技术部有句话,与其在钉钉上找我,不如发个issue给我,你可能会更快的得到反馈。

人们通常进行交流的手段就是听说读写,其中读和写是比听和说更高维度的手段,需要更多逻辑和抽象能力,更有助于问题的及早解决。

最后一点是求同尊异。GitHub上有些项目参与人数众多,大家参与讨论很激烈,如何在有分歧的情况下达成共识,以及不仅达成共识而是让社区往前走一步,这是需要一些领导力,以及一些意见领袖做出一些牺牲的。比如当时在CommonJS社区里有一位C语言大拿,他已经实现了一版模块化代码, 比已有的一些都更优雅,但为了让社区意见保持一致往前走,他把自己的代码全删掉了。

在这里,求同尊异不是很虚的词,而是很实际的原则,影响你的很多取舍。

最后一点是挺有趣的,在早期GitHub做社区的可能很多都是技术,比较纯粹,后来各种追求商业化以及个人影响力的都来了。所以我最后一点就是你要知人情世故,现在GitHub上很多开源类库你一看就知道是来蹭名利的,这种情况下笑一笑就好了,不需要去较真,否则会耗费很多无谓的时间,最少也影响心情。但同时你自己不要去人情世故,保持纯粹。开源社区也是个小社会,GitHub也没有大家想象中那么纯洁,有很多故事在里面。

这些习惯和认知一直延续到我现在的工作中,真的给我带来了很多帮助。我相信在开源上,只要你参与进去,你就会获得一些感性的认识,知道它们对你的职业成长和习惯是非常有利的。

我的收获之二:学做产品

我之前做Sea.js这些开源项目的时候,是把它当做一个产品去打造的,因此肯定会遇到产品的灵魂三问:

每一个开源项目在决定要不要去做的时候,都要问自己这几个问题。这些问题其实和很多业务和产品遇到的问题很类似。你必须将这些问题回答清楚之后才能再往前走一步。

比如当初我们在做AntV的G2的时候,就要回答一个问题,当时国内外有higcharts、echarts等开源的可视化框架,也都非常成功,这时候你G2凭什么去做另一个可视化类库?后来和萧庆关于这个问题想了很久,最终得出的答案是我们要做图形语法,而不是以前业界通行的基于配置的可视化,这也正是G2的差异化竞争优势,真的做好了会带来更多的可能性。

关于第二个问题,是因为很多你想做的项目,要么在GitHub上已经有了,要么已经在文档中被人讨论过了,那为什么是你做?为什么你更有可能去做成?这个问题的一个“政治正确”的答案是和你的业务有相关性,更实际的可能是和你这个人更有关系,是你内心想不想做,愿不愿意去长期的投入。

比如Ant Design、AntV,其实当时是集团更有机会去做的,因为集团有数据产品技术部,他们有很多业务,在这些业务土壤下是更有机会去长出这些项目的,但是他们缺人。所以对这个问题我的回答是,很多情况下,人的要素是比业务更重要的。只要你对事情是笃定想要去做的,大胆去做就好了。

第三个问题其实是更难回答的,就是你的边界在哪。之前接触过的一些开源项目越做越大,或者越做越复杂,这不一定是好的。我自己心目中理想的开源产品,是做到一定阶段,就不需要再做了。比如一些命令行小工具,很多年都没有更新了,但大家都在用,因为它们各种接口很完备,已经不需要更新了。做开源项目也一样,当你花一些时间设计好了,然后写完代码,就可以对整个世界说,我做好了,你用吧。当然,这是一种理想状态。

我的收获之三:对事的热爱

我的分享最后一点是热爱。但凡你曾经经历过为开源而疯狂,你就会理解什么叫热爱。而如果你没有疯狂过,热爱对你来说只是两个字而已。

最近袁老去世,举国同悲,我也看了那个40多分钟的纪录片,看的过程中真的是非常感动。特别是里面提到袁老的禾下乘凉梦:他有一个梦,希望稻谷长的像高粱一样高,稻穗比扫把还长,结的谷粒和花生米一样大,到时候他和他的助手可以躺在下面乘凉,睡个午觉。我觉得袁老说到这段话的时候整个人都升华了,看了这段视频,你可以理解什么叫做事业,什么叫做热爱。

当你把开源当做自己的事业的时候,感受其实是一样的,即使生活上很朴素,你也可以过的很开心。当你写代码的时候想着怎么写的更好,某个内存占用怎么降低一点点,某个性能怎么提高一点点,当你满脑子在想这些的时候,一些物欲得失也就没那么重要了。

我希望同学们通过开源,去参与和主导项目,能够感受到这份热爱。持续去感受过几份热爱之后,我觉得你整个人都会不一样的,面对许多事情,你会活的更通透,更透彻。

另外前不久在推特上看到一句话让我挺有感触,他主要说的是,很多人说工作要跟对人,但其实没什么关系,跟你工作的地方和公司也没关系,跟什么人不如跟随自己的内心。真正一个人在职场生涯往前走,应该找到的是你的mission和calling,还有找到对你有意义和热爱的一些事情。

总结一下,如果说开源带给我什么,首先第一个就是高效工作的习惯,让我受益终身;第二个是在这个过程中,学会了怎么去做产品;第三个是非常感谢自己有兴趣参与一些开源项目之后,从中感受到什么叫热爱,从而改变了我对人生的很多看法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python并行运算库_最佳并行绘图Python库简介:“ HiPlot”

python并行运算库HiPlot is Facebook’s Python library to support visualization of high-dimensional data table, released this January. It is particularly well known for its sophisticated interactive parallel plot.HiPlot是Facebook的Python库,用于支持…

Asp.net 文件上传的 FileUpload FileName 和 FileUpload PostedFile.FileName的细节问题

Asp.net 文件上传的 FileUpload FileName 和 FileUpload PostedFile.FileName的细节问题 ASP.NET 文件上传估计大家都用得很熟悉,常用控件 FileUpload 。 主要步骤: 1.判断是否合法 2.获得文件的路径 (包括目录的完整路径,同时可能…

【赠书福利】不扶好眼镜,请别打开这本挑战JS语言特性的书

文末赠福利大家好,我是若川。为感谢大家一直以来的支持和肯定,文末抽《JavaScript悟道》3本包邮送和若干红包,详细规则请看文末哦。"人们不停地给老化的语言“整容”,拼命地往其中注入各种新的特性来稳住其流行地位&#xff…

我在工作中是如何使用Git的

大家好,我是若川。今天分享一篇关于git的好文章。我自己经常用命令行终端和git缩写。具体可以看我以往的文章。使用 ohmyzsh 打造 windows、ubuntu、mac 系统高效终端命令行工具,用过都说好。点击下方卡片关注我、加个星标学习源码整体架构系列、年度总结…

克服浮躁_设计思维:您克服并赢得低迷的最终工具。

克服浮躁设计思维101 (Design thinking 101) Let’s begin by getting ourselves clear on the question: What is design thinking?让我们首先弄清楚问题:设计思想是什么? Many people have an impression that design thinking has something to do …

java参数化查询_小博老师解析Java核心技术 ——JDBC参数化查询(二)

[步骤阅读四]SQL注入按照以上方式开发,确实已经完成了基本的用户登录业务需求,但是这么做的话可以会出现一个比较严重的问题,那就是容易被SQL注入。所谓SQL注入,就是在需要用户填写信息,并且这些信息会生成数据库查询字…

前端抢饭碗系列之Vue项目如何做单元测试

大家好,我是若川。今天分享一篇vue项目如何做单元测试的好文,文章比较长,建议先收藏,需要时用电脑看。点击下方卡片关注我、加个星标学习源码系列、年度总结、JS基础系列关于单元测试,最常见的问题应该就是“前端单元测…

java activiti jbpm_activiti和jbpm工作流引擎哪个比较好?

原标题:activiti和jbpm工作流引擎哪个比较好?在常用的ERP系统、OA系统的开发中,工作流引擎是一个必不可少的工具。之前在选择工作流引擎时曾经在activiti和jbpm之间有过比较,当时做出的决定是使用jbpm,但实际开发过程中…

识别人声_演唱人声的5个技巧

识别人声什么是声乐伴奏? (What is Vocal Comping?) Vocal comping describes the process of combining multiple vocal takes into one “supertake” that has the best parts of each. This is called a “composite track,” or comp for short. Many instrum…

你知道source map如何帮你定位源码么?

大家好,我是若川。今天分享一篇我们经常会忽略的定位原始代码位置原理的文章。文章不长,例子不错,可以先收藏,有空时动手试试。学习源码系列、年度总结、JS基础系列前言我们知道,代码上线前要经过压缩,美化…

OOP 中的 方法调用、接口、鸭式辩型、访问者模式

2019独角兽企业重金招聘Python工程师标准>>> 方法调用的四种方式 直接调用:通过类或者实例直接调用其方法。接口调用或者转型调用:通过将实例回调给一个接口对象,或者转型为一个父类的实例,来调用间接调用:…

游戏 新手引导 设计_我认为每个新手设计师都应该知道什么

游戏 新手引导 设计重点 (Top highlight)I should probably have titled this article “What I wish I knew as a newbie designer.” Anyway, I’ve been doing this graphic design thing for a little over a year now, and I know now, a few things that could have made…

毕业年限不长的前端焦虑和突破方法

大家好,我是若川。今天周六,分享一篇相对轻松的文章。经作者耳东蜗牛 授权转载链接:https://juejin.cn/post/6968002742321152014也可点击文末阅读原文直达本篇文章来源于:周五和团队成员[20年毕业]的一次闲聊。毕业不到一年&…

开源自然语言处理工具包hanlp中CRF分词实现详解

CRF简介 CRF是序列标注场景中常用的模型,比HMM能利用更多的特征,比MEMM更能抵抗标记偏置的问题。 [gerative-discriminative.png] CRF训练 这类耗时的任务,还是交给了用C实现的CRF。关于CRF输出的CRF模型,请参考《CRF模型格式说明…

交互规则_您必须永不中断的10条交互设计规则

交互规则重点 (Top highlight)In life, there are certain rules you must never break. If you do there will be hell to pay. In User Interface design there are also rules to live by. They are called “heuristics” or general principles that improve usability in…

一个帮助我100%拿offer的面试学习法

大家好,我是若川。今天周日,再分享一篇相对轻松的文章。文中说的面试学习法有一定的借鉴意义。另外我也推荐大家每隔一段时间不为跳槽的更新自己简历,也是对自己一阶段的梳理总结,毕竟功在平时。哈喽大家好,我是大圣&a…

java获取apk启动activity_兼容 Android 10 启动 APK 实现方案

背景我们想启动 APK 程序,有很多种方法,可以使用 Intent,也可以使用 adb shell 命令来启动,还有通过反射来启动 APk 程序。我们这里主要讨论通过反射的方式来启动 apk 程序。Android10 之前,我们通过反射来启动 APK&am…

Android Studio中解决jar包重复依赖导致的代码编译错误

在原本的代码中已经使用了OKHTTP和rxjava,然后今天依赖retrofit的时候一直报错 Program type already present: okhttp3.internal.ws.RealWebSocket$1.class 说是我重复添加了OKHTTP的包,但其实我直接把OKHTTP的依赖注释掉都没用,只要依赖ret…

面试被问项目经验不用慌,按这个步骤回答绝对惊艳

大家好,我是若川。常有小伙伴问,面试时项目经验怎么回答,经常会分享这篇文章给TA。本文经授权转载。面试、学习源码系列、年度总结、JS基础系列前言本篇文章的作者是来自阿里淘系用户增长前端团队的“亦逊”,18年作为双非本科生通…

使用概念模型 和心智模型的_为什么要使用模型?

使用概念模型 和心智模型的In a former life, I studied critical feminist theory. This included the field of Semiotics — the study of signs and the production of meaning, as well as Deconstruction —the unpacking of meaning to question assumptions.在过去的生…