阅读文本大概需要 6.66 分钟。

你听过 GSoC 么?我想绝大部分人都没听过。

GSoC 全称是 Google Summer of Code,即 Google 编程之夏,GSoC 是很多学生朋友们的福音,参加这个项目绝对会让自己收获巨大,甚至是很多人在硅谷混的一个启蒙之路,可惜的是,国内没多少人知道这个项目,那么今天我就带大家认识下 GSoC。

值得一提的是,在之前我也不知道 GSoC 这个项目,是我一个小密圈圈友「LoLo」在小密圈分享我才了解到的,LoLo 是北大空间物理专业的在读学生,然而自己却对 IT 感兴趣,自学了不少相关知识,之前在我公众号留言过,说要去微软面试,值得高兴的是,他现在已经面试通过,在微软大数据挖掘组实习,他也报名参加了今年的 GSoC,其中有很多感触,收获特别特别大,并且把自己的经历与经验总结了下来,这里必须扩散让更多的同学受益。

背景

这篇文章包含了对 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 组织的、含金量高、报酬丰厚(你可以拿到数万元的奖励!)、拥有众多大名鼎鼎的开源社区参与的暑期项目。希望能以此为广大技术水平扎实并渴望锻炼的国内大学生们提供一点微小的帮助,不要再因为「不知道」、「没听说」而错过了这样一个优秀的项目!

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.

译即:

Google 编程之夏是一个全球性项目,旨在为学生们和开源、自由软件、技术相关的组织建立联系,让学生们贡献代码并获得报酬!组织会提供导师,在学生从熟悉社区到贡献代码的整个过程中提供指导。这个想法的目的是让学生们参与和熟悉开源社区,并帮助他们充分利用暑假时间去得到锻炼。

在我看来这段介绍十分简明扼要,如果你想了解更多细节,可以到「What is Google Summer of Code? 」

http://write.flossmanuals.net/gsocstudentguide/what-is-google-summer-of-code/

如果用一句话概括的话就是,学生用一个暑假的时间(其实从 5 月底 6 月初就会开始,国外放暑假较早)在导师的指导下为开源社区写代码,Google 为你的工作支付报酬(2017 年之前似乎是 5K 刀;2017 年开始分地区支付,中国大陆降低至 3.6K 刀,换算过来约 25K 软妹币,仍然是一笔可观的收入)。

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 而错过其他机会!

申请资格、流程和技巧

任何在读的本科、硕士、博士生均可以申请 GSoC。如果你已经毕业了,那就非常遗憾不能再以学生身份参与 GSoC 了。Google 还有一些更细节的要求,但一般都是可以满足的,具体可参照:FAQ#What are the eligibility requirements for participation?

https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_requirements_for_participation

Google 每年都会发布 GSoC 的时间表,例如 2017 年的:Google Summer of Code 2017 Timeline

https://developers.google.com/open-source/gsoc/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:

https://docs.google.com/document/d/1lWXpWhUN6cE06sjQANjWxamc_X3ddbSphTRSofChLyk/edit

除了一份质量过硬的 Proposal 之外,在宣布最终名单之前和导师们的套磁也是非常重要的!多在 Mailing List 中刷刷脸,积极参与讨论。如果能够提出 Bug 甚至修复 Bug 或者实现新的 Feature 那是最好的。Checkstyle 的导师在最开始就清楚的写到学生的 Fixed Issue 数是很重要的指标。后来在 deadline 之前我足足交了 8 个 PR 位列十多个竞争者第一,这点也为我最终被选中加了不少分。

总结一下,认真投入、积极参与、多讨论多反馈,甚至去帮助社区中的其他开发者,那么你就会有非常大的机会被选中!今年 4764 名提交了 Proposals 的学生中有 1318 名被选中,入选率大于四分之一,是相当高的。而且这 4764 人里其实有很多人是根本没有好好写 Proposal 的,也有很多人是水平真的很差也过来申请的。所以对绝大多数基础不差的国内大学生来讲,只要好好申请都是比较容易中的。要知道,咱们大学生的技术功底,甚至英语水平,绝不比邻居印度学生差(印度人的英语真的不见得都好),人家可以申请到 500+,咱们也可以做到,49 人远远不是咱们的真实水平!

结语

2017 年的 GSoC 已经在如火如荼的进行中了,今年错过了的小伙伴们不要遗憾,只要你们不是下个月就毕业离开校园了,GSoC 2018 便等着你们~ 离明年的 GSoC 申请开放还有半年多的时间,如果你觉得现在自己能力还稍显不足,那就趁着这段时间努力提高自己,逐渐尝试阅读一些 GitHub 上的开源项目,甚至参与其中吧!祝愿你们都能顺利申请到自己喜欢的 GSoC 项目!

PS:这么好的项目国内同学们竟然很少人知道,有点小悲哀,求大家扩散,让更多的同学们知道,也希望下次 GSoC 项目中可以见到更多的中国学生们。

END

这次,我没在扯淡!

不止技术与职场,还有生活与远方

长按关注,听我扯淡

——

微博: @googdev

个人博客: http://stormzhang.com

Google 编程之夏:海量优质项目,丰厚报酬,你竟然还不知道?相关推荐

  1. 1800 美金?Apache ShardingSphere 带薪远程实习招募啦!| 2021 Google 编程之夏

    2021 Google Summer of Code(GSoC)谷歌编程之夏是由谷歌主办的全球性编程实习生项目,意在鼓励青年学生通过参与真实的开源软件开发,提升自身技术实力,为学生们和开源.自由软件. ...

  2. Casbin入选2022 Google编程之夏

    Casbin入选2022 Google编程之夏! Google编程之夏(Google Summer of Code,GSoC),是由Google公司所主办的年度开源程序设计项目,第一届从2005年开始 ...

  3. Ruby与Google 2009编程之夏

    Google 编程之夏正在接收项目提案.今年Ruby On Rails也是赞助组织之一,为学生提供辅导. \u0026#xD;\n 也许大家还能记得,去年在Ruby Central的主导下,Googl ...

  4. 【大牛之路】大牛指导,报酬丰厚的开源项目---“谷歌编程之夏”

    正文 What 引用一下知乎@骆梁宸的文章Google 编程之夏(GSoC):海量优质项目,丰厚报酬,你竟然还不知道? 这个问题,我们先来看看 Google 官方是怎么说的:(出自 What is G ...

  5. 26个顶级开源项目,87个开放任务,阿里巴巴编程之夏2022学生报名通道开启

    站在2022年的时间节点回看开源, 它已经从一个小众的爱好者行为 变成了技术圈的主流, 不变的是, 开源像有引力一样吸引着全球的开发者, 超越国籍.语言的差异, 围绕着自己认可的开源项目, 不断地使用 ...

  6. 这一周通过了GoogleSummer of Code谷歌编程之夏

    当我偶然得知我通过了 GSoC 谷歌编程之夏的初选 时 我的内心是 十分激动地,因为我也没能想到,幸运之神能够眷顾我,让我获得这么好的 机会.(最终的2W奖金可真是诱惑极大) 已经停更了两周博客,现在 ...

  7. Linux编程之GCC编译工具实战-夏曹俊-专题视频课程

    Linux编程之GCC编译工具实战-6075人已学习 课程介绍         本课程使得学员能够学会在linux中如何编译C/C++程序,使用GCC工具如何编译静态库,动态库,如何配置运行动态库. ...

  8. Google编程之夏入围项目公布

    Google编程之夏(Google Summer of Code),是由Google公司所主办的年度程式设计比赛,第一届从2005年开始."Summer of Code"之名取自1 ...

  9. 看完知乎轮子哥的编程之路,我只想说,收下我的膝盖...

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 作者:vczh 来源:https://dwz.cn/sWwZoQEl vczh,本名陈 ...

  10. 1. 我的自学编程之路

    我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个动态网站(没有用任何框架).相比于计算机大牛,我更加知道一个小白将会遇到什么坑,遇到哪些难点.我把我的学习过程写在下面, ...

最新文章

  1. 可视化的数据结构和算法
  2. 用神经网络学习Fe原子光谱并反向求导计算权重
  3. 天池赛题解析:零基础入门语义分割-地表建筑物识别-CV语义分割实战(附部分代码)
  4. Kafka解析之topic创建(3)——合法性验证
  5. 单循环链表中设置尾指针比设置头指针更好的原因
  6. 数据库系统实训——实验五——存储过程
  7. Linux环境下Tomcat部署Solr4.x
  8. 实用收藏Linux命令备忘
  9. 【读书笔记】Java NIO (中文版) 读书笔记
  10. eclipse插件开发(四) 流程图绘制插件(雏形)
  11. Java POI 读取Excel-从开始到实例
  12. Spring Boot 学习笔记,这个太全了!
  13. memcache的安装和使用
  14. android:gravity与android:layout_gravity的区别,以及代码设置对应属性
  15. python地图匹配的步骤_地图匹配算法实践
  16. 图像算术编码 matlab,实验二:算术编码及MATLAB实现.doc
  17. 辽宁丰睿:抖音小店搭配售卖方式怎么设置?
  18. angular引入ng-zorro中的icon图标方法
  19. Xcode8 注释 快捷键
  20. 泛泛而谈的菜鸟学习记录(五)—— Compute Shader

热门文章

  1. Nginx负载均衡与健康检查
  2. oe7 安装财务模块后,科目表没有导入成功
  3. Python, Ruby 与 Groovy,谁与争锋
  4. PPPOE宽带接入技术及常见故障分析
  5. 「代码随想录」精讲了18道力扣上贪心算法经典题目,总结了这些!
  6. Illustrator 教程,如何在 Illustrator 中添加虚线和箭头?
  7. Mac工具PullTube如何在下载列表中创建重复项
  8. keepalived 非抢占模式
  9. python实现二分查找算法
  10. jenkins持续化集成中注意的3个小问题