Google 編程之夏:海量優質項目,豐厚報酬,你居然還不知道?

本文同時發佈於知乎專欄:Google 編程之夏:海量優質項目,豐厚報酬,你居然還不知道?html

零、楔子

這篇文章包含了對 Google 編程之夏(Google Summer of Code,簡稱 GSoC)的介紹、我的感覺和一些申請技巧。寫做的契機源於一篇發佈在 Google Open Source 上的博客:Google Summer of Code 2017 statistics part 1,這篇博客列出了 2017 年參與項目的學生的國家分佈狀況,其中有幾項數字頗爲有趣:2017 年總共有來自 72 個國家的 1318 名學生得到了項目資格,其中來自中國大陸的學生 49 名,來自美國的學生 126 名。學生最多的是哪一個國家呢?大家可能猜到了,是咱們的鄰居印度,有足足 569 名!超過所有學生的 40%。程序員

印度學生的比例之高使人咋舌,相比之下咱們中國學生的人數就有點少得可憐了。然而就我我的的感覺而言,中國學生數量少的最大緣由也許是:根本沒有據說過這個項目!「GSoC 是什麼?好吃麼?」,估計這纔是絕大部分人聽到 GSoC 以後的感覺。算法

我本身瞭解到 GSoC,是大一暑假機緣巧合下看到了同校大神楊壘的一篇博客 申請 Google Summer of Code 2015。以後本打算在 2016 年申請的,但由於暑假參加了車協的暑期遠征而擱置,然後在 2017 年申請並順利經過。這一年多裏我也時不常的跟身邊的小夥伴賣安利。後來在今年的 GSoC 微信羣中也看到了好幾個北大同窗,你們也更多的是靠身邊人的口口相傳瞭解到 GSoC。很是開心在這之中本身也爲 GSoC 在我校的普及作出了一點微小的貢獻。編程

當我看到印度學生人數 10 倍於咱們,參與人數排名前十的學校中有八個來自印度時,除了多少有些不服氣,更多的是欽佩印度程序員們相互提攜、信息共享的機制,這點上跟他們爲什麼能在硅谷混的風生水起有很多共通之處,不過不是本文重點,不作展開。基於這些背景,這幾天我一直籌劃着寫一篇較爲正式的文章,介紹 GSoC 並提供一些本身的感覺和申請經驗。之後再安利時便沒必要再笨拙的口述,直接把文章丟過去就好~ 同時也但願更多熱愛技術的同窗們可以經過本文,瞭解並有機會參與到這樣一個 Google 組織的、含金量高、報酬豐厚(你能夠拿到數萬元的獎勵!)、擁有衆多大名鼎鼎的開源社區參與的暑期項目。但願能以此爲廣大技術水平紮實並渴望鍛鍊的國內大學生們提供一點微小的幫助,不要再由於「不知道」、「沒據說」而錯過了這樣一個優秀的項目!性能優化

1、Google 編程之夏是什麼

這個問題,咱們先來看看 Google 官方是怎麼說的:(出自 What is Google Summer of Code?微信

Google Summer of Code (GSoC) is a global program that matches students up with open source, free software and technology-related organizations to write code and get paid to do it! The organizations provide mentors who act as guides through the entire process, from learning about the community to contributing code. The idea is to get students involved in and familiar with the open source community and help them to put their summer break to good use.app

譯即:框架

Google 編程之夏是一個全球性項目,旨在爲學生們和開源、自由軟件、技術相關的組織創建聯繫,讓學生們貢獻代碼並得到報酬!組織會提供導師,在學生從熟悉社區到貢獻代碼的整個過程當中提供指導。這個想法的目的是讓學生們參與和熟悉開源社區,並幫助他們充分利用暑假時間去獲得鍛鍊。ide

在我看來這段介紹十分簡明扼要,若是你想了解更多細節,能夠到 What is Google Summer of Code? 閱讀全文。工具

若是用一句話歸納的話就是,學生用一個暑假的時間(其實從 5 月底 6 月初就會開始,國外放暑假較早)在導師的指導下爲開源社區寫代碼,Google 爲你的工做支付報酬(2017 年以前彷佛是 5K 刀;2017 年開始分地區支付,中國大陸下降至 3.6K 刀,換算過來約 25K 軟妹幣,仍然是一筆可觀的收入)。

2、GSoC 含金量高在哪裏

一般而言,同窗們夏天想自我提高的話有兩個去處,一是暑研、二是暑期實習。GSoC 偏向工程,和後者更爲類似(但也有很大不一樣),和暑期實習對比着來分析,更容易看出 GSoC 的優點:

  • 時間安排和工做模式
    • 以 2017 年爲例。5 月 4 日 Google 宣佈入選學生名單,以後到 5 月 30 日約一個月的時間爲 Community Bonding Period,在這段時間裏能夠熟悉社區、和導師針對你的項目進行探討等。5 月 31 日開始至 8 月 29 日是正式工做時間,你將會在約 12 周的時間裏完成你所申請的項目。除了開始時間略早於國內期末考試時間外,時間跨度上基本與大部分暑期實習無異。而具體的任務量因項目而異,但一般不會太過繁重。導師也通常不會爲難你,即便不能所有完成預期的內容,只要全程認真負責的參與,大都也會給 Pass。可能更多的時候是項目對中國學生而言是比較水的,好比前幾天(Coding Period 纔剛剛開始)羣裏就有人表示已經把所有 Coding 作完了如今正無聊的寫文檔……
    • GSoC 的任務所有是線上(online)完成的,相對於實習時每日遲早高峯痛苦的擠地鐵(不忍吐槽帝都的交通),你徹底能夠在家中、在學校宿舍完成須要作的一切。簡捷高效,不要太省心!
  • 報酬
    • 降價以前的報酬折算至每個月是 11K 有餘,幾乎快遇上一線互聯網公司的正式應屆員工價格了。降價以後大概是一月 8K 多,仍然是碾壓各家一線的實習生價格。還不用扣稅喲!
  • 我的成長
    • 在 GSoC 項目期間,每一個學生都會被分配一名導師,在整個項目期間給予你幫助。就個人親身經歷和身邊人的體會,雖然會有些比較懶的放養導師,不過基本上還都是很是認真負責並且熱心的。導師自己的技術水平也都十分出色。而若是你參與的是 GCC、OpenCV 這類久負盛名的工具、語言、框架的組織下的項目,極可能你的導師就會是這些組織的 Core Team Developer,他們可都是在行業內備受尊敬的大牛。
    • 再拿個人經歷舉例。有一次我向主倉庫提交了一段總計不超過 50 行的改動,但由於改動較爲關鍵,組織內的幾個導師和我充分的討論了足足一週,覆蓋了代碼風格、性能優化、可測試性、向前和向後兼容、設計原則等方方面面,通過數次修改,最終成功併入。這個過程當中是收穫巨大的。一般咱們會講被 review 是很是好的學習途徑,寫越少而精的代碼,被 review 的越詳細,對應的成長是越快的。而 GSoC 正是這種模式。
    • 相比而言,大部分一線開發崗位的實習,負責帶你的人極可能也只是剛畢業工做過三五年,自己技術水平不算驚豔,而業務導向的開發則是以效率爲先的,很難有機會有人給你的代碼作詳盡細緻的 review。更糟糕的一些狀況是,可能有些實習生大部分時間都在作「打雜」的工做,而不能進行真正有意義的創造,更談不上學習了。
    • 固然實習也毫不能被一棍子打死,像 MSRA 的研究實習生、BAT TMD 華爲這些一線公司的實驗室或者核心部門實習也都是至關有含金量的,其中也有不少 GSoC 中所不能學習到的東西,也是很是值得選擇的。

綜上來看,GSoC 的質量是至關高的,從各方面來看,都很是值得參與。Google 官方資料中有這樣一句話:

Successful students have widely reported that their participation in GSoC made them more attractive to potential employers and that the program has helped greatly when embarking on their technical careers.

GSoC 在世界範圍內都很受承認,成功的完成 GSoC 項目的你會更容易受到用人公司的青睞。若是將來但願加入 Google,這段經歷則更是一大加分項。

而因爲 GSoC 是全線上遠程工做,你也徹底能夠選擇在參加科研或實習的同時,也參與一個 GSoC 項目,二者兼得。好比我本身,在今天夏天參與 GSoC 項目的同時,也會在 MSRA 大數據組實習。因此次 GSoC 認識的 @大缺弦 也是一樣既參與 GSoC 又在 MSRA 實習。因此說徹底不用擔憂由於參加 GSoC 而錯過其餘機會!

3、申請資格、流程和技巧

任何在讀的本科、碩士、博士生都可以申請 GSoC。若是你已經畢業了,那就很是遺憾不能再以學生身份參與 GSoC 了。Google 還有一些更細節的要求,但通常都是能夠知足的,具體可參照:FAQ#What are the eligibility requirements for participation?

Google 每一年都會發布 GSoC 的時間表,例如 2017 年的:Google Summer of Code 2017 Timeline

其中有一項是 List of accepted mentoring organizations published,即宣佈當年的組織列表,每一個組織都會有一個主頁,列出可供你選擇的 Project Ideas。今年是在 2 月 27 日宣佈的。在這以後你就能夠查當作百上千個 Ideas 並找出你所感興趣的了。在 Student application deadline 以前(今年爲 4 月 3 日),你能夠向 Google 提交至多 5 份 Proposals,每一份 Proposal 要包含你對其中一個 Idea 的設想、實施方案、時間規劃等,Proposal 須要寫的具體內容因組織者的要求而異。此後由組織負責審閱全部學生提交的 Proposals,選出他們所認爲優秀的。在約一個月以後(今年爲 5 月 4 日),Google 會宣佈被選中的學生列表,若是你順利經過,即可以開始當年的 GSoC 之旅了!

以上是申請流程的基本概要,Google 官方也提供了很是詳盡的 學生指南FAQ,這些內容你均可以在其中找到,而且有更爲詳細和準確的申請介紹和指導。

下面就是私貨啦!一些我本身的和其餘 GSoC 參與者的人生經驗!

首先是選什麼。參與 GSoC 的組織會有數百個,一個個看根本看不過來,選擇困難症們可要頭疼了。個人建議是選擇本身有過實際使用經驗的,相對於從未使用過的語言、框架等,你會對它們更加了解,好比今年我就考慮了 homebrew、checkstyle(Java 靜態檢查工具,很早就引入了 PKU Helper 開發之中,後來我也最終選擇了這個組織下的項目);其次,選擇與自身技術棧相匹配的,好比我最擅長的技術棧是 JVM Based Language,我就會更加留意用到 Java、Clojure、Scala 的項目。

劃定了最初範圍以後,你就能夠經過組織公開的聯絡渠道,同導師們聯(套)系(磁)。一般來說以 Mailing List 和 IRC 居多,也有 IM。你能夠進一步的瞭解這些組織和下屬的項目,從而找到你最感興趣的。雖然每一個人能夠填寫多至 5 份 Proposals,但就實際經驗而言,認真書寫一份 Proposal 就要花費很是多的精力了,廣撒網是不太可取的,重在精不在多。根據 Google Summer of Code 2017 statistics part 2,2017 年共有 4764 名學生提交了 7089 份 Proposals。也就是說平均下來每一個人也就提交了一份多而已。

在選定了 checkstyle 以後,我很是感興趣一個叫 Optimization of Distance Between Methods in Single Java Class 的項目。它涉及到算法、數學模型,很是有趣同時又附有挑戰性。

以後就是爲此撰寫 Proposal,其中分爲了三大部分:About Me、Project 和 Extra Information。About Me 就是一些我的基本信息和編程技能的介紹,Extra Information 給出了個人工做時間、時區和一些想說的話。Project 是最要的部分,包含了 Project Description、Outline 和 Expected Timeline。其中詳細的給出了我預想的數學模型的設計、統計分析過程、可以使用的算法和實現以及會爲此撰寫一篇 Article。

書寫 Proposal 的重點在我看來就是要認真細緻、考慮可行性和工做量、和導師們充分討論,最後再加上一條美觀。在以上的方法論下我花費了一週多的時間磨出一份顏值甚高的 Proposal 來,和導師們也討論的風生水起。原本以爲拿到這個項目板上釘釘了,結果離 application deadline 還有兩天的時候,導師忽然私信我說,咱們認爲這個項目太難了,咱們可能找不到足夠多的導師來帶你,因此你趕忙再找一個項目趕一篇 Proposal 出來吧。我:???……沒辦法,花了半天的時間挑了另外一個看着還能夠的項目火速寫了一篇出來。導師也夠意思,跟我說你隨便寫寫思路就完了,不用太詳細。以後趕在 deadline 前順利上交兩份 Proposals,而且中了後面那篇。

導師對個人 Proposal 評價很高,若是之後有申請的小夥伴感興趣想參考的話能夠移步 Google Docs:

除了一份質量過硬的 Proposal 以外,在宣佈最終名單以前和導師們的套磁也是很是重要的!多在 Mailing List 中刷刷臉,積極參與討論。若是可以提出 Bug 甚至修復 Bug 或者實現新的 Feature 那是最好的。Checkstyle 的導師在最開始就清楚的寫到學生的 Fixed Issue 數是很重要的指標。後來在 deadline 以前我足足交了 8 個 PR 位列十多個競爭者第一,這點也爲我最終被選中加了很多分。

總結一下,認真投入、積極參與、多討論多反饋,甚至去幫助社區中的其餘開發者,那麼你就會有很是大的機會被選中!今年 4764 名提交了 Proposals 的學生中有 1318 名被選中,入選率大於四分之一,是至關高的。並且這 4764 人裏其實有不少人是根本沒有好好寫 Proposal 的,也有不少人是水平真的不好也過來申請的。因此對絕大多數基礎不差的國內大學生來說,只要好好申請都是比較容易中的。要知道,我們大學生的技術功底,甚至英語水平,毫不比印度學生差(印度人的英語真的不見得都好),人家能夠申請到 500+,我們也能夠作到,49 人遠遠不是我們的真實水平!

4、結語

2017 年的 GSoC 已經在如火如荼的進行中了,今年錯過了的小夥伴們不要遺憾,只要大家不是下個月就畢業離開校園了,GSoC 2018 便等着大家~ 離明年的 GSoC 申請開放還有半年多的時間,若是你以爲如今本身能力還稍顯不足,那就趁着這段時間努力提升本身,逐漸嘗試閱讀一些 GitHub 上的開源項目,甚至參與其中吧!祝願大家都能順利申請到本身喜歡的 GSoC 項目!

相關文章
相關標籤/搜索