GitHub 第一年的 10個啟示

openkk 12年前發布 | 12K 次閱讀 Git

英文原文:Tom Preston-Werner

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

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

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

盡早起步

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 開發框架。

適應你的客戶

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

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

享受樂趣

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

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

關注 推ter

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

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

如果你有 iPhone,我由衷地推薦 Fanzter 公司的 Summizer 應用程序。它會讓你在 推ter 搜索、查看以及回復變得非常容易。

隨心所欲地部署!

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

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

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

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

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

你不需要辦公室

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

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

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

通過開源項目招聘

在 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。

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

信任你的團隊

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

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

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

你不需要風險投資

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

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

盡可能地開放源碼

為了讓 GitHub 能夠操作 Git 倉庫,我創建第一個 Ruby Git binding。逐漸的,這個庫逐漸完善,接著我們面臨一個選擇:我們應該將它開源還是保持私有?這兩個選擇都各有利弊。選擇開源就意味著

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

    編譯:伯樂在線 – 唐尤華

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!