前言

這次很高興透過貢獻 KubeRay 這個開源專案,得到了加入 Anyscale 遠端工作的機會。

在你繼續看下去之前,先給一些免責聲明,澆一下冷水,避免你看完期望太高。很多人都只寫好的一面,我不喜歡這樣。如果看完你還是想透過做開源這條路找到工作的話再看,否則其實已經可以離開了:

  • 我是透過一位已經在 Anyscale 上班的朋友內推進去的。至於我是怎麼認識他,以及為何可以內推,會在內文說明。
  • KubeRay 是 Anyscale 這間公司的產品之一。這代表你要去的公司跟你做的開源專案必須要有很強的相關性才有機會,不要想說隨便做一個開源就對找所有工作都有加分效果。
  • 我還是需要面試,請不要覺得做開源就可以不用刷 LeetCode。你可能想問有人不用面試的嗎?有,我就有認識,但是不是每個人都可以這樣的。
  • 我不是開源新手。如果你是開源新手,請不要預期你可以用跟我一樣短的時間快速上手專案,以免感到挫折。走上開源這條路,必須付出很多業餘的額外時間才有辦法。
  • 這條路絕對不是尋常的路,也不是最輕鬆的路。如果要輕鬆的話,請刷 LeetCode 就好,CP 值絕對最高。如果想找外商工作,乖乖去美國讀書再去面試是最有效的。

KubeRay 專案介紹

KubeRay 是把 Ray 這個專案跑在 Kubernetes 上面的一個專案。而 Ray 是可以把 Python 的 function 自動跑在分散式的集群,是最近很紅的一個用來跑分散式 AI 和 Python apps 的框架。Ray 的背後商業公司就是 Anyscale。

下圖是今年 Ray Summit 介紹 KubeRay 的投影片的其中一頁,展示了現在社群的一些數字:

KubeRay Key Numbers

下圖是現在 Ray 的一些比較大的公司使用者,除了下圖的使用者之外,還有一些 Vendor 也有採用,例如 Google 的 GCP 和 Amazon 的 AWS。這些 Ray 的使用者裡面,大部分都是用 KubeRay 去部屬的!

Ray Users

我的開源貢獻背景

正如我前面所說,我不是開源新手。在貢獻 KubeRay 之前我已經貢獻過 Apache Submarine 和 Flyte 這兩個專案,而且都已經是 Committer 了。如果不知道 Committer 是什麼,簡單的說就是類似「核心貢獻者」,具有該專案寫入的權限,可以幫忙 merge pull requests。在 Apache Submarine 時期,我的 mentor 就包含了 蘇桓平陳楷訓 等。當然還有其他 mentor 的幫助,不過本篇特別提這兩位是有原因的。蘇桓平同時也是我在貢獻 Flyte 專案時期的 mentor,而陳楷訓則是我在貢獻 KubeRay 時期的 mentor。

我大約是今年 4 月開始貢獻 KubeRay 的,KubeRay 基本上就是 Kubernetes Operator,這剛好跟我先前貢獻 Apache Submarine 的時候在做一樣的事。所以即使以前做 Apache Submarine 沒有得到工作,就學習技術的角度而言,我確實學到了一個帶著走的技能,而且還可以在其他專案上面用到。4 月到 9 月這期間我貢獻了大約 50 個 commits,雖然有一段是靠刷 linter issue 衝的,但其實這還是算滿多的,如果是開源新手的話不要想說可以有這個速度。

KubeRay 專案貢獻者排名,我現在第 4 名

KubeRay 專案貢獻者排名,我現在第 4 名

內推過程

我在前言裡面提到的已經在 Anyscale 上班的朋友就是陳楷訓,其實我們原本並不認識,最開始也是因為一起做 Apache Submarine 才認識的,所以這是做開源的其中一個好處:「擴展人脈」。其實台灣做開源的人很少,意思就是圈子很小,所以很容易可以認識圈內的人,因為基本上也就那些了。這些人脈就可以幫助到你。即使當初我並沒有因為做了 Apache Submarine 就拿到工作,但試想如果我當初沒有做的話,我也不會認識楷訓,也就不會有現在的工作了。

但為什麼他不能直接幫我內推,而是還需要我貢獻 KubeRay 之後,才能幫我內推呢?這是因為即使我跟他都有貢獻過 Apache Submarine 的經驗,有共事過,他也知道我的能力,但因為 Apache Submarine 這個專案跟 Anyscale 並沒有什麼關係,美國公司聘外國人遠端工作又很麻煩,所以如果做的專案本身沒有和公司有非常強的關聯,基本上沒有什麼加分效果,他去跟主管內推我,主管可能也不會答應給我面試機會。而 KubeRay 則不一樣,這個專案算是他們的產品之一,如果他們聘我的話,等於是獲得一位不用培訓就已經上手的工程師,對他們也有好處,而且他們也可以看到我之前的程式碼,畢竟如果程式碼寫太爛公司也不會想聘你對吧。

你說得這麼困難,為何你還要毅然前行?

  • 做開源即使沒有拿到工作機會,也可以累積技術。
  • 可以認識其他做開源的人,拓展人脈,或許有一天他們就會幫助到你。
  • 我自己覺得做開源專案比做閉源專案有意義,應該說你的貢獻比較透明,容易被別人看見。

我看完了,即使我已經知道上面的限制,但我還是想鐵頭嘗試,要怎麼開始?

源來適你 是台灣致力於推廣開源的非營利社團,社群內有數位導師分別帶領大家參與貢獻不同的專案,我也是受到了很多社群成員的幫助,非常歡迎大家加入來看看!這邊也有 關於源來適你的資料彙整 ,可以參考看看!

致謝

本次毫無疑問,必須特別感謝 陳楷訓 的幫忙!之後我會繼續貢獻 Ray 和 KubeRay,希望之後對 Ray 熟一點之後,可以來寫一些關於 Ray 的技術文章!