今年是我来美国念书的唯一一个暑假,到秋季学期就要开始求职找工作,因此这个暑假找一个靠谱实习的重要程度就不言而喻了。因为之前自己一心想留在纽约,加上找实习的策略有误,只投了一些纽约本地的公司,几家大厂连简历都没投,导致自己一直到二月份还没有定下实习。

虽说实习找得不太顺利,自己却误打误撞申到了 GitHub 组织的 Google Summer of Code,跟 GitHub Education 的组员一起开发他们的开源项目 GitHub Classroom。项目全程是我和 GitHub 的两位导师 John Britton 和 Mark Tareshawty 以及两位其他实习生远程协作开发的。GitHub 至少有 60% 的员工远程工作,因此他们对于分布式协同开发很有经验。

GitHub Classroom

GitHub Classroom 是一个 Ruby on Rails 应用,旨在帮讲师管理学员们的编程作业。讲师可以在平台上注册课程,然后创建一个新作业,Classroom 会自动生成一个作业邀请链接,讲师把这个链接群发给学员,学员们点开链接就可以通过 GitHub 自动创建一个用来完成作业的 repo 了。

在参加这个项目之前我对 Ruby on Rails 没有任何了解,从来没有写过一行 Rails 代码。我的第一个 Pull Request 完全是按照项目里原有代码的风格一点一点瞎捉摸搞出来的。通过这个项目我跟 mentor 学到了很多自己以前从未接触过的东西,比如如何以 Behavior Driven Development 模式来开发与测试应用,如何使用 Continous Integration 来自动化测试。GitHub 对软件的工匠精神要求很高,比如,每一行代码都要有测试覆盖,任何一个多余的或缺失的空行都需要被改正,连每一个函数名称都要被细细推敲。对工匠精神如此看中,我认为是他们能把自己的产品做得那么成功的一个主要原因。

Not only working software, but also well-crafted software

LA

GitHub 很慷慨地邀请了所有的实习生和 Summer of Code 学员一起去洛杉矶参加 CodeConf 2016,全程包机票酒店和大会的门票。这是我第一次来加州,虽然只有三天时间,但也是非常难忘的经历。

在洛杉矶住在了公司订的 W Hollywood,由于酒店就在好莱坞大道上,所以来的当天就顺着星光大道走了一趟。其实星光大道没有太多可以参观的地方,道路两边主要是一些礼品店,偶尔会有一两个街头艺人。如果以前去过杜莎夫人蜡像馆的话,可能值得驻足的就只有 TCL Chinese Theatres 了。另外好莱坞大道上的 costume character 数量不输时代广场,我想知道这种装扮成卡通人物或超级英雄与游客拍照合影赚取小费的商业模式到底是源自哪里。

第二天和 GitHub 的几位小伙伴吃了早午饭,然后去了 Hollywood 后面的一座小山上,远程眺望了 Hollywood 标志,比想象中的要小不少。当晚 GitHub 请我们在 Cleo Hollywood 吃了晚餐,这是我第一次吃地中海食物,十分美味。

CodeConf 2016

第三天和第四天参加了 GitHub 组织的开发者大会 CodeConf 2016,期间认识了很多开发者朋友,他们大多是来自 LA 本地的 Web 开发者或在校学生。自己来美国快一年以来也是第一次这么高频率地和别人讲英语,感觉参加完两天的大会之后口语进步了不少。

虽说 CodeConf 给了我们一个与同行业人员互相交流的好机会。它也有值得吐槽的地方,其中最严重的问题就是这个大会没有一个明确的主题,因此演讲的主题涵盖方方面面:有讲 UI 设计的,有讲 NLP 的,有讲分布式算法 (Raft) 的,更有讲自己如何创办退伍老兵编程学校的。软件这个领域如今已经太大了,同样是软件工程师,做的事情有可能差了十万八千里。因此我认为办技术大会还是需要一个明确主题才能成功,如果范围太广,内容只会杂七杂八的,很难吸引到大量参与者。

总的来说,虽说这个暑假没有像其他学生一样参加正常的暑期实习,但自己却很庆幸能够有机会与 GitHub 的朋友一起共事,为自己点亮了一棵全新的技能树。希望即将到来的秋季学期求职顺利吧。