GitHub第一年的10個啟示

唐尤華發表於2012-03-05

導讀:這篇部落格寫於2008年12月底,時至今日已有2年多的光景。它一直在我的草稿箱裡,等待完成剩餘的2%。我從未釋出這篇文章,因為它不在我的列表之內。對我而言它就是對過去的一個提醒,讓我時刻記得那些事情。在我寫下這些的時候,我們已經從4個人發展成為26個人的團隊,搬進了寫字樓,安裝了一臺飲料機,並且仍然沒有從外面募集資金。在某些方面,事情已經發生了巨大的變化,但在核心問題上,還是和過去一樣。想到這一點,我的臉上充滿了喜悅。(編注:作者此文釋出於2011年3月29日)

年末的時候,準備一杯你最喜歡的飲料,調低光線,緊靠著壁爐坐下來,想想過去的12個月裡有哪些收穫。

對我而言,2008年裡我參與了設計、開發並啟動了GitHub。建立新公司是一個非常緊張的學習過程。一年中經歷了許多的失敗和成功,我從中得到了很多寶貴的經驗。下面就是其中的一部分。

1. 儘早起步

Chris和我在2007年底開始建立GitHub的時候,大多數人只知道Git是一個版本控制系統。當然,對於Linux核心開發者而言,他們從一開始就是用Git,但是在那個小圈子之外,很少有開發者會在日常的工作中使用。我第一次接觸Git是由Dave Fayram介紹的,他既是我的好友也是Powerset一起工作過的同事。作為早期接納Git的開發者Dave非常典型,在我看來他在Ruby社群以及之外的領域推廣Git不遺餘力。

回到2007年,那時Git的土壤還非常貧瘠。在1.5版本釋出之後,Git才逐漸被普通開發者採用。真正提供Git服務的網站也只有repo.or.cz我感覺它提供的服務非常有限,顯得笨拙而且設計很糟糕。沒有什麼商用Git服務可供選擇。儘管如此,在Ruby社群人們開始談論Git,以及它有多麼的優秀。但有的時候Git還是有些問題。Git的設計理念就是提供分散式的程式碼服務,但是如何在共享的同時保證私有程式碼的安全?你唯一的選擇只有在Unix上建立一個賬號,並將它作為臨時的解決方法。沒有理想的解決辦法。

因此GitHub應運而生。然而,在GitHub誕生之時市場上還沒有收費的Git服務。我們需要開啟這個市場。還清晰地記得當時我是這麼告訴人們:“我不期望GitHub會馬上成功。Git需要一段時間才會被大家接受,而那時我們已經準備就緒。”無論是我或是Chris都沒有期待這會馬上發生。那時我在Powerset做全職工作,Chris是一名Rails顧問且收入頗豐。選擇一項小眾的技術並基於它及早地進行開發,我們能夠在沒有經營成本、沒有競爭的情況下,利用業餘的時間創辦了一家公司。

譯註:Rails:一個高效的Web開發框架。

2. 適應你的客戶

這是一個看上去矛盾的建議:傾聽你的客戶,但是不要聽從他們讓你去做的事情。請容許我解釋一下。考慮這樣一個功能請求,比如“GitHub應當允許我通過FTP上傳專案文件。”實際上使用者真正想要表達的是:“我想要一個釋出專案相關內容的簡便方法。”由於使用者習慣了現有的技術,因此他們會按照對於他們更加熟悉的方式提出要求。我們如果完全按照使用者要求做,那麼會實現某種糟糕的FTP服務。但如果我們看到了請求背後的真正問題,就會像現在的做法一樣,允許使用者通過自己的帳號向Git倉庫釋出內容。這不但實現了使用者要求的功能,而且解決的方式非常簡潔。

另一家能夠基本理解這個概念的公司就是Apple。我肯定有很多人要求Apple生產一款手機,但是Steve Jobs和他的團隊知道在這個要求背後人們想要的究竟是什麼:一個美觀、易用、同步方便的移動裝置,用上它會讓你變得很酷。這就是祕訣。不要按照他們要求的去做,給他們真正想要的東西。

3. 享受樂趣

我在加里佛利亞一所叫做Harvey Mudd的學校裡上的大學。是的,我知道你沒有聽說過。但是如果還記得高中時期很迷信的那本由《美國新聞和世界報導》出版的《全美最好的大學》那本書(好吧,也許你並不迷信,但我是信了),Harvey Mudd是所有工程類大學中每晚家庭作業最多的大學。對的,比MIT和加州理工還要多。我可以告訴你,事實的確如此。在我的記憶中,有很多關於異常複雜的彈簧、質量和阻尼系統,以及按照雙螺旋方式給一個圓柱體纏上線圈的可怕經歷。我們學習得很刻苦——非常刻苦。但是我們也玩得很瘋狂。這是唯一能夠讓我們保持理智的事情了。

創業有點像大學生活。你和世界上最好的朋友一起瘋狂地做專案,而且(通常)有很多時間。在這兩種環境下,你都需要徹底放鬆這樣才能保持平衡。筋疲力盡是一個真正危險的訊號。營造一個好玩並有創意的環境,對於保持身體健康和公司的良好狀態(得到好的創意)都是至關重要的。

GitHub第一年的10個啟示

(Github 創始人之一 Tom Preston Werner,伯樂線上配圖)

 

4. 關注Twitter

我發現Twitter上的即時反饋非常有價值。如果GitHub網站因為某些原因變得很慢,Twitter會如實地告訴我。如果在某些國家網站不能訪問(比如中國),我會通過Twitter瞭解到。如果剛釋出的新功能很棒,我會從Twitter搜尋的結果中受到鼓舞。

人們會在Twitter上抱怨GitHub所有細小的bug,通常結尾會帶上令人不快的“失敗”字眼。這些看起來令人厭煩,但總的看來還是值得注意。通常這些無知的bug會告訴你,是否應該將一個隱祕的bug加入待解決的列表。我們也在Twitter上建立了一個GitHub賬號用來回復那些負面的評論。這樣的支援服務通常會讓客戶的心情由陰變晴。

如果你有iPhone,我由衷地推薦Fanzter公司的Summizer應用程式。它會讓你在Twitter搜尋、檢視以及回覆變得非常容易。

5. 隨心所欲地部署!

在第一次RailsConf上,我有幸聆聽了Martin Fowler的精彩演講。在會上他對敏捷開發使用的一些聰明的隱喻,在這裡我將使用它們並進行一些修改。

假設要求你設計一款計算機控制的手槍,能夠精確地設計到50米開外的目標。這是唯一的需求。一種方法是設計一個複雜的機器,能夠在射擊之前夠測量所有可能的因素(例如風速、射擊角度、溫度等),然後發射。另外一個方法是設計一個簡單的機器,能夠快速射擊並檢測每次射擊命中的位置。它能夠使用這些資訊為下一次的射擊提供校正,在很短的時間內最終擊中目標。

這兩種方法的不同之處在於是否意識到子彈是很便宜的。在第一種方案完善了檢測風速裝置的時候,你已經用簡單的武器擊中了目標。

在web開發中,這個目標就是你提供的創意,而子彈就是你部署的網站以及客戶提供的反饋。網站第一年提供的功能是很有吸引力的。你的客戶通常可能是早期的適用者,他們樂於嘗試每隔幾周推出的新功能。只要新功能很好,即使產品釋出有一些推遲,他們也很容易原諒。在GitHub的早期,我們在一個下午釋出了10次,不斷逼近那個目標。

第一年值得好好利用,因為一旦有重要的客戶開始上門,你就得小心使用這種粗放的射擊方式。在接下來的遊戲中,當機和糟糕的部署會帶來經濟損失,因此你需要更多地依靠工具來預測工作的方向。

6. 你不需要辦公室

GitHub所有全職員工都在舊金山工作,然而我們沒有設立辦公室。但我們也不是完全地在網路上工作。事實上,一週幾次你會發現我們在北灘的一個咖啡館裡,圍坐在一個由2×4米老式公告欄訂起來的正方形桌子周圍。雖然不如谷歌園區,但租金很便宜而且飲料非常可口。

這並不意味著我們沒有開始尋找可以落腳的地方。恩,我們差不多快要租下了一箇舊的酒吧,但最後還是沒有倉促做出決定。我們一直在等待一個完美的辦公室。直到那個時候,我們才會將攢下資金投入到公司中,或者落袋為安。我認為目前只要有沙發和咖啡就足夠了。

當然,如果沒有37signal公司的Campfire web聊天工具以及如虎添翼的Propane OSX桌面應用軟體,這一切都不會發生。我強烈推薦這兩個產品。

7. 通過開源專案招聘

在GitHub,除了3個聯合創始人,我們還僱用了一個全職開發者(Scott Chacon)和一個兼職支援專員(Tekkub)。

我們僱用Tekkub是因為他不但是GitHub的最早使用者之一,而且為GitHub上的75個專案(大多數為魔獸世界的外掛)積極進行維護,同時在GitHub早期積極地給我們提供反饋。他甚至還在IRC頻道里為大家提供幫助,僅僅因為他很享受這個過程。

我認識Scott是在舊金山舉辦的一次Ruby見面會上,他展示了自己開發的眾多基於Git專案中的一個。Scott比會場中的其他人更早使用了Git。在我在自己的Git Binding上fork/exec的時候,他已經開始用純Ruby實現Git了。對我來說形勢已經非常明朗,要麼他成為我最強有力的同盟,要麼他就會是我最具威脅的敵人。幸運的是,我們在會後一起把酒言歡併成為了朋友。不久之後,Scott開始為我們提供諮詢並編寫了Gist的全部後臺程式。那時我們已經意識到,無須任何的面試或者推薦,我們會不惜一切代價將Scott招至麾下。我們已經瞭解所有需要知道的資訊,並毫無保留地給他offer。

這一次我們得到的經驗是,通過考察候選人過去的表現而不是預測未來的表現,會更簡單且風險更低。由此得出的一個結論是:如果你打算加入創業公司(為打算創業的人工作),可以在相關的社群參與開源工作。用你的時間和編寫的程式碼證明你就是這份工作的最佳人選。

8. 信任你的團隊

沒有什麼比事必躬親的上司更讓我痛恨的了。5年前,當我還在做圖形設計諮詢的時候,我有一位客戶幾乎就是柏拉圖式的事無鉅細。他堅持讓我到他的辦公室裡,坐在小黑屋裡用一臺破舊的Mac設計圖示、目錄,並給泳衣模特照片潤色(這部分工作並不是那麼糟糕!)。當我在幹活的時候,他會從我的面前飄過並厲聲道出他的建議。“太紅了!你不能把這些字弄的更小一點嗎?馬上把這些瑕疵去掉!”這些幾乎讓我陷入瘋狂。

這位客戶一般在早上會給我安排工作,然後離開去忙他的生意,6個小時以後回來。我會把他交代的內轉換成Photoshop操作,並用2倍於機器人的速度弄出更好的設計。他這樣的安排,不僅忽視了我的設計能力,同時也是對時間和才能的浪費。

事無鉅細地領導風格是一種信任的缺失。治療這種症狀的方法就是,聘請專家並且相信他們的判斷。在一家創業公司,事必躬親地管理會打擊士氣,而給與信任會鼓舞團隊。當一個團隊中的人才互相信任並決心做出優秀產品的時候,會取得令人驚訝的成果。

 

關於Github公司的運作/工作方式,請參閱其員工 Zach Holman 寫的三篇文章:

第一篇:《GitHub如何運作:時間並不決定一切

第二篇:《GitHub如何運作:非同步工作

第三篇:《GitHub如何運作:創新很重要

 

9. 你不需要風險投資

最近有很多關於風險投資市場正在發生變化的文章。我不打算假裝成這個問題的專家,但我可以肯定像我們這樣的web創業公司不需要任何外部資金就可以成功。得出這樣的結論,因為我們沒有從投資者那裡拿過一毛錢。我們開始創辦這家公司的時候只有幾千美元,在向大眾開放的時候就開始盈利並對註冊使用者收費。

最後,每家創業公司都是與眾不同的,唯一能夠確定外部投資是否有意義的人就是你自己。也許有成千上萬的理由會讓你尋找並接受投資,但你必須確保這會將你的利益最大化,因為很有可能你並不需要這麼做。我上一次離職的理由之一就是“我的收入不會再增加了”。如果我們接受了投資,我再也不能說出那樣的話。

10. 儘可能地開放原始碼

為了讓GitHub能夠操作Git倉庫,我建立第一個Ruby Git binding。逐漸的,這個庫逐漸完善,接著我們面臨一個選擇:我們應該將它開源還是保持私有?這兩個選擇都各有利弊。保持私有意味著與基於Ruby的Git服務網站競爭會加劇,選擇開源就意味著…

注意:本文到此結束,時至今日還沒有新的內容。我打算在不久的將來寫一篇關於GitHub中的開源哲學。我肯定解開這個懸念的時候肯定會讓你大吃一驚!

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

GitHub第一年的10個啟示 GitHub第一年的10個啟示

相關文章