谷歌编程之夏的含金量高吗
Ps. 如果所谓含金量还包括了对找工作的帮助的话,那么实际上谷歌里负责GSoC项目的Ms. Carol说过,凡是参加过GSoC的学生,随时可以找她内推去Google。我正好今年找工作,就正在等待时机使用这个重量级内推 :)
1. 报名者需要有什么样的基础才可以被选拔上?
如果你有语言偏好,那么当然最好找对口的,例如一些偏php的web项目,一些Java写的应用,一些C/C++写的游戏等。至于编程的实力,其实并没有那么高的要求,足够cover住你的工作就行。上面@罗聪翼 哥哥也提到了,我11年给Blender做国际化的时候,完全没用过这个软件,也基本不懂3D建模,但是我所要做的东西跟这些没关系,我就根本不需要知道。
所以当你看到有些来头很大的项目,例如Python,GNU,Unix,不要望而生畏,点开看一看,很有可能会发现一些idea完全在你的能力范围之内。接下来需要做的就是去和社区里的人“套磁”,让他们相信你能够胜任这个项目。
我的室友是大三暑假参加的GSoC,我大四、研一各参加了一次,去年中国貌似有一个大二的成功参加,而国外甚至不乏大一大二的成功参加。所以我觉得计算机大三,或者基本达到这一水平,付出一点心思,付出一点劳动,就完全可以成功参加。
2. 想取得好的成绩难度有多大?
我觉得在写proposal的时候就应该考虑到工作量有多大,基本按照3个月的全职实习工作量(每周5天,每天6小时)来考虑是比较合适的。在这个时间内,尽量把该有的feature做完,代码稳定,文档充分,最终能顺利进入主代码库,应该就算是很不错的成绩了。
如果是一个较大的项目,你可以拆成几大块,在GSoC时间范围内完成其中一块。后续再接着做其他的,毕竟GSoC本身的意义就是为开源软件找到更多志愿者。也可以在第二年的GSoC再继续完成,这相当于做了个大蛋糕慢慢吃。
也有很多项目没有做得尽善尽美,例如不稳定,BUG多,缺文档,其实mentor也都会给pass。我2012年做的项目其实就是在别人2011年的项目上继续做,重构一下,修修bug,增强点功能,写些wiki,最终使它并入主代码库。工作难度不大,又比较有意义——要不然2011年的工作就白白浪费了。
所以说,多付出一点,总会取得好成绩的。比如你每天干8个小时,或者每周干6天,结果肯定完全不一样——前提是你干的时候要感到快乐,这是GSoC和实习的区别之一。
3. 有什么好的经验可以分享。
貌似上面说得挺多了……
大概还需要补充一点——多说话。多跟社区的人、自己的mentor,甚至跟你自己的项目不相干的人交流,甚至去帮助别的GSoC学生。积极交流和反馈至少可以将你的申请成功率提高一倍。
Google 组织的、含金量高、报酬丰厚(你可以拿到数万元的奖励!)、拥有众多大名鼎鼎的开源社区参与的暑期项目
Google 编程之夏是一个全球性项目,旨在为学生们和开源、自由软件、技术相关的组织建立联系,让学生们贡献代码并获得报酬!组织会提供导师,在学生从熟悉社区到贡献代码的整个过程中提供指导。这个想法的目的是让学生们参与和熟悉开源社区,并帮助他们充分利用暑假时间去得到锻炼
GSoC 含金量高在哪里
通常而言,同学们夏天想自我提升的话有两个去处,一是暑研、二是暑期实习。GSoC 偏向工程,和后者更为相似(但也有很大不同),和暑期实习对比着来分析,更容易看出 GSoC 的优势:
时间安排和工作模式
以 2017 年为例。5 月 4 日 Google 宣布入选学生名单,之后到 5 月 30 日约一个月的时间为 Community Bonding Period,在这段时间里可以熟悉社区、和导师针对你的项目进行探讨等。5 月 31 日开始至 8 月 29 日是正式工作时间,你将会在约 12 周的时间里完成你所申请的项目。除了开始时间略早于国内期末考试时间外,时间跨度上基本与大部分暑期实习无异。而具体的任务量因项目而异,但通常不会太过繁重。导师也一般不会为难你,即使不能全部完成预期的内容,只要全程认真负责的参与,大都也会给 Pass。可能更多的时候是项目对中国学生而言是比较水的,比如前几天(Coding Period 才刚刚开始)群里就有人表示已经把全部 Coding 做完了现在正无聊的写文档……
GSoC 的任务全部是线上(online)完成的,相对于实习时每日早晚高峰痛苦的挤地铁(不忍吐槽帝都的交通),你完全可以在家中、在学校宿舍完成需要做的一切。简捷高效,不要太省心!
在 GSoC 项目期间,每个学生都会被分配一名导师,在整个项目期间给予你帮助。就我的亲身经历和身边人的体会,虽然会有些比较懒的放养导师,不过基本上还都是非常认真负责而且热心的。导师本身的技术水平也都十分出色。而如果你参与的是 GCC、OpenCV 这类久负盛名的工具、语言、框架的组织下的项目,很可能你的导师就会是这些组织的 Core Team Developer,他们可都是在行业内备受尊敬的大牛。
再拿我的经历举例。有一次我向主仓库提交了一段总计不超过 50 行的改动,但因为改动较为关键,组织内的几个导师和我充分的讨论了足足一周,覆盖了代码风格、性能优化、可测试性、向前和向后兼容、设计原则等方方面面,经过数次修改,最终成功并入。这个过程中是收获巨大的。通常我们会讲被 review 是非常好的学习途径,写越少而精的代码,被 review 的越详细,对应的成长是越快的。而 GSoC 正是这种模式。
相比而言,大部分一线开发岗位的实习,负责带你的人很可能也只是刚毕业工作过三五年,本身技术水平不算惊艳,而业务导向的开发则是以效率为先的,很难有机会有人给你的代码做详尽细致的 review。更糟糕的一些情况是,可能有些实习生大部分时间都在做“打杂”的工作,而不能进行真正有意义的创造,更谈不上学习了。
当然实习也绝不能被一棍子打死,像 MSRA 的研究实习生、BAT TMD 华为这些一线公司的实验室或者核心部门实习也都是相当有含金量的,其中也有很多 GSoC 中所不能学习到的东西,也是非常值得选择的。
报酬
降价之前的报酬折算至每月是 11K 有余,几乎快赶上一线互联网公司的正式应届员工价格了。降价之后大概是一月 8K 多,仍然是碾压各家一线的实习生价格。还不用扣税哟!
个人成长
综上来看,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 Deion、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 人远远不是咱们的真实水平!
。
这是全世界程序员,最向往的公司,肯定含金量,高啊,
各种大牛,你以为你很厉害了,可能你一去会发现有的人,你怎么追都追不上,不是一个数量级.