参加 Google Summer of Code 的体验

本文做者 GeekPlux,原文连接:geekplux.com/2018/01/07/…,注明做者和地址便可转载。html

Google Summer of Code (简称 GSoC)中文我叫它「谷歌编程夏令营」,是一年一度谷歌组织的相似暑期实习的编程活动。2018 年的申请立刻就要开始了,在此我分享一下我参加 2017 年 GSoC 的体验。前端

什么是 Google Summer of Code?它值得参加么?

这个问题能够参考Google 编程之夏(GSoC):海量优质项目,丰厚报酬,你居然还不知道?这篇文章,里面介绍的很是详细,还客观的论述了为何 GSoC 值得参加。不过在此我仍是简单科普一下:git

简言之,GSoC 是一年一度谷歌组织的、全球性的学生编程活动。学生利用暑假时间给开源社区贡献代码,谷歌支付报酬给学生github

将 GSoC 的特色提炼一下就是:面试

  • 针对学生。只有学生身份才能申请参加(包括本科、硕士、博士)
  • 一年一度。每一年都能申请,3 月末开始(建议早点开始套磁)
  • 全球性。你可能会和世界各地的学生一块儿工做
  • 开源社区。你是为开源社区贡献代码,大部分组织在 GitHub 上,因此你的贡献都是开源的,谁都能看到
  • 暑假期间。6 月正式开始工做,到 9 月
  • 报酬。谷歌支付报酬,中国区为 3600 刀,比大厂实习工资都高
  • 远程工做。这点在刚才的概念介绍中没提到,你能够在你想呆的任何地方写代码,不用去办公室
  • 导师指导。每一个项目会给你配一个导师,有的导师很是负责且是大牛,你能够跟他学到不少

我相信这些点已经足够吸引一个在校学生了。编程

GSoC 怎么申请?

这个问题参考Google Summer of Code 学生申请指南。其实很简单,就是一篇 proposal,经过就能够参加当年的 GSoC 了。其余的参考资料能够看 gsoc-cnjson

正文 - 参加 GSoC 的体验

申请

我是在 2017 年的 2 月份开始关注当年的 GSoC 申请。虽然每一年各组织是在 2 月末公布本身的项目,但它们组织内部会在 1 月份甚至更早就开始谋划今年 GSoC 的项目计划,并且通常会公布在组织的主页上。我当时搜索到一些已经公布的项目,筛选了 3 个和我技能相匹配而且本身也想参加的项目,直接发了邮件过去。自我介绍了一番,并把本身针对这个项目的简单想法阐述了一下,其中有一个项目的 mentor(导师)很是热情,来回几番交流也十分愉快,算是理清了这个组织在作什么,他们这个项目想达到的效果。另外两个只是回复了我邮件便直接索要个人 proposal 了。说实话在不了解项目需求的状况下很难写一篇使人满意的 proposal,因此我也对这两个项目没怎么上心。markdown

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 国际 许可协议进行许可。

相关文章
相关标签/搜索