Something to chat about: Google Code-in 2017 and the power of Open Source

Thoughts from a Winner of Google Code-in 2017

Source code for a chess-playing Zulip chatbot

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!

So, what is Google Code-in?

The Google Code-in Logo

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.

Once the competition ends, the organizations will each choose six finalists and two grand-prize winners. Each finalist receives a limited-edition hoodie. The winners are awarded an all-expenses-paid trip to Google Headquarters in California!

To enter Google Code-in, you do not have to be a programmer! Google Code-in includes several different task types. Tasks include programming tasks along with quality assurance, outreach, and more.

What is open-source?

A tree can represent open-source concepts like branches and pull requests!

The backbone of Google Code-in is open-source software. Software being “open-source” means that anyone can view and modify the project’s code.

Organizations use tools such as GitHub as a platform for their open-source workflow. Students will learn to create branches for new functionality. They will gain experience opening pull requests. This is where they submit their branches to the organization’s main repository.

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.

Who can sign up?

Any pre-university student can enter Google Code-in

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.

My Google Code-in Experience

Choosing Zulip

The Zulip Logo

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.

Before the competition started, I studied each organization. I wanted to know 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!

Once I had chosen my organization, I was ready to start completing tasks.

Tasks and Lessons Along the Way

I worked on a chess-playing chatbot for Zulip.

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. It does this 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.

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!

These tasks showed me how rewarding it could 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. Through making chessbot, the emoticon translation feature, and more, I saw the importance of being helped by others. They can help you to catch bugs and find solutions.

By having mentors, I’ve been able to learn how to write code that fits into a larger ecosystem. Working with Zulip has shown me the power of open source. Open source creates software and brings people together.

The Trip

Students, mentors, and parents at Google!

The grand-prize trip for Google Code-in is a fantastic trip to San Francisco. This included a day at the Googleplex in Mountain View. I had an outstanding time on the trip. 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.

Me and one of my mentors, Rohitt

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. It was wonderful getting a chance to meet someone that had such a positive impact on me.

Where other winners are from

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:

  1. 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.
  2. 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.

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. 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. This increases your productivity.

Be active in the community.

Organizations like dedicated and committed students. 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 doing GCI tasks.

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, do note that the GCI rules state that…

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. You want to ensure that you are in the top twenty for your organization before the competition ends.

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 your mentors as well as your fellow competitors. Mentors devote their time and energy to help students learn. 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!

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 the time and effort that my mentors 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.

Google Code-in has opened my eyes to open source software. It 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. I know that it is just the beginning of my open source endeavors.

Scroll al inicio

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar