从1行代码到20万行开源,我已经走过了三年
今天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日于南京出差途中
精彩推薦1.?漫畫:程序員真是太太太太太太太太有趣了! 2.?漫畫:程序員真的是太太太太太太太太難了!3.?知道創宇楊冀龍:技術人的商業思維都是錘出來的,真實需求長在客戶的KPI上 4.?漫畫:35歲的IT何去何從? 5.?漫畫:從修燈泡來看各種 IT 崗位,你是哪一種?點擊閱讀原文,下載開源的TDengine!
總結
以上是生活随笔為你收集整理的从1行代码到20万行开源,我已经走过了三年的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj-2891(Strange Way
- 下一篇: CTO总结的管理30条军规