在上一期GitHub中國游記中,我們在長城認識了Zach Holman和Danny Greg,了解了他們對編程學習環境的看法。第二天的下午,Zach和Danny來到了CSDN,接受了我們的采訪。他們沒有預料到將要面對的是一場兩個多小時的“持久戰”,Zach有一篇博文叫做Git和GitHub的秘密,CSDN準備為開發者挖出更多的秘密。
===Episode One: Why GitHub? ===
對于GitHub,好多人都在好奇,到底是什么讓GitHub脫穎而出?代碼托管?Pull Request?為了更好地促進訪問,我們準備了啤酒,用另一種形式“拷問”Zach和Danny。
CSDN:如果現在有人做了一個和GitHub功能類似的網站,你覺得它會和GitHub一樣突出么?你覺得GitHub脫穎而出的關鍵因素是什么?
Zach:首先,第一個問題的答案我覺得會產生一種競爭關系吧。第二個問題,我覺得GitHub突出重圍的因素是我們這里有許多開源的項目,這些開源項目也正是我們能吸引到大量開發者的關鍵因素。
Danny:我覺得GitHub的爆發是由于那些大量的Rails的項目,這是對GitHub產生重大影響的關鍵點之一。關于這個問題,我一直在想Facebook和MySpace的例子。在Facebook誕生以前,大家認為沒有人會離開MySpace,為什么要離開MySpace?看看現在,很少再有人使用MySpace了。在MySpace之前,還有Friendster。所以考慮到之前的無數案例,現在說GitHub會火多久,這個問題很難回答。
CSDN:所以對于GitHub來說,開源項目是最重要的。
Zach:可以這么說。打個比方,如果第二天你起來以后,突然出現了一個比GitHub更好的工具,我覺得這些項目也有可能會遷移走的。我們就有大麻煩啦,哈哈。
Danny:這不就是Facebook的例子么?Facebook的各項功能都要遠勝于MySpace。套用一句話:如果有新事物比舊事物好10倍,人們會自然而然地投入到新事物的懷抱。所以說,如果有一個工具比GitHub好上10倍,人們自然會離開GitHub的,這很正常。
CSDN:能分享一下GitHub的技術架構么?
Zach:說實話,GitHub本身在技術上的選擇不會給大家太多的驚喜。數據庫方面用的是MySQL。首先,經歷了5年,GitHub知道如何更好地擴展數據庫。其次,我們的開發者也知道如何擴展數據庫。大家一起出力,事情會好做一些。雖然如此,GitHub的穩定性也隨著越來越多人的到來變得更加重要。其實在這方面真的沒有太多驚喜,唯一好玩的地方就是我們使用Git的方式,用了那么半天,和我們自己的關系不是很大。還有一個就是我們幾乎都是用Ruby on Rails做的網站,開發速度很快。
===Episode Two: Tough Questions===
CSDN:能談談scaling的問題么?
Zach:最開始只有github.com的時候,好多人都說,你們用的是Ruby on Rails,吞吐量的問題怎么解決?我當時真想說,Ruby on Rails不是導致速度受限的問題,數據到磁盤的讀寫速度才是硬傷。現在我們更新了一大批服務器,速度很快。
CSDN:公司的戰略目標是什么?有什么憧憬?
Danny:天哪,咱們能說么?
Zach:沒關系,哈哈。GitHub現在已經嘗試幫助人們擺脫閉門造車,共同制作軟件。GitHub的戰略目標之一就是讓人們在做其他事情的時候也用這種方式完成。GitHub希望提供的產品能夠幫助人們在每件事上都能變得效率。一個人再有能力,創建一個公司也需要其他人的幫助。現在的開發工具,比十年前好多了。但是我要說,它們仍然很糟。我們還要走很長的一段路,才能幫助更多的人輕松上手,這算是我們的目標之一吧。
Danny:可以說,讓GitHub成功的關鍵之一就是GitHub的協同工作功能。也正是這個功能,人們在編程的時候可以更加效率,最終來到了GitHub。我們希望把協同的功能做得越來越好。
CSDN:GitHub一直以一個十分正面的形象存在著,有沒有犯錯的時候,怎么處理的?
Zach:對于錯誤,我一直在回想我們犯錯誤的情景,有的時候感覺天要塌下來了,有的時候認為自己為什么要犯這么愚蠢的錯誤。當這種情景在腦中一遍一遍地穿越時,壓力特別大。然而,當回憶這些事情的時候,我們都會把自己犯的錯誤無限放大。最正確的方式是一點一點地修復自己犯下的錯誤就好了。即使GitHub會出現一些小錯誤,到現在還沒有一個人因為自己犯下的錯誤被開。犯錯誤的時候,沒有人故意要把公司搞垮,都是抱著“盡力做到最好的初衷”去做事情。
Danny:來到GitHub之后,我對工作中犯錯的看法也跟著改變了。我學到的是,如果犯了錯,勇于承認,不要遮掩。我一直在假設,如果我要是犯了錯,就算主動承認,肯定會受到一些指責。但當錯誤真的發生之后,我發現結果正好相反。犯錯之后,我們會在Blog中承認,我們搞砸了。但是我們得到的回應大多數都是積極的。所以GitHub教會了我:擁有信念。
CSDN:窮追不舍一回,舉個例子吧?
Zach:呃,可以啊,有一次我們數據庫里的數據不小心被刪除了。GitHub停運了20分鐘到40分鐘,我們在備份之后重新開啟。在Blog中,我們一五一十地將這件事情的原委說得明明白白。令人意外的是,大多數用戶表示包容。就像Danny說的,勇于承認錯誤就行了。試圖掩蓋事實的行為會使公司變爛。
CSDN:能不能分享一下GitHub的財務信息?
Danny:我嘞個去。
Zach:不能,哈哈。
===Episode Three: More and More Git and GitHub Secrets===
CSDN:CSDN也有自己的托管平臺――CSDN CODE,你們如何看待一個國家提供一個更加本地化的服務?有沒有什么在中國拓展的計劃?
Zach:我們壓力很大的,中國在GitHub上的流量年初的時候還排在第四、第五的位置,我們來之前已經躥升到第二了,我們也會努力做好我們的產品。關于在中國拓展的計劃,我們來這里參加Ruby大會,除了與開發者溝通以外,也會來和中國的大公司進行一些交流,了解一下情況。我們也希望和你們多接觸。在以后,會有更多的同事來到中國。希望到時能與大家交換一下更多的代碼托管和編程的經驗。
CSDN:其實有好多網站和GitHub很相似,Git is not unique,到底是什么原因讓GitHub比其他網站更強?
Danny:就像你說的,Git不是開發者喜愛GitHub的關鍵因素,開發者真正來到GitHub是因為GitHub上的協作功能和Pull Request等操作。除此之外,我們的社區里也有很多技術大牛,這也是將開發者聚集到一起的原因之一吧。
CSDN:現如今,GitHub的新功能,就算是小功能的發布,都能輕松登上Hacker News的頭條,這暗示GitHub的技術影響力已經非常大了。你們怎么看?
Zach:這取決于如何定義“大的技術影響力”了。不管怎么樣,GitHub能登上Hacker News的頭條,肯定是因為越來越多的人們對我們在做的事感興趣。我們內部通常把這些人稱作“超級粉絲”。他們和普通粉絲的區別就是他們真的對GitHub的新功能感到興奮。在加入GitHub之前,我就是個超級粉絲。加入之后,我們來到了世界各地,和開發者見面,就是要見到這些興奮的超級粉絲。
Danny:我不這么認為,GitHub的目標不是如何擴大自身的影響力,而是做出更好的產品,幫助使用GitHub的開發者,讓他們創造出更偉大的技術影響力。關于影響力,你走在大街上,問問路人知不知道GitHub,有幾個人會知道呢?跟蘋果這些公司相比,我們還有很長的路要走。
===Episode Four: Touch The Future===
CSDN:那么你們覺得哪家公司的技術影響力最大?
Danny:太巧了,剛回答完這個問題??梢曰仡櫹職v史,拿iPhone舉例。每一代iPhone,都會徹頭徹尾地顛覆上一代產品。再往前推,蘋果的鼠標,尤其是Mithy系列的,徹底顛覆了人們使用電腦的方式。蘋果如何改變技術,技術就如何改變世界。之前提到的Facebook也是。和蘋果對世界的改變還不一樣,Facebook改變了人們使用社交工具的方式,使社交網絡的上手變得無比簡單。
Zach:我也會選擇蘋果,原因就是蘋果的一切。從設計,到開發,蘋果始終對于創業公司有著深遠的影響。
CSDN:之前看過你寫的關于招募員工和企業文化的博文,GitHub團隊內部的組織結構是什么樣的?
Zach:GitHub的團隊組織特別扁平,換句話說,組與組之間,部門與部門之間合作是非常自然的。我們從某種意義上上來說沒有經理,或者說每個人都是經理。有一些大師級別的程序員,他們想得要比你遠、經歷得比你多,你會很自然的把他當做這個團隊的領袖,例如Linus Torvalds。我們希望工作的時候像是一個開源項目一樣,大家彼此互相激勵、互相貢獻。
Danny:我覺得這種組織架構也會有一些比較有趣的化學反應,每一個小團隊之間,彼此的工作方式是不同的。我所在的團隊就和github.com的團隊工作方式不一樣,因為做原生產品和做Web產品的要求是不一樣的。但重要的是,我們彼此信任。由于我們的組織架構比較扁平,我們團隊之間共同工作的時候就可以輕松做出一些決定。
CSDN:這種組織架構在工作時會遇到什么挑戰么?
Danny:說到挑戰的話,我覺得團隊與團隊之間的交流是個問題。我們的領導一直在關注每個團隊正在做的事情,大家也保持著積極的交流。假設你的同事告訴你,不要告訴其他部門的人你在做什么,那么這個公司的麻煩就來了。GitHub的員工都是對自己正在做的事情保持清醒狀態,發現什么問題盡快與同事交流。
Zach:我覺得這種架構的挑戰是個人事務的處理。在傳統的公司,員工一般會直接和老板匯報,老板會指出你做錯了什么,做對了什么。在GitHub,我們很少開例會。更多的原因是我們沒有時間坐下來,互相總結誰搞砸了什么,誰該怎么做。有的時候新來的員工都會自己想,為什么沒有一些總結性的會議。對待新員工,我們都會以聊天的形式和他們交流,告訴他們需要改進的地方。其實老板和員工之間的關系存在著一種不平等的因素,那就是老板可以開員工,反之則不然。而我們正在做的就是淡化或者消除這種不平等的觀念,讓領導和員工站在同一水平線,互相交流一下工作上的問題。
===The End===
采訪持續了兩個多小時,在這之后,GitHub在車庫咖啡舉辦了Ruby大會的預熱活動――GitHub Drinkup。在那里,GitHub與開發者進行了面對面的溝通。CSDN將在GitHub的最后一篇游記中為大家帶來車庫咖啡的故事。
本文為CSDN原創文章,未經允許不得轉載,如需轉載請聯系market#csdn.net(#換成@)