by Marco Burstein (skunkmb)
由Marco Burstein(skunkmb)
聊天内容:Zulip的Google Code-in 2017! (Something to Chat About: Google Code-in 2017 with Zulip!)
2017年Google Code获奖者的感想 (Thoughts from a Winner of Google Code-in 2017)
My name is Marco Burstein, and last year I was a winner of Google Code-in 2017 with an organization called Zulip. With Google Code-in 2018 just around the corner, I thought it would be a good time to share my Google Code-in experience with the world!
我叫Marco Burstein,去年,我在一个名为Zulip的组织中获得了2017年Google Code冠军。 随着Google Code-in 2018 即将来临 ,我认为现在是与世界分享我的Google Code-in经验的好时机!
那么,什么是Google Code-in? (So, what is Google Code-in?)
Google Code-in (or “GCI” for short) is a competition where students from all over the globe contribute to open-source projects. GCI students complete tasks for open-source organizations (or “orgs”) from October 23 to December 12.
Google Code-in(简称“ GCI” )是一项竞赛,来自世界各地的学生为开源项目做出了贡献。 GCI学生从10月23日至12月12日完成开放源代码组织(或“组织” )的任务。
Once the competition ends, the organizations will each choose six finalists and two grand-prize winners. Each finalist receives a limited-edition hoodie, and the winners are awarded an all-expenses-paid trip to Google Headquarters in California!
比赛结束后,各组织将分别选择6名决赛入围者和2名大奖获得者。 每个决赛入围者都将获得限量版连帽衫,获奖者将获得全部费用的加利福尼亚州Google总部旅行!
In order to enter Google Code-in, you do not have to be a programmer! Google Code-in includes several different task types, including programming tasks along with quality assurance, outreach, and more.
要输入Google Code-in,您不必是程序员 ! Google Code-in包括几种不同的任务类型,包括编程任务以及质量保证,外联等等。
什么是开源? (What is open-source?)
The backbone of Google Code-in is open-source software. Essentially, software being “open-source” means that anyone can view and modify the project’s code.
Google Code-in的骨干是开源软件。 本质上,软件是“开源的”意味着任何人都可以查看和修改项目的代码 。
Oftentimes, organizations use tools such as GitHub as a platform for their open-source workflow. Students will learn to create branches for new functionality, and will gain experience opening pull requests, where they submit their branches to the organization’s main repository.
通常,组织使用诸如GitHub之类的工具作为其开源工作流的平台。 学生将学习为新功能创建分支 ,并会获得打开请求请求的经验,然后将请求提交到组织的主存储库。
Throughout Google Code-in, students contribute to these open-source organizations in many different ways, such as adding new features, fixing bugs, or doing research.
在整个Google编码活动中,学生可以通过许多不同的方式为这些开源组织做出贡献,例如添加新功能,修复错误或进行研究。
谁可以注册? (Who can sign up?)
Google Code-in is open to any pre-university students aged 13–17. Each year, more and more students enter, with 3,555 students entering last year.
Google Code-in开放给所有13-17岁的大学预科学生。 每年都有越来越多的学生进入,去年有3555名学生进入。
我的Google编码体验 (My Google Code-in Experience)
选择Zulip (Choosing Zulip)
I raced to my computer and typed in my password. It was time. The day had finally arrived: Google Code-in 2017 was starting! I had been waiting for months for GCI to begin; now was my chance to test my programming skills, and possibly win a trip to Google Headquarters in the process.
我跑到计算机上并输入了密码。 时间到了 那天终于到了:2017年Google Code-in开始了! 我已经等了几个月才开始GCI。 现在是我测试自己的编程技能的机会,并有可能在此过程中赢得Google总部之旅。
Before the competition started, I rigorously studied each organization, making sure I knew which one I was going to focus on. I even made a spreadsheet to help make me decide! The organization that I ended up choosing was Zulip: “the world’s most productive group chat”; it uses Python and Django on the backend with JavaScript on the frontend. Zulip combines the immediacy of chat with the efficiency of email-style message threading to make group chats better than anywhere else. It’s also completely free!
在比赛开始之前,我严格地研究了每个组织,以确保我知道我要专注于哪个组织。 我什至制作了电子表格来帮助我做出决定! 我最终选择的组织是Zulip:“世界上最高效的群聊” ; 它在后端使用Python和Django,在前端使用JavaScript。 Zulip将聊天的即时性与电子邮件样式的消息线程处理效率相结合,使群组聊天比其他任何地方都更好。 它也是完全免费的!
Once I had chosen my organization, I was ready to start completing tasks.
一旦选择了我的组织,我就准备开始完成任务。
一路上的任务和教训 (Tasks and Lessons Along the Way)
Throughout the competition, with the support of the Zulip mentors and team, I completed many tasks that I couldn’t have even imagined the year before. During the competition, I spent day after day working, sometimes not even getting out of my pajamas! One of my personal favorites was my creation of a Zulip chatbot to play chess with a user. “Chessbot” supports not only playing with other users but also against the computer itself through a connection to another open source project: the Stockfish chess engine. After writing over 900 lines of code, I submitted a functioning — albeit a bit buggy — chessbot system. After days of tweaks through code review sessions with my mentors, chessbot was accepted and merged.
在整个比赛中,在Zulip导师和团队的支持下,我完成了许多前一年甚至都无法想象的任务。 在比赛中,我日复一日地工作,有时甚至没有脱下睡衣! 我个人的最爱之一是我创建了一个Zulip聊天机器人,可以与用户下棋 。 “ Chessbot”不仅支持与其他用户一起玩游戏,而且还通过与另一个开源项目: Stockfish国际象棋引擎的连接来对抗计算机本身。 编写了900多行代码后,我提交了一个运行正常的国际象棋机器人系统-尽管有点bug。 经过与我的导师的代码审查会议进行了几天的调整后,国际象棋机器人被接受并合并。
Another favorite task of mine was the addition of a Zulip feature that would automatically translate emoticons (like “:)
” ) to emoji (like “?”). After several improvements and changes throughout the review process with my mentors, my feature was added as an option in the Zulip settings. It felt extremely satisfying to open up Zulip and see an option that I worked to create!
我的另一个最喜欢的任务是添加Zulip功能,该功能会自动将表情符号(例如“ :)
”)转换为表情符号(例如“?”)。 在与导师一起完成整个审查过程中的几处改进和更改之后,我的功能已作为一个选项添加到Zulip设置中。 打开Zulip并看到我努力创建的选项感到非常满意!
These tasks showed me how rewarding it can be to challenge yourself; many tasks took me days to complete, but at the end, I felt immense satisfaction and joy at what I had accomplished. Additionally, these tasks showed me the importance of collaboration during the programming process. Working on open-source projects has shown me that being helped by others improves your code’s quality dramatically. Before Google Code-in, I had never done a code review before, but through making chessbot, the emoticon translation feature, and more, I saw the importance of being helped by others to catch bugs and find solutions.
这些任务向我展示挑战自己会多么有意义 ; 许多任务花了我几天的时间才能完成,但是最后,我对自己的成就感到极大的满足和喜悦。 此外,这些任务向我展示了在编程过程中进行协作的重要性。 从事开源项目的工作向我表明, 在其他人的帮助下,可以大大提高代码质量 。 在使用Google Code-in之前,我从未做过代码审查,但是通过制作Chessbot,表情符号翻译功能等等,我看到了由他人帮助发现错误并寻找解决方案的重要性。
By having mentors I’ve been able to learn how to write code that fits into a larger ecosystem, and working with Zulip has shown me the power of open source, both for creating software and for bringing people together.
通过有导师,我已经能够学习如何编写适合更大生态系统的代码,与Zulip的合作向我展示了开源的力量,无论是在创建软件还是将人们聚集在一起。
旅行 (The Trip)
The grand-prize trip for Google Code-in is a fantastic trip to San Francisco, including a day at the Googleplex in Mountain View. I had an outstanding time on the trip, and it was honestly a dream-come-true to be able to visit the Google Headquarters. I felt extremely fortunate and excited to be able to see the inner-workings of the technology company that inspires me so much.
Google Code-in的大奖之旅是前往旧金山的绝妙旅程,其中包括在Mountain View的Googleplex进行的一日游。 我在旅途中度过了愉快的时光,说实话,能够访问Google总部真是梦想成真。 能够看到这家启发我的技术公司的内部运作,我感到非常幸运和兴奋。
While in San Francisco, I got to meet one of my Zulip mentors Rohitt in-person after spending months communicating with him over the Internet. Rohitt was extremely welcoming and helpful to me during the GCI process, and it was wonderful getting a chance to meet someone that had such a positive impact on me.
在旧金山期间,我花了数月与Internet交流后才见到我的Zulip导师Rohitt亲自。 罗希特(Rohitt)在GCI流程中对我非常热情和乐于助人,很高兴有机会认识对我产生如此积极影响的人。
Meeting with the other winners and mentors from all across the globe was fantastic, too. Even though we live in different countries and speak different languages, we were all brought together through our common passion for open-source technology.
与来自世界各地的其他获奖者和导师会面也很棒。 即使我们生活在不同的国家和使用不同的语言,我们也都通过对开源技术的共同热情而聚集在一起。
一些技巧 (Some Tips)
To help out any newcomers hearing about Google Code-in through this post, I figured I’d include some tips and tricks for competing in GCI. To start things off, I would recommend that you become comfortable with a few important tools used by many open-source organizations:
为了帮助所有通过这篇文章了解Google Code-in的新手,我想我会提供一些在GCI中竞争的提示和技巧。 首先,我建议您熟悉许多开源组织使用的一些重要工具:
GitHub, which is where almost all open source code is hosted online. It’s essential that you understand how to use GitHub in order to submit work and get feedback.
GitHub几乎是所有在线开源代码的托管地。 您必须了解如何使用GitHub才能提交工作并获得反馈。
IRC, short for Internet Relay Chat, which is how many open source organizations communicate. There are multiple different IRC clients, which let you chat with anyone else using the service. You can check out this guide made by Google on how to use it.
IRC, Internet Relay Chat的缩写,是许多开源组织进行通信的地方。 有多个不同的IRC客户端,可让您与使用该服务的其他任何人聊天。 您可以查看有关如何使用它的Google指南 。
During the competition, I think that there are a few important things to keep in mind in order to be as successful as you can be.
在比赛中,我认为有一些重要的事情要牢记,以便尽可能地成功。
坚持一个组织。 (Stick to one organization.)
Doing tasks for one organization exclusively enables you to be much more efficient, since you will always be using the same development ecosystem. Over time, you will become more and more comfortable with the way your organization’s source code is structured, which increases your productivity.
专门为一个组织执行任务可以使您效率更高,因为您将始终使用相同的开发生态系统。 随着时间的流逝,您将越来越熟悉组织的源代码的结构方式,从而提高了工作效率。
积极参与社区活动。 (Be active in the community.)
Organizations like to students that are dedicated and committed. By being active in the community, you show your engagement and interest in the organization. One way to be active is to answer other people’s questions in the IRC chat. You could also leave comments or feedback on other pull requests, or do work for the organization outside of just doing GCI tasks.
组织喜欢敬业奉献的学生。 通过积极参与社区活动,您可以显示自己对组织的参与和兴趣。 一种活跃的方法是在IRC聊天中回答其他人的问题。 您还可以对其他请求请求发表评论或反馈,或者仅执行GCI任务即可为组织工作。
做艰巨的任务。 (Do hard tasks.)
Doing difficult tasks shows your organization that you are willing to challenge yourself by working on things outside of your comfort zone. Challenging tasks are also better for demonstrating your skills, whether in programming, graphic design, or another medium.
做困难的任务向您的组织表明,您愿意通过在舒适区以外的地方工作来挑战自己。 具有挑战性的任务也更适合证明您的技能,无论是编程,图形设计还是其他媒介。
However, due note that the GCI rules state that…
但是,请注意,GCI规则规定:
If you’re trying to be a Finalist or win a Grand Prize, you need to be in the top-twenty task completers for an organization.
如果您想成为决赛入围者或赢得大奖,则需要成为该组织的前二十名任务完成者 。
Since doing a difficult task usually takes longer than an easy one, it is important to have a balance between the two types so that you can ensure that you are in the top twenty for your organization before the competition ends.
由于完成一项艰巨的任务通常要比完成一项简单的任务花费更长的时间,因此在两种类型之间保持平衡很重要,这样您就可以确保在比赛结束前进入组织的前20名。
Furthermore, doing challenging tasks is more beneficial from a learning perspective. Solving more difficult problems will help you improve at programming, design, or any other skill.
此外,从学习的角度来看,完成具有挑战性的任务更为有益。 解决更困难的问题将有助于您提高编程,设计或其他技能。
要有礼貌。 (Be polite.)
Always be polite and gracious to all of your mentors as well as your fellow competitors. Mentors devote their time and energy to help students learn, so it is important to show gratitude for all that they do!
对你们所有的导师以及同行的竞争对手总是礼貌和礼貌。 导师会花费时间和精力来帮助学生学习,因此对他们所做的一切表示感谢!
玩得开心! (Have fun!)
Last but not least, have fun! Participating in Google Code-in is a fantastic experience and a great way to learn new things. It is important to take a step back from focusing only on winning to enjoy the competition!
最后但并非最不重要的是,玩得开心! 参加Google Code-in是一种绝佳的体验,也是学习新事物的绝妙方式。 重要的是要退后一步,只专注于获胜才能享受比赛 !
If you aren’t chosen as a winner, you shouldn’t be disappointed; instead, be happy that you were able to compete, and learn from your mistakes. You can compete again next year!
如果您没有被选为赢家,那么您就不会失望。 取而代之的是,为自己能够竞争而感到高兴,并从错误中吸取教训。 您明年可以再次参加比赛!
(If you want to hear more about my tips, I made a separate article that goes more in-depth with my advice.)
(如果您想更多地了解我的技巧,我另写了一篇文章 ,对我的建议进行了更深入的介绍。)
结论 (Conclusion)
So, in conclusion, I want to say thank you. Thank you so much to Zulip for mentoring me and for serving as such an amazing community to be a part of. I really appreciate all of the time and effort that my mentors have spent reviewing my tasks and helping me improve. I look forward to continuing to contribute to Zulip in the future! Additionally, I want to thank Google and the Google Open Source team for putting on Google Code-in and for hosting all of us in San Francisco for such a fabulous week of activities. I feel so grateful to have had such an amazing opportunity, which I will surely remember for the rest of my life.
因此,总而言之,我要说谢谢。 非常感谢Zulip指导我,并成为一个如此出色的社区之一。 我非常感谢我的导师花费所有的时间和精力来审查我的任务并帮助我改善。 我期待着将来继续为Zulip做出贡献! 此外,我还要感谢Google和Google Open Source团队使用Google Code-in,并感谢我们所有人在旧金山举办了如此精彩的一周活动。 我很高兴有这样一个绝佳的机会,我将在我的余生中牢记这一点。
Google Code-in has opened my eyes to open source software and has inspired me to be more active in this community. I am so glad that I’ve been able to contribute to open source through this competition, and I know that it is just the beginning of my open source endeavors.
Google Code-in使我对开放源代码软件睁开了眼睛,并激发了我在这个社区中更加积极的精神。 我很高兴能够通过这次比赛为开源做出贡献,而且我知道这只是我的开源事业的开始。