本文作者 GeekPlux终吼,原文鏈接:參加 Google Summer of Code 的體驗,注明作者和原文地址即可轉(zhuǎn)載范抓。
Google Summer of Code (簡稱 GSoC)中文我叫它「谷歌編程夏令營」系忙,是一年一度谷歌組織的類似暑期實習的編程活動吏恭。2018 年的申請馬上就要開始了蓄拣,在此我分享一下我參加 2017 年 GSoC 的體驗扬虚。
什么是 Google Summer of Code?它值得參加么球恤?
這個問題可以參考Google 編程之夏(GSoC):海量優(yōu)質(zhì)項目辜昵,豐厚報酬,你竟然還不知道咽斧?這篇文章堪置,里面介紹的非常詳細,還客觀的論述了為什么 GSoC 值得參加张惹。不過在此我還是簡單科普一下:
簡言之舀锨,GSoC 是一年一度谷歌組織的、全球性的學(xué)生編程活動宛逗。學(xué)生利用暑假時間給開源社區(qū)貢獻代碼坎匿,谷歌支付報酬給學(xué)生。
將 GSoC 的特點提煉一下就是:
- 針對學(xué)生雷激。只有學(xué)生身份才能申請參加(包括本科替蔬、碩士、博士)
- 一年一度屎暇。每年都能申請承桥,3 月末開始(建議早點開始套磁)
- 全球性。你可能會和世界各地的學(xué)生一起工作
- 開源社區(qū)根悼。你是為開源社區(qū)貢獻代碼凶异,大部分組織在 GitHub 上,所以你的貢獻都是開源的挤巡,誰都能看到
- 暑假期間剩彬。6 月正式開始工作,到 9 月
- 報酬玄柏。谷歌支付報酬襟衰,中國區(qū)為 3600 刀,比大廠實習工資都高
- 遠程工作粪摘。這點在剛才的概念介紹中沒提到瀑晒,你可以在你想呆的任何地方寫代碼,不用去辦公室
- 導(dǎo)師指導(dǎo)徘意。每個項目會給你配一個導(dǎo)師苔悦,有的導(dǎo)師非常負責且是大牛,你可以跟他學(xué)到很多
我相信這些點已經(jīng)足夠吸引一個在校學(xué)生了椎咧。
GSoC 怎么申請玖详?
這個問題參考Google Summer of Code 學(xué)生申請指南把介。其實很簡單,就是一篇 proposal蟋座,通過就可以參加當年的 GSoC 了拗踢。其他的參考資料可以看 gsoc-cn。
正文 - 參加 GSoC 的體驗
申請
我是在 2017 年的 2 月份開始關(guān)注當年的 GSoC 申請向臀。雖然每年各組織是在 2 月末公布自己的項目巢墅,但它們組織內(nèi)部會在 1 月份甚至更早就開始謀劃今年 GSoC 的項目計劃,而且一般會公布在組織的主頁上券膀。我當時搜索到一些已經(jīng)公布的項目君纫,篩選了 3 個和我技能相匹配并且自己也想?yún)⒓拥捻椖浚苯影l(fā)了郵件過去芹彬。自我介紹了一番蓄髓,并把自己針對這個項目的簡單想法闡述了一下,其中有一個項目的 mentor(導(dǎo)師)非常熱情舒帮,來回幾番交流也十分愉快会喝,算是理清了這個組織在做什么,他們這個項目想達到的效果会前。另外兩個只是回復(fù)了我郵件便直接索要我的 proposal 了好乐。說實話在不了解項目需求的情況下很難寫一篇令人滿意的 proposal,所以我也對這兩個項目沒怎么上心瓦宜。
GSoC 的流程是 2 月末公布項目 idea,3 月末學(xué)生申請岭妖,所以有 1 個月的時間準備临庇。但是早起的鳥兒有蟲吃,有的人是 1 月份或上一年的 12 月就開始給項目貢獻 PR(pull request) 了昵慌,所以他們申請的優(yōu)勢相當大假夺。我的建議是越早準備越好,因為郵件的溝通沒有 IM 頻繁斋攀,再加上時區(qū)問題已卷,交流的時間跨度會拉的很長。
我當時由于自己在參與一個科研投稿項目淳蔼,分身乏術(shù)侧蘸,幾乎對申請上 GSoC 不抱什么希望了。但是在申請 deadline 前的幾天鹉梨,那個之前和我頻繁交流的導(dǎo)師來詢問我的 proposal讳癌,他督促我趕緊提交一份,即使不完美存皂,提交了總比放棄好晌坤。我被他鼓勵之后,立馬連夜趕了一份出來提交了,雖然寫的簡單草率骤菠,但也是達到了一份合格 proposal 的要求:把需求它改、自己的解決辦法、時間規(guī)劃都寫清楚了商乎。deadline 前一天導(dǎo)師還對我進行了視頻面試央拖,幸運的是最后通過了審核,在學(xué)生生涯的最后一年趕上了 GSoC 的末班車截亦。
工作
雖然 GSoC 是針對學(xué)生的爬泥,但我們不能以學(xué)生的心態(tài)面對這件事,而應(yīng)該抱以雇員的態(tài)度崩瓤。申請通過后袍啡,5 月整個月是暖身期,你可以熟悉組織里代碼的提交流程却桶,和組織里其他人聊聊天吹吹水搞搞關(guān)系境输,和導(dǎo)師多溝通一下之后暑假里的時間安排。比如你暑假有兩周想去旅游颖系,可以把這兩周的工作提前完成嗅剖。所以參加 GSoC 很自由,但要負責嘁扼。
主要的工作流程全在 GitHub 上完成信粮,從提 issue,到最后的 Pull Request 和 Code Review趁啸,日常交流是用 IRC 和 Gitter强缘,文檔管理用 Google doc。我的導(dǎo)師是意大利人不傅,除了帶我旅掂,還要帶 4 個人,分別來自印度访娶、牙買加商虐、瑞士和俄羅斯。大家時區(qū)不同崖疤,每天 IRC 里的 Good morning 出現(xiàn)在各個時段秘车。聊天都用英語,都是書面交流戳晌,所以口語差也沒關(guān)系鲫尊。
6 月正式開工,當時我是要用 WebGL 去重寫一個大概 2 萬節(jié)點沦偎,10 萬條邊的圖結(jié)構(gòu)可視化項目疫向,前期工作不算一馬平川咳蔚,但也算走的穩(wěn)當。到了中期搔驼,如何在 WebGL 中做交互成了一大難題谈火,到了后期則是性能的優(yōu)化。最終到 9 月份的時候我在 proposal 中提到的差不多有 90% 完成了舌涨,除了性能問題還有待提高糯耍。
3 個月中,我除了參加 GSoC 還需要水一篇論文囊嘉,所以時間特別緊張温技,幾乎是兩班倒。導(dǎo)師問我進度的時候就各種解釋扭粱,然后加班加點趕進度舵鳞。每個月底會有一次評估,導(dǎo)師會針對你這個月的表現(xiàn)來決定你能不能繼續(xù)參加琢蛤,我每次都是低空飄過蜓堕。最后項目結(jié)束我覺得我可能沒達到導(dǎo)師的預(yù)期,但也算完成了工作博其。雖然總體上我覺得不是很出色套才,不過導(dǎo)師在 final evaluation 還是寫了不錯的評價。所有的工作總結(jié)在我之前的博文netjsongraph.js?—?Google Summer of Code (GSoC) 2017 summary中慕淡。
體驗
- 代碼水平有所提高背伴。我參加的項目當時我導(dǎo)師他對前端可能沒我熟,不過對代碼風格峰髓、commit message 規(guī)范的要求還是很高的挂据,在郵件中曾不止一次強調(diào)。另外他還推薦書單讓我們閱讀儿普,他認為編程有很多是非常核心的、穩(wěn)定的和通用的掷倔,學(xué)這部分才是關(guān)鍵眉孩。
- 對開源有了全新認識。之前可能覺得開源只是一些個人開發(fā)者或組織把自認為不錯的代碼公布出來供大家交流勒葱。參加 GSoC 之后才發(fā)現(xiàn)很多開源組織非常龐大浪汪,組織架構(gòu)都很多層,有自己的一套工作流程和方式凛虽、儼然一家公司模樣死遭,有自己的盈利方式,甚至有自己的基金凯旋。它們的目標不止是開發(fā)者呀潭,還可能是國家的基礎(chǔ)設(shè)施建設(shè)等钉迷。再從個人開發(fā)者的角度來說,你可能由于參加 GSoC 而更加熱愛開源钠署,因為你發(fā)現(xiàn)開源社區(qū)的人都非常的熱心和認真糠聪。
- 和不同國家人工作的溝通成本很高。一方面是因為時區(qū)問題谐鼎,大部分溝通舰蟆,延遲回復(fù)都沒什么問題,但一旦你提的 issue 是個緊急的 bug狸棍,而他這時候卻在睡覺時間就很尷尬身害。另一方面是語言問題,盡管大家都用英語草戈,但水平參差不齊塌鸯,習慣不一,很多時候得多說兩三次互相才能徹底理解對方的意思猾瘸。不過認識新朋友看他們的 Twitter 和 Instagram 還是很有意思的界赔。
- 學(xué)會包裝自己。這方面我們隔壁的印度朋友簡直是典范牵触,縱觀他們的 proposal 和最后的總結(jié)都寫的非郴吹浚「浮夸」,平時的交流揽思,他們也是非常頻繁袜腥,活躍在各個平臺。他們不是語言上浮夸钉汗,是內(nèi)心上認為自己確實做到了他們敘述的效果羹令。總之其他國家的同學(xué)比我們都高調(diào)一點损痰,也很抱團福侈,所以我們還是要學(xué)習一個。
最后
人生艱難卢未,作為象牙塔里的學(xué)生都能感到壓力肪凛。如果你想利用暑假的大好時光來增加一點人生的經(jīng)驗,GSoC 可能是你不可多得的機會辽社。享受一線互聯(lián)網(wǎng)公司實習的待遇還能在 GitHub 上刷經(jīng)驗值伟墙,何樂不為?最重要的是滴铅,這可能是你開啟另一種生活方式的一個機會戳葵,也可能是改變你編程生涯的機會(有的人成了大型開源組織的 core team member),更是一個跳出你舒適區(qū)的機會汉匙。
我時常擔心自己變成溫水里的青蛙拱烁,所以非常期待人生中的各種際遇生蚁,也想要體驗各種各樣的生活,在此共勉邻梆,加油朋友守伸!
本作品采用知識共享 署名-非商業(yè)性使用-禁止演繹 4.0 國際 許可協(xié)議進行許可。