玉伯,螞蟻研究員,體驗技術部負責人。2008年加入淘寶,2012年開始在支付寶致力於設計語言 Ant Design、數據可視化 AntV、知識協同語雀等領域的工做。目前一心打造服務於螞蟻金服及業界的一流技術與產品。
在2021年527螞蟻技術日上,螞蟻內源社區舉辦了內源專場,在專場上玉伯給你們分享了《開源有帶給我什麼》,如下爲演講的圖文整理。echarts
個人開源之路框架
我從2009年到2018年,接近十年時間,一直在作開源的一些事情,在這個過程當中收穫了不少東西。今天就和你們分享一下,回顧這十年,個人一些收穫和感觸。異步
我最開始註冊GitHub是09年的夏天,再以前,是在Google Code上面有一些我的項目。這張圖是10年七、8月以後,開始在GitHub上瘋狂提交代碼的時候,那時候成天沉浸在代碼裏面,如今回想起來仍是很開心的。模塊化
這些年作過一些開源項目,最開始是模塊加載器Sea.js,在淘寶時期和別人一塊兒開發了Kissy項目,來支付寶的早期作過一個不太成功的項目Arale,作了大概兩年以爲這個方面是不對的,立刻切換開始去作Ant Design,再後來又開啓了AntV數據可視化開源項目。固然,體驗技術部還有不少作的不錯的開源項目,好比egg.js和Chair,不過這些我參與很少。工具
個人收穫之一:高效工做性能
這些年我一直在思考,我在參與開源的過程當中真正的收穫是什麼。spa
我總結了三點。其中第一個就是養成了高效工做的習慣。命令行
高效工做裏面包括幾個小點,首先是文檔優先。設計
在文檔方面我印象最深的一件事,就是在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,還有找到對你有意義和熱愛的一些事情。
總結一下,若是說開源帶給我什麼,首先第一個就是高效工做的習慣,讓我受益終身;第二個是在這個過程當中,學會了怎麼去作產品;第三個是很是感謝本身有興趣參與一些開源項目以後,從中感覺到什麼叫熱愛,從而改變了我對人生的不少見解。