Github 對程式設計師職業生涯的影響

周進林發表於2017-03-17

在未來的 12 到 24個月,即 2018 年到 2019 年,程式設計師的聘用方式將會徹底地發生改變。

2004 到 2014年之間,我任職於世界上最大的開源軟體公司紅帽公司。2004年的7月,當我在紅帽公司開始第一天工作時,我的上司 Marty Messer 對我說:“你在這裡所做的一切工作都是開源的。在將來,你不再需要簡歷,人們可以直接通過谷歌來了解你。”

在當時,這是在紅帽公司工作的其中一個獨特之處:我們可以在開源社群裡創立自己的個人品牌和聲譽。我們通過郵件列表、bug 跟蹤表單(bug trackers)以及提交到 Mercurial、Subversion 和 CVS 倉庫的原始碼與其他軟體工程師進行交流。所有的這些交流,都是公開的,並且可以被谷歌進行索引。

到了2017年,我們已經生活在開源的世界裡了,進入了軟體開源的時代。

下面兩件事,可以讓你真切地感受到開源時代的到來:

  1. 微軟曾經是閉源私有軟體的典型代表、反對開源的聖鬥士,如今已經全心全意地擁抱開源軟體,成立了 .Net 基金會(紅帽是其中的一員) 並且加入 Linux 基金會。.Net 現在已經作為開源專案進行開發。
  2. GitHub 已經成為了一個奇特的社交網路,它把問題跟蹤(issue tracking)和分散式程式碼控制捆綁在一起。

對那些主要是擁有閉源軟體背景的軟體開發者來說,他們還沒真正瞭解到開源時代的到來。開源對他們來說就,等同於“用你的空閒時間來進行免費工作”。

但是,對我們這些使用十年時間來建立一個價值10億美元開源軟體公司的人來說,我們並不是使用空餘時間來免費為開源軟體工作。而且,為開源工作的好處和結果是顯而易見的:你建立的聲譽是你自己的,而且你可以在換工作時把它帶到新的公司裡。GitHub 是一個社交網路,你所有的提交和對任何技術的研究、交流這些資產都是屬於你自己的,它和你正在工作的公司沒任何關係。

聰明人會利用 GitHub 的這個優點來建立自己的資產:向他們日常使用的語言和框架進行提交補丁、問題(issue)、評論。比如,TypeScript、.NET、Redux。

他們同樣會儘可能地提倡並安排他們的工作以開源的形式來完成,即使他們的提交顯示都是私有的提交。

GitHub 是一個很好的均衡器。你雖然不能從印度找到一份澳大利亞的工作,但你能夠在印度利用 GitHub 與澳大利亞人進行工作。

在過去的十年裡,從紅帽公司獲取一個工作機會的方式已經顯而易見了:你只需與紅帽公司的工程師一起合作開發他們的一些開源專案,然後只提交一些有價值的提交併且得到他們的認可,你就會得到這份工作。否則不會提供工作機會給你。

現在紅帽公司依然提供同樣的求職方式給求職者,不過僅限於技術職位。如今是開源的時代,這種求職方式在世界各地開始流行起來了。

在 2 月中旬的一次訪談中,Linux 和 git 的發明者 Linus Torvalds (他在 Github 中擁有將近 5 萬粉絲)說到:

你需要為開源專案提交大量的小補丁,直到專案的維護者信任你,到了那時你就會成為一個在這個專案中值得信賴的人,而不僅僅是一個提交補丁的人。

在信任網路中,你的聲譽代表這你的地位。當你換公司時,你之前的聲譽就會有所丟失並且減弱。如果你生活在一個小鎮裡並且在那待了很久,那麼那裡的人都會對你有所瞭解。但如果你去了其他國家生活,無論你去哪個國家,你之前的聲譽都已經歸零了。你最終會到一個沒人瞭解你的地方,更糟糕的是,那裡沒人知道誰瞭解你。

你可能是第一次、第二次,或者更糟糕的是你已經是第三次這樣丟失了與你的信任網路的聯絡。除非你已經通過在研討會或者大型會議進行演講建立個人品牌,否則你與其他人共事時建立的信任,以及提交到企業內部倉庫的程式碼都會不復存在。

但是,如果你的工作是在 GitHub 上完成的,它就不會消失。它是可以看得見的。你之前與別人建立的信任網路的聯絡是可以從 GitHub 裡直接看的到的。

在 GitHub 開源社群中將要發生的一件事就是,學生、剛畢業的學以及移民者這些相對弱勢的群體可以利用 GitHub 這個優勢到澳大利亞找份工作。

並且 GitHub 會改變開發者社群現有的樣貌。一些之前比較有權威的開發者將會突然地發現他們的信任網路被破壞了。因為在開源中有個原則叫精英領導(meritocracy )——擁有最好想法的人勝出、擁有提多提交的人勝出、擁有最多通過測試的人勝出、擁有最佳實現的人勝出,等等。

這不是一個完美的原則(沒有任何東西是完美的)。並且會讓你很難成為一個可以一起共事的好同事。在紅帽公司裡,我們解僱過一些明星工程師(rock star engineers ),僅僅因為他們不能和其他同事和睦相處。而那些“其他工程師”會經常在 GitHub 裡與其他程式碼提交者進行交流。

GitHub 不是簡單地作為一個程式碼倉庫和原始提交者的成員列表, 一些人把這看成是稻草人謬誤( strawman arguments)。GitHub 是一個社交網路。我覺得:

重要的不是你提交到 GitHub 上的程式碼,是其他人對你 GitHub 上的程式碼的評論

那是你可以隨身攜帶的聲譽。並且在之後的12到24個月裡,是否在 GitHub 裡為開源專案貢獻程式碼會有明顯的區別。就好像有郵件和沒有郵件(現在所有人都有郵件了)、有手機與沒手機(現在任何人都有手機)的區別。到最後,大多數人將會以開源的方式來進行工作,並且會基於各種因素提供相對公平的競爭環境。

但如今,程式設計師的職業發展空間已經被 GitHub 打亂了。

相關文章