從第一行代碼到20萬行開源,我已經走過了三年

開源社 發佈 2020-04-11T04:18:14+00:00

雖我已創業兩次,並成功退出,但實在不想錯過這巨大的機會,抱著「Leavea dent in the world」的想法,我再次沖向戰場,並且衝到了最前線。

編輯:王皓月

轉載自:愛倒騰的程式設計師

作者:陶建輝

開源社引言


這是一個美好的時代,這是一個網際網路的時代,這是一個兒童、青少年、中生代、銀髮族等全民編程的時代,這是一個不分歲月創造奇蹟的時代。前期,開源社報導了82歲程式設計師若宮正子獨立開發 iPhone 手游的故事,引發大家讚嘆,之後報導的90後美女張怡從小白到AI算法工程師的進階之路,點讚無數。今天,讓我們走進年逾半百的陶建輝老師,在風投領域風生水起,熟門熟路之後,在臨近知非之年,為何還像一位毛頭小子一樣,激動中,帶著一腔熱血奮不顧身投入到開源事業中,並且孜孜不倦,竟然毫無「悔過」之意?開源魅力究竟何在?

今天12月17日,對我來說,一特別的日子。因為三年前的今天,我參加溪山天使投資年會,在會場上聽著精彩創業故事的同時,在自己的Mac筆記本上,安裝了Ubuntu,安裝了熟悉的vi, cscope, gdb等開發工具,搭建好了開發環境,正式開始寫代碼。我得意地告訴參會的朋友們,我不想做天使投資人,而是要重出江湖,親自操刀,寫一個巨牛的專門針對物聯網場景的大數據處理引擎,希望今後世界上90%的數據都用我陶建輝開發的軟體來存儲和查詢。

沒想到,一晃三年就過去了。從我的第一行代碼起,TDengine整個系統的代碼量已經超過二十萬行,我自己貢獻的代碼量早已超過三萬行。開心的是,我自己只是開了一個頭,憑藉物聯網數據處理的巨大市場空間,憑藉「捨得」,憑藉「三顧茅廬」的誠意和決心,吸引了一批頂級的人才加入進來。現有團隊的14個人,中國科大本科畢業的就有7位,其中5位還全部在美國留學、工作過,還有兩位獲得過中國科大最高榮譽的郭沫若獎學金,其他同事都來自清華、上海交大、中科院計算所等學府或科研機構,還有三位在華為工作都超過10年之久,14個人中有3位博士,7位碩士。三年前我一個人的夢想,已經變成了整個團隊的夢想和目標。更可喜的是,我一個50歲的程式設計師,能天天與90後、80後混在一起,討論問題,解BUG,讓我頓覺年輕了20歲。

在動手寫下第一行代碼之前,我已經對物聯網、工業網際網路的數據處理做了幾個月的調研,認為大家普遍採用流行的Hadoop系統是完全不合適的,開發效率低,運行效率差,而且運維成本很高。我發現物聯網數據具有時序、結構化、不更新等眾多特點,如果採取「一個設備一張表」的數據模型,採用「超級表」來解決多設備之間的數據聚合分析問題,一定能設計出一個極為高效的物聯網數據處理系統。想到5G的到來,會讓聯網設備的數量指數級上升,今後世界上90%的數據都將是物聯網設備產生的,頓覺熱血沸騰。雖我已創業兩次,並成功退出,但實在不想錯過這巨大的機會,抱著「Leave a dent in the world」的想法,我再次沖向戰場,並且衝到了最前線。

雖然我已經很清晰原理、設計思路,並且是研發老炮一個,但直到實現時才發現,技術難度超過預期。我寫了一個高效的存儲引擎,但「導入歷史數據」卻是一個坑最多的地方,場景實在太多,用戶可能導入的數據在內存,也有可能在硬碟,也有可能跨多個文件,經歷了無數的BUG之後,由團隊的90後,科大郭沫若獎學金獲得者程洪澤重寫歷史數據處理模塊。節點之間的實時數據同步,我重構了三次,才得以讓節點進行同步之時,不影響數據的實時插入和查詢;客戶端驅動,因為同步、異步的各種調用糾纏在一起,我重構了兩次,團隊的廖博士在我的基礎上又做了很多調整。Kill一個正在進行的查詢操作,因為分布式、多線程、資源管理的問題,實現的難度也是遠遠超過了我的預期。但這三年,每次遇到一個難啃的技術問題,我反而很開心,因為它意味著產品的門檻又高了一點,如果我們能把這些難題都完美解決,這才顯示出我們團隊真正的價值。

三年已經過去,前面兩年在埋頭寫程序,最近一年我發力在推廣上,而且在今年7月份,我們做出了極其正確的決定,宣布將TDengine的核心代碼開源。開源還不是我的一時衝動,而是深思熟慮、謀劃已久。因為作為底層基礎軟體,不開源,完全得不到用戶的信任,而且市場上已經有相當多開源的同類產品,不開源,推廣極其之難。令我興奮的是,開源後,TDengine獲得的反饋遠超預期。我曾和團隊說,開源後,我們爭取一年的時間能在GitHub上獲得5000個star就不錯了,但沒想到,僅僅三個月時間,TDengine的star就超過一萬,fork數超過了2800。我們不僅看到了來自中國用戶的反饋,還看到了來自美國、印度、西班牙、義大利、捷克等很多國家的程式設計師的反饋。每天起來後,第一件事就是看GitHub,看是否有人報告新的問題。每當有人報告BUG,我一點的沮喪都沒有,反而是開心,因為說明有人在用TDengine,而且在乎我們產品,這是我最希望看到的。哪怕TDengine的商業化不成功,但只要有程式設計師喜歡這款產品,愛用這款產品,那就是我個人以及整個團隊最大的成功。

開源,不僅讓TDengine獲得了市場的認知,而且讓產品的質量得到了前所未有的提升。雖然在開源之前,我們做了大量的測試,而且好幾個大的客戶已經正式上線,但由於每個用戶的場景不一樣,開源後,TDengine仍然暴露出了很多問題,在GitHub上遞交的問題數量已經超過1000。如果沒有開源,這些問題則需要積累更多的客戶,需要更長時間的在線運營才能暴露出來。由於開源,整個團隊對產品的品質更加關心,像關勝亮、李暉等人,每次遞交代碼,都是小心翼翼。由於開源,不少外部貢獻者參與進來,迫使團隊必須建立完善的開發流程。潘方,美國密西根大學博士畢業,在NASA工作兩年後,加入團隊,負責起了QA的工作,建立起了產品發布、CI/CD、自動化測試、代碼靜態檢查等全套流程,團隊雖小,但已經不再是程式設計師小作坊,不再局限於北京的辦公室。

這一年,為推廣TDengine,我參加了太多的活動。無論規模大小,無論線上線下,在介紹產品時,我總是滿懷激情。很多人好奇,問我如何能做到這一點。其實,沒有什麼「靈丹妙藥」,唯一就是要對自己研發的產品特別熱愛,對產品有足夠的信心。具備足夠的熱愛和信心後,你每一句話、每一個表情、每一個手勢,都能把激情張揚出來。團隊的90後江燚、80後李廣、以及其他團隊成員,甚至我們不愛說話的廖博士,受我的影響,每次介紹產品,也都是激情澎湃,信心滿滿。三年的努力,我終於成功地將我個人的激情轉化為了整個團隊的激情,也希望我們團隊在擴充到一百人、一千人之後,這股激情依然不減。

中國2B軟體的銷售難,底層軟體的銷售更難。但我們很幸運,從2018年8月發布第一個版本到現在,已經有了幾十家付費客戶,免費用戶至少幾百家。而且可喜的是,最近幾個月的銷售訂單完全是依靠兩位銷售大將拿下的,沒有我的任何參與。為什麼有人敢用我們軟體呢?我細細一想,除我們產品本身的幾大優勢之外,有幾大原因,1:傳播方式發生改變,我們通過微博、微信、甚至直播等新媒體做了很多傳播,TDengine在開發者社區里有一定的知名度,而且開源後,傳播力度更大,讓更多的開發者了解到我們;2:產品體驗的方式發生了改變,用戶可以下載源碼自己編譯,也可以下載安裝包或鏡像,安裝極其簡單,還可以通過雲服務的方式,連安裝都不需要,可以說,用戶體驗的門檻幾乎沒有;3:中國缺少自己的底層軟體,因此當我們超強實力的產品推出來之後,受到業界的高度關注;4:中國開發者群體已經很大,而且現在的決策者一般都很了解或很懂技術,有一定數量的人樂意接受新技術或新產品。

三年過去,TDengine要獲得成功,需要做的事情還有太多太多。我們要提供各式各樣的連接器,讓TDengine與現有技術生態能無縫對接;要提供事件驅動的流計算,完全一站式解決物聯網行業的數據處理問題;不僅要解決雲端大數據問題,還要解決邊緣計算的問題。更重要的是,我們需要100%擁抱雲服務。我堅信,開源+雲服務才是基礎軟體的未來,離開兩條中的任何一條,都很難讓濤思數據成為獨角獸。

期望有一天,TDengine的貢獻者能遍布全球,一群不同文化背景、不同膚色的程式設計師,一起協同開發,將TDengine做到極致,為全球90%的數據處理提供一高效、高速、簡單易用的引擎。更期望有一天,TDengine的用戶遍布全球,任何開發者,只要是處理機器、傳感器產生的數據,立馬想到的就是TDengine,那一天便是TDengine的成功之日。


陶建輝

2019年12月17日於南京出差途中

關鍵字: