許式偉,七牛雲端儲存CEO,曾任盛大創新院資深研究員、金山軟體技術總監、WPS Office 2005首席架構師。在接觸Go語言後即可被其大道至簡、少即是多的設計哲學所傾倒。與團隊合著《Go語言程式設計》。七牛雲端儲存也是國內第一個吃螃蟹的團隊,核心服務完全採用Go語言實現。
為此,eoe對這樣一個傳奇的技術員和團隊進行了專訪,希望大家看完後能對Go語言有全新的認識,掃除大家學習新技術語言恐怖和障礙。同時許總也談了如何從一個普通程式設計師成長為首席架構師,做程式設計師與做Team Leader與CEO的區別,希望對技術成長和創業感興趣的開發者有所幫助。
eoe:許總您好,感謝您從百忙之中抽出時間來接受eoe專訪,您能簡單介紹下您自己和七牛團隊嗎?
許式偉:大家好!我是七牛雲端儲存CEO許式偉。七牛雲端儲存是專為移動時代開發者打造的資料管理平臺。主要託管企業的富媒體(圖片和音視訊等)檔案,為企業提供了一站式線上資料託管、全國乃至全球範圍的上傳下載加速、以及雲端資料處理(如圖片縮放、打水印、音視訊轉碼、流媒體播放等),省錢省時省力又省心。
七牛雲端儲存的出現並非我偶然的想法。我從 2000 年加入金山,做的最後一個軟體是WPS Office 2005,任首席架構師。2006年開始,整個金山面臨網際網路轉型,在這樣的背景下我向CEO雷軍申請成立了金山雲端儲存實驗室(金山快盤的前身)。剛開始這個實驗室有技術研究為主的味道,但很快我發現雲端儲存其實是一個技術門檻很高的方向,並且在可預見的未來有很大的商業價值。從此之後,我的職業規劃一直圍繞它展開。2008年我離開金山,先在百度的網頁搜尋部呆了很短的時間,隨後在 2009 年初加入了盛大創新院,發起了祥雲計劃(很巧合現在北京市也搞祥雲計劃)。
2011年中,感覺到了移動網際網路產業蓬勃發展,雲端計算到了落地的階段,我決定辭職創業。我主要的創業夥伴來自金山和盛大,都是長期合作默契的同事們。於是七牛就這樣誕生了。很感謝我的夥伴們,我們一起在雲端儲存這條道路上已經走了很多年。我們會把它作為需要終生奮鬥的事業來經營。
到今天為止,七牛雲端儲存在業界也樹立起了自己的口碑,這一點令我很欣慰。但是,未來的路還很長。在產品上我們希望七牛雲端儲存能夠與其他大品牌公司產品形成差異化、互補的關係,大家一起努力改善創業者的生存環境。未來七牛會在雲端儲存技術架構,富媒體雲端處理的應用,以及資料傳輸加速層面做更多的優化與創新。
eoe:您是一位開源愛好者,釋出過包括WINX、TPL等十餘個C++開源專案。做開源專案能對技術人員本身有哪些方面的提高?如果以前沒接觸過開源專案應該從哪些方面著手?
許式偉: 開源是一種奉獻的精神,也是Geek精神的體現。做開源專案主要有這些好處:
1、協作的能力,可以深刻理解開源專案如何進化,如何分工,如何與大家協同合作。
2、軟體工程的能力,開源社群往往把做事方法提煉的很好,比多數正規商業公司的研發過程高效很多,這種經歷能夠提升個人對軟體開發過程的理解。
3、與人交流能力,開源過程中可以瞭解別人的想法,也可以與別人交流自己的想法。
4、推廣自己的能力,做好一個東西相對容易,但讓別人知道這個東西好,又是另一種能力。
沒接觸過開源專案也可以從下面三點嘗試:
1、勇氣,走出第一步很重要,此後就一發不可收拾。
2、如果不知道怎麼開始,可以從參與自己感興趣的開源專案開始,瞭解別人怎麼做的,自己可以參與哪些事情。
3、也可以從自己平常提煉的一些獨立模組開始,如果你覺得有人可能需要,就可以把它貢獻出來,當然,先要記得去徵詢下公司的同意,避免出現智慧財產權上的糾紛。
eoe:眾所周知,Go語言是谷歌在07年開始的業餘專案。從09年11月正式對外發布到12年3月釋出的正式版也經歷了近三年時間。而您的專著《Go語言程式設計》在2012年9月就正式出版。您是從何時開始關注Go語言?又是什麼原因驅使您花時間去研究Go語言並把它投入到實際工作和專案中?
許式偉:我從 Go 語言釋出之初就留意到這門語言,但是當初只是簡單看了下語法,沒有深入研究,也沒覺得它好在哪裡。真正花心思去研究Go,還是要說到七牛。11年5月份,我們決定創立七牛,在為七牛做技術選型時,我重新認真評估了Go語言。我大概花了2周用Go語言寫了幾個模組,就深深喜歡上了這門語言,認為這門語言將是在未來10年引領潮流的語言,所以當時我給夥伴們發了一封信,說:“創業過程中我們會面臨很多選擇,必然有一些選擇最終會被證明是錯誤的,但是選擇Go語言作為我們的服務端開發語言,很可能會成為我們最正確的一個選擇”。如果當初還有人懷疑這一點的話,我覺得今天這個論斷很大程度已經被證實。
eoe:七牛雲端儲存是國內第一個吃螃蟹的團隊,核心服務完全採用Go語言實現。你們採用Go語言作為核心服務的基礎,是基於什麼考慮?為什麼不採用其它更成熟穩定的語言?如何保證核心服務的效能與穩定?
許式偉:最初去評估Go語言最重要的原因是,我們沒有找到一門合適的語言。從雲端計算領域的主要技術方案看,最受歡迎的是C++和Java。我們知道亞馬遜是用了Java。我個人嘗試Java做服務端開發是在2007年金山實驗,Java的風格比較拘束或嚴謹,與我推崇的程式設計風格不合,並且在分散式系統開發上沒有顯著的優勢,所以才會關注Erlang(也因此有了ECUG社群)、Go等小眾語言。在我評估完Go語言後,我認為它是雲端計算領域最合適的開發語言。
效能來說,Go語言作為網際網路時代的C,並且是編譯型,效能是絕對不低的,完全滿足要求,而且可以預期未來會好於Java。
穩定性來說,雲端計算都是假設單機是可以當機的,要在單機的不可靠下讓整個叢集可靠(這種當機甚至不為使用者所感知)。我們並不擔心單個程式的穩定性,哪怕Go程式每天會掛一次,對我們而言,也是可以接受的。
eoe:Go語言才推出不久,這方面人才很稀少,而你們團隊專案的核心服務又是基於Go語言編寫,怎麼解決Go語言人才緊缺的問題?是招進來從頭開始學習還是需要有相關經驗的?
許式偉:Go語言入門門檻非常之低。有任何其他語言的背景,學習Go語言只需要一週的時間。**我們面試從來不問你會不會Go語言。我們關心的是開發者的能力與我們業務的匹配度,比如他演算法基礎如何、是否擅長網路程式設計、是否適合創業(對事情的責任感)等等。**
eoe:許多開發者對Go語言有很感興趣,躍躍欲試。但又由於目前Go語言還不是主流,他們不敢貿然投入精力去研究。就您學習Go語言及現在工作中的使用經驗來看,對想學習Go語言的開發有什麼建議或意見?學習過程中有些什麼技巧?需要哪些技術積累?
許式偉:我對Go的學習者的建議是:**與其觀望,不如趁早體驗。**Go是未來,你的投入肯定有一天會得到巨大回報,而且越早了解,你的優勢就越明顯,這個回報也會越好。學習技巧方面,興趣是最好的老師。計算機是實踐科學,做一個自己喜歡的專案,勝過做100個習題。我唯一的建議是,專案最好是做伺服器相關的,否則和Go目前擅長的領域不合,難度會高一些(但是如果你喜歡挑戰也沒有問題)。
eoe:您在2000年進入金山,到2008年離開金山時,已經是WPS首席架構師,您是怎樣在這8年時間裡從一個程式設計師成長為架構師的?可以談談其中的成長曆程嗎?這其中需要怎樣的技術背景和學習技巧?
許式偉:我認為成為架構師並不需要哪些技巧,其實很多是和人的做事方式有關。我個性比較喜歡反思,一段程式碼寫好了以後,會反覆進行程式碼審查,是不是可以寫得更漂亮。我一直認為**成為架構師唯一的訣竅,就是不斷實踐+反思的過程。對架構師而言,永遠不要忘記需求。**架構終歸是要滿足某種需求。架構能力完全體現在你對需求的準確把握。準確把控需求,不只是要準確理解當前的需求,也要準確理解需求的變化,預見什麼會發生,而什麼不會發生(防止過度設計)。
eoe:您現在已經是七牛的CEO,能給各位開發者分別談談做一個程式設計師、、Team leader和公司CEO的區別嗎?您是怎樣在工作中提升自己的管理能力的?
許式偉: 作為程式設計師,除了不斷提升自己的技能,讓一件事情完成地又快又好;還需要考慮自己如何促進組織的進化,讓整個團隊的協作更高效。
Team Leader保障的是整個團隊的工作效率,不斷改善團隊的做事方法,讓事情更有序地進行。
CEO這個稱呼還是蠻沉重的,因為這是我第一次創業,所以我還算不上一個非常稱職合格的CEO。但我明白,作為七牛的CEO:要懂得知人善用,儘可能為員工創造好的條件;與合作伙伴保持良好的合作關係;傾聽使用者的聲音,理解使用者的訴求,讓使用者喜愛我們的產品。
一個好的管理者,首先需要具備長遠和全面的發展眼光,其次是在工作中要有自己某方面突出的專業能力,再有就是自身的人格魅力。簡言之,要上行下效,只有自己做的好別人才會看得起你並且願意為你工作。
本文轉載自:eoe