參加 Google Summer of Code 的體驗

本文做者 GeekPlux,原文連接: http://geekplux.com/2018/01/07/experience-of-gsoc-google-summer-of-code.html,註明做者和地址便可轉載。

Google Summer of Code (簡稱 GSoC)中文我叫它「谷歌編程夏令營」,是一年一度谷歌組織的相似暑期實習的編程活動。2018 年的申請立刻就要開始了,在此我分享一下我參加 2017 年 GSoC 的體驗。html

什麼是 Google Summer of Code?它值得參加麼?

這個問題能夠參考Google 編程之夏(GSoC):海量優質項目,豐厚報酬,你居然還不知道?這篇文章,裏面介紹的很是詳細,還客觀的論述了爲何 GSoC 值得參加。不過在此我仍是簡單科普一下:前端

簡言之,GSoC 是一年一度谷歌組織的、全球性的學生編程活動。學生利用暑假時間給開源社區貢獻代碼,谷歌支付報酬給學生git

將 GSoC 的特色提煉一下就是:github

  • 針對學生。只有學生身份才能申請參加(包括本科、碩士、博士)
  • 一年一度。每一年都能申請,3 月末開始(建議早點開始套磁)
  • 全球性。你可能會和世界各地的學生一塊兒工做
  • 開源社區。你是爲開源社區貢獻代碼,大部分組織在 GitHub 上,因此你的貢獻都是開源的,誰都能看到
  • 暑假期間。6 月正式開始工做,到 9 月
  • 報酬。谷歌支付報酬,中國區爲 3600 刀,比大廠實習工資都高
  • 遠程工做。這點在剛纔的概念介紹中沒提到,你能夠在你想呆的任何地方寫代碼,不用去辦公室
  • 導師指導。每一個項目會給你配一個導師,有的導師很是負責且是大牛,你能夠跟他學到不少

我相信這些點已經足夠吸引一個在校學生了。面試

GSoC 怎麼申請?

這個問題參考Google Summer of Code 學生申請指南。其實很簡單,就是一篇 proposal,經過就能夠參加當年的 GSoC 了。其餘的參考資料能夠看 gsoc-cn編程

正文 - 參加 GSoC 的體驗

申請

我是在 2017 年的 2 月份開始關注當年的 GSoC 申請。雖然每一年各組織是在 2 月末公佈本身的項目,但它們組織內部會在 1 月份甚至更早就開始謀劃今年 GSoC 的項目計劃,並且通常會公佈在組織的主頁上。我當時搜索到一些已經公佈的項目,篩選了 3 個和我技能相匹配而且本身也想參加的項目,直接發了郵件過去。自我介紹了一番,並把本身針對這個項目的簡單想法闡述了一下,其中有一個項目的 mentor(導師)很是熱情,來回幾番交流也十分愉快,算是理清了這個組織在作什麼,他們這個項目想達到的效果。另外兩個只是回覆了我郵件便直接索要個人 proposal 了。說實話在不瞭解項目需求的狀況下很難寫一篇使人滿意的 proposal,因此我也對這兩個項目沒怎麼上心。json

GSoC 的流程是 2 月末公佈項目 idea,3 月末學生申請,因此有 1 個月的時間準備。可是早起的鳥兒有蟲吃,有的人是 1 月份或上一年的 12 月就開始給項目貢獻 PR(pull request) 了,因此他們申請的優點至關大。個人建議是越早準備越好,由於郵件的溝通沒有 IM 頻繁,再加上時區問題,交流的時間跨度會拉的很長。架構

我當時因爲本身在參與一個科研投稿項目,分身乏術,幾乎對申請上 GSoC 不抱什麼但願了。可是在申請 deadline 前的幾天,那個以前和我頻繁交流的導師來詢問個人 proposal,他督促我趕忙提交一份,即便不完美,提交了總比放棄好。我被他鼓勵以後,立馬連夜趕了一份出來提交了,雖然寫的簡單草率,但也是達到了一份合格 proposal 的要求:把需求、本身的解決辦法、時間規劃都寫清楚了。deadline 前一天導師還對我進行了視頻面試,幸運的是最後經過了審覈,在學生生涯的最後一年遇上了 GSoC 的末班車。ide

工做

雖然 GSoC 是針對學生的,但咱們不能以學生的心態面對這件事,而應該抱以僱員的態度。申請經過後,5 月整個月是暖身期,你能夠熟悉組織裏代碼的提交流程,和組織裏其餘人聊聊天吹吹水搞搞關係,和導師多溝通一下以後暑假裏的時間安排。好比你暑假有兩週想去旅遊,能夠把這兩週的工做提早完成。因此參加 GSoC 很自由,但要負責。性能

主要的工做流程全在 GitHub 上完成,從提 issue,到最後的 Pull Request 和 Code Review,平常交流是用 IRC 和 Gitter,文檔管理用 Google doc。個人導師是意大利人,除了帶我,還要帶 4 我的,分別來自印度、牙買加、瑞士和俄羅斯。你們時區不一樣,天天 IRC 裏的 Good morning 出如今各個時段。聊天都用英語,都是書面交流,因此口語差也不要緊。

6 月正式開工,當時我是要用 WebGL 去重寫一個大概 2 萬節點,10 萬條邊的圖結構可視化項目,前期工做不算一馬平川,但也算走的妥當。到了中期,如何在 WebGL 中作交互成了一大難題,到了後期則是性能的優化。最終到 9 月份的時候我在 proposal 中提到的差很少有 90% 完成了,除了性能問題還有待提升。

3 個月中,我除了參加 GSoC 還須要水一篇論文,因此時間特別緊張,幾乎是兩班倒。導師問我進度的時候就各類解釋,而後加班加點趕進度。每月底會有一次評估,導師會針對你這個月的表現來決定你能不能繼續參加,我每次都是低空飄過。最後項目結束我以爲我可能沒達到導師的預期,但也算完成了工做。雖然整體上我以爲不是很出色,不過導師在 final evaluation 仍是寫了不錯的評價。全部的工做總結在我以前的博文netjsongraph.js — Google Summer of Code (GSoC) 2017 summary中。

體驗

  • 代碼水平有所提升。我參加的項目當時我導師他對前端可能沒我熟,不過對代碼風格、commit message 規範的要求仍是很高的,在郵件中曾不止一次強調。另外他還推薦書單讓咱們閱讀,他認爲編程有不少是很是核心的、穩定的和通用的,學這部分纔是關鍵。
  • 對開源有了全新認識。以前可能以爲開源只是一些我的開發者或組織把自認爲不錯的代碼公佈出來供你們交流。參加 GSoC 以後才發現不少開源組織很是龐大,組織架構都不少層,有本身的一套工做流程和方式、儼然一家公司模樣,有本身的盈利方式,甚至有本身的基金。它們的目標不止是開發者,還多是國家的基礎設施建設等。再從我的開發者的角度來講,你可能因爲參加 GSoC 而更加熱愛開源,由於你發現開源社區的人都很是的熱心和認真。
  • 和不一樣國家人工做的溝通成本很高。一方面是由於時區問題,大部分溝通,延遲迴復都沒什麼問題,但一旦你提的 issue 是個緊急的 bug,而他這時候卻在睡覺時間就很尷尬。另外一方面是語言問題,儘管你們都用英語,但水平良莠不齊,習慣不一,不少時候得多說兩三次互相才能完全理解對方的意思。不過認識新朋友看他們的 Twitter 和 Instagram 仍是頗有意思的。
  • 學會包裝本身。這方面咱們隔壁的印度朋友簡直是典範,縱觀他們的 proposal 和最後的總結都寫的很是「浮誇」,平時的交流,他們也是很是頻繁,活躍在各個平臺。他們不是語言上浮誇,是心裏上認爲本身確實作到了他們敘述的效果。總之其餘國家的同窗比咱們都高調一點,也很抱團,因此咱們仍是要學習一個。

最後

人生艱難,做爲象牙塔裏的學生都能感到壓力。若是你想利用暑假的大好時光來增長一點人生的經驗,GSoC 多是你不可多得的機會。享受一線互聯網公司實習的待遇還能在 GitHub 上刷經驗值,何樂不爲?最重要的是,這多是你開啓另外一種生活方式的一個機會,也多是改變你編程生涯的機會(有的人成了大型開源組織的 core team member),更是一個跳出你溫馨區的機會。

我時常擔憂本身變成溫水裏的青蛙,因此很是期待人生中的各類際遇,也想要體驗各類各樣的生活,在此共勉,加油朋友!


本做品採用知識共享 署名-非商業性使用-禁止演繹 4.0 國際 許可協議進行許可。

相關文章
相關標籤/搜索