開源與創業
本文是根據我在高可用架構群聚會上的演講整理而成。從小一直是個訥于言的人,每次公開演講都感覺會有緊張,不能完整的表達自己的想法,很羨慕演講時能侃侃而談的人。所以還是把自己的想法整理成文章表達出來。
個人在開源方面算是新手,16年初發布了一個開源項目,叫 go-commons-pool ,是一個golang的通用對象池,到現在快200個星。創業方面也算是新手,15年初開始作為技術合伙人創業做團隊通訊協作工具。一年里做開發的同時兼職做點產品的工作,也做點運營的工作。感覺創業和開源二者的共通之處挺多,所以和大家分享一些感悟。前面各位講的干貨比較多,我這個項目技術上比較簡單,所以我聽從Tim的建議,多攙些雞湯吧。 :)
無論是創業還是開源,首先面臨的第一個問題是做什么?要做什么的想法從哪兒來呢?無外乎以下兩個途徑:
- 觀察 觀察周圍的人,觀察自己的生活和工作,觀察大家的習慣,看哪兒還有改進的地方,看哪里有痛點。比如我這個pool的想法就是有人在群里提問,我搜索了下,發現golang確實沒有通用好用的對象池。再比如有人發現打車這么難,站路邊半天等不到,于是有了Uber。有人想在多個設備同步文件,于是有了Dropbox。有人發現工作中老在做重復工作,于是有了各種框架。
- 借鑒 看看其他先進的地區,先進的領域,是否有可借鑒的,將先進地區或者領域的成果移植到落后地區或者新的領域。一直比較熱門的Copy To China創業就是這種模式,通過先進地區的發展軌跡來預測落后地區的未來趨勢。那天高可用群里indigo的分享,通過日本的經濟社會的發展來預測中國的趨勢也是這個道理。我做這個pool,其實也是分析了java社區的情況,覺得golang在以后服務器端大有作為,肯定需要一個健壯的對象池,用來做連接池等用途。
想好了做什么,下一步就是怎么做。這一步,貌似創業和開源差距比較大,但二者共通之處還是有的,其實做的關鍵點是評估以及安排『事』的資源投入。資源包括金錢和時間。如果前面想的事情太大,和實際的資源不匹配,結果可能就是創業黃了,或者開源項目創建了個倉庫,寫了個readme然后就沒有然后了。這里面考驗的是對事情的復雜度的評估能力和對資源的把控能力。
項目做出來之后呢?再下一步就是怎么讓你的用戶群知道了,也就是現在流行的說法叫『安利』。PingCAP的黃東旭剛才也提到了他們的營銷方式和渠道。這步的核心是你要知道你的用戶群的注意力一般在哪兒,如何以最小的成本觸達你的用戶。開源項目可能是通過各種開源社區或者技術人社區,自己的社交網絡,技術會議等各種方式。
初步的用戶觸達完成,用戶知道了你的項目,有部分人可能點了星,這部分人是潛在用戶。另外一部分人fork了,估計是準備要使用或者做二次開發了。那如何維系當前的用戶,并且吸引更多的用戶呢?這就是這個階段要考慮的。包括但不限于以下方面:
- 完善文檔,教用戶如何使用。不要嫌棄用戶『弱智』。
- 響應用戶的反饋,處理issue。創業產品的話就是要有客服體系了。
逐漸用戶多了,然后形成社區,有了自己的品牌。這一步,像我做的這樣的小工具達不到,但比如PingCAP的TiDB,像謝孟軍的beego這種框架,都已經形成自己的社區和品牌了。
總結下這個過程中的關鍵點:
-
點子沒抽象好。其實所有工具和產品都是在做一種抽象,對用戶需求的抽象。比如那個經典的例子,問用戶需要什么,用戶肯定說是要更快的馬,而不是一輛汽車。汽車就是對用戶出行需求的抽象。但如何做這種抽象呢?我總結了下有三個境界。
- DRY原則(Don’t repeat yourself),不要重復自己,最常見的是用在代碼規范里,建議大家不要隨意復制粘貼,而是要做一定抽象。但實際上,所有的語言的高級功能,面對對象,模塊化,代碼生成工具,各種框架,都是在解決這個問題。也就是說,如果你發現你在做許多重復勞動,說明這里就有可能抽象出個工具出來。
- 不要重新發明輪子 這個原則貌似有爭議,但我覺得爭議是沒搞清楚『發明』和『造』的區別。不要重復發明輪子,但你可以造新的輪子,或者改進已有的輪子。這個原則說的是不要重復別人已經完成的工作,不要閉門造車,要在前人的基礎上做改進。一直覺得發明輪子的人是很偉大的,也很難的,歷史地位可以和發明取火術有的一拼。有了輪子后,人類所使用的工具和動物所使用的工具才有了本質的區別。
- 前面我們做到了不要重復自己,也做到了不要重復別人,第三個境界就是『不要讓別人重復你』。將你的工具,框架,抽象分享出去,作為開源產品或者SaaS服務,讓別人不再重復你已經完成的工作。
- 開發速度慢了,競品出現,或者功能比競品弱。
- 推廣沒做好,大家不知道,結果被后來者超越了。
- 做出來的東西沒有實際需求 比如pool,有人覺得go里用channel模擬就很簡單,沒必要用個復雜的pool。比如許多Copy To China的項目,發現在中國的環境水土不服。
- 開源后不維護,沒了熱情,用戶反饋無響應,最后都流失了。好多僵尸開源項目都是這樣了。
所以,我覺得想創業的工程師,可以先從開源做起,將開源做為創業的一次演習。體驗一次從構想,開發,推廣的整個流程,這樣可以對創業過程中的關鍵點有些體驗,可以評估自己的長處和短板。畢竟自己是工程師,開發的時間可以自己掌控,面向的用戶也是工程師,所要解決的問題是自己熟悉的領域,需要傳播的社區也是自己熟悉的社區,這種天時地利人和的情況下做項目還是遇到困難,可以想象下,如果換到一個自己不熟悉的領域,不熟悉的用戶,不熟悉的社區,困難會有多大?
另外說一句關于技術人創業的觀點。我覺得王安石一句詩非常好『春江水暖鴨先知』,我們一線的寫代碼的工程師是在水里的鴨子,江水變化我們肯定首先會感覺到,這方面是有優勢的。如果你高升了,不寫代碼了,跑岸上去了,那可能就感覺不到江水變化了。
來自: http://jolestar.com/opensource-and-startup/