Google Summer Of Code 2017 — почему это важно и как в этом поучаствовать

Google Summer Of Code 2017 — почему это важно и как в этом поучаствовать

27 февраля Гугл объявил, какие опенсорсные проекты приняты в программу в этом году. И теперь для всех студентов, которые хотят принять участие, наступил момент приложить усилия, чтобы поучаствовать в этом занятном мероприятии.

Я попытаюсь объяснить, как и зачем это делать — частично пересказать (очень вкратце) официальный сайт, частично поделюсь своими собственными наблюдениями, как ментора этой программы.

Ты кто?

Ruby-программист, 15 лет опыта, 10 лет программирования на Ruby, энтузиаст opensource, бла-бла-бла. С прошлого года — я один из менторов в Google Summer of Code для opensource-организации SciRuby.

А теперь — к делу.

Что вообще такое этот Google Summer of Code?
  • опенсорсные организации, которые разрабатывают большие и важные проекты, заявляют о своей готовности принимать студентов;
  • студенты подают заявки «я готов написать для этого проекта код, который будет делать то-то и то-то»;
  • лучшие из них принимаются в программу;
  • те, кого приняли, всё лето пишут код и получают стипендию от Google;
  • . а опытные программисты из «принимающей» организации помогают им в этом, дают советы, критикуют код и вообще занимаются тем, что называется «менторством».
ОК, и зачем оно мне?

По множеству причин!

Во-первых, это опыт и взаимодействие с зачастую очень крутыми программистами, в реальных и сложных проектах. И при этом, насколько я могу судить, менторы GSoC — это люди, которые заведомо готовы возиться со студентами куда больше, чем это делают «старшие» в коммерческих проектах, например. И, кстати, менторы берут на себя обязательство быть менторами (только в этот период; в другое время те кто поддерживают большие опенсорс проекты зачастую готовы принимать и поддерживать новичков, но не обязаны это делать).

Во-вторых, это возможность стать заметным в программерском сообществе. Несколько студентов, которые участвовали в наших проектах в прошлом году, по результатам выступили на нескольких серьёзных конференциях, один в этом году сам стал ментором. Кажется, иметь к пятому курсу в активе несколько международных конференций и известных проектов — не худший путь для начала карьеры, м?

В-третьих, прагматично — это деньги. Я, к сожалению, не знаю сколько (кажется, с этого года Google начал странную практику «мы сами решим сколько платить студенту, в зависимости от средних цен в его стране»), но, вроде бы, — не меньше нескольких сотен долларов в месяц. Опять же, не худший стимул провести лето с толком.

В-четвёртых, это сообщество в целом. В мотивирующих статьях и рекламе LinkedIn часто утверждается что-нибудь вроде «более X% находят работу через знакомых!» — к сожалению или к счастью, в этом утверждении много истины (в зависимости от значения X, конечно). Но дело не только в этом. Возможность ещё на уровне «я только учусь» завести личные контакты и получить благожелательное внимание хороших программистов со всего мира — это то, зачем нужен GSoC.

Ну допустим. А что делать?

В официальном таймлайне говорится, что студенты могут регистрироваться и подавать свои предложения с 20 марта по 3 апреля. Но и в неофициальных разъяснениях, и в моём личном опыте — рекомендуется начинать прямо сейчас (поэтому сейчас я и пишу этот текст).

С чего начинать?

  • Посмотреть на организации, которые Google принял для участия в GSoC.
  • Найти среди них знакомые/интересные/использующие интересные вам технологии.
  • Почитать их «список предлагаемых проектов» (ideas list), и решить, что вам по душе.
  • Почитать код соответствующего проекта, подумать, прикинуть, составить хоть какой план.
  • Подписаться на рассылки/форумы/группы организации, познакомиться, помахать рукой со словами что вот он я, хотел бы заниматься тем и этом.
  • Если хватит сил и понимания — сделать пару пулл-реквестов в код соответствующего проекта (решая какие-нибудь простые задачи, хоть опечатки в доках исправляя) — поможет вам понять, разбираетесь ли в коде; и им даст понять, что вы вникаете.
  • Можно написать лично координатору выбранного проекта — но лучше не слишком навязываться; многие (и я в их числе) предпочитают «официальные» каналы связи организации — рассылки и форумы.

После этого — если всё пошло хорошо, вы поняли что эти люди вам не противны, и они не дали понять, что вы им не подходите — в заданный срок (с 20 марта по 3 апреля) можно подавать свои proposals. Лучше раньше, чем позже — пропозалы можно редактировать, и скорее всего менторы помогут вам это сделать, задавая наводящие вопросы и тыкая в слабые места, выявляя нереалистичные планы и бессмысленные заявки.

А потом вас примут! Или не примут. Одно из двух.

Я бы хотел. Но я, кажется, ещё не настолько крутой программист

А ничего страшного. И более того, менторы ожидают что студенты только начали программировать и могут делать совершенно дикие вещи — никого из менторов это не пугает. Один из самых наших интересных проектов в прошлом году — руби-обёртку для библиотеки NASA сделал человек, который в мае писал настолько чудовищный код, что даже у видавших виды аксакалов возникали сомнения. А к августу — совершенно прилично писал. Потому что осмыслял каждую претензию и поправку к своему коду, не ленился переписывать всё что кажется устаревшим и вообще изо всех сил старался понять как лучше.

В конце концов, даже если вас не примут (а это вполне вероятно, а лягер кум а лягер) — можно взять себя в руки и не выпиливаться из сообщества понравившегося проекта, помогать ему «просто так» — скорее всего произойдут следующие вещи:

  • вас будут менторить с тем же вниманием как и «официальных» студентов; да, вы не получите стипендии, зато получите нефиговое уважение от мейнтейнеров проекта (кстати, единственному студенту, который так и поступил в прошлом году, мы таки нашли возможность дать заодно и денежный грант, мимо GSoC);
  • в следующем году вас скорее всего примут без вопросов. а может, до следующего года вы так наловчитесь, что станете одним из менторов проекта, а не студентов?
Соблазнительно. А как понять, что оно мне не надо?

Тут всё просто — и, всё же, надеюсь, кому-нибудь будет полезно, чтобы не тратить своё и чужое время. Итак, несколько простых правил:

  1. Если во всём списке вы не видите ни одного проекта, в котором правда, искренне интересно разобраться и поучаствовать — не заставляйте себя. Без икреннего энтузиазма этот путь не преодолеть.
  2. Если вы воспринимаете всю эту инициативу как «возможность поднять бабла» — не надо. Работать придётся много и сложно. Лучше уж в Макдональдс на лето устройтесь.
  3. Если вам кажется что вы уже офигенно крутой программист (но при этом вы почему-то ещё студент), менторить вас не надо, зато вы готовы Нести Свет Истины в какой-нибудь опенсорсный проект и получать за это стипендию — вероятно, что-то происходит не так. Just sayin’

Совсем коротко: чтобы принять участие с пользой для себя и окружающих, необходимо два стремления одновременно:

  1. стремление напрограммировать что-то интересное и
  2. стремление учиться.

И как это будет происходить?

Если вас примут (давайте будем оптимистами и напишем «когда вас примут»!) — это станет известно 4 мая — дальше официальный таймлайн даёт такой порядок:

  • весь май — познакомиться и подружиться с сообществом выбранного проекта;
  • с 1 июня начинается написание кода (хотя, понятно, никто не мешает — и все приветствуют — и в мае его писать);
  • в конце июня и июля происходит оценка промежуточных результатов; в этот момент вполне можно вылететь, кстати! и выплата стипендий (правила в этом году поменялись, так что я не могу точно сказать, платится ли стипендия за предыдущий месяц, если вы не прошли оценку. но скорее нет, чем да);
  • в конце августа — оценка окончательных результатов, выплата последней стипендии, финальные торжественные мероприятия.

Обратите внимание! Предполагается (и во время оценки проекта в апреле, и во время работы летом) что это фулл-тайм занятость, 40 часов в неделю. Никто, конечно, не ожидает что вы будете заполнять какие-то отчёты «сколько часов я сегодня работал», и в целом — насколько я могу судить — отношение к студентам в общем либеральное, «главное сделать заявленное, или хотя бы честно попытаться». Но важно понимать, что участвуя в GSoC, вы соглашаетесь на много работы — и соответствующим образом выстраивать и свой пропозал, и планы на лето.

Если же кажется, что от вас требуют слишком много — см. предыдущий пункт.

А потом что?

А потом — что угодно! Как минимум, стоит завершить проект — то есть если вы, допустим, написали весь код и не дописали доки/не сделали релиз — ну, не ленитесь, закончите! (Даже если проект уже был принят, стипендия выплачена, начался новый семестр в вузе, новая девушка. ) Но, по меньшей мере, оставить за спиной «хорошо сделанное дело» — куда полезнее и для себя, и для других, чем оставить всё в состоянии «и так сойдёт, стипендия-то пропита» (и да, я много раз был тем человеком, который вписывался в какие-то интересные проекты «за зачёт», и бросал их сразу после зачёта — так что я точно знаю, о чём говорю).

Но это как минимум. А как максимум — вы можете, например, продолжать участвовать в проекте, если он увлёк (даже если не очень понятно, где найти на него время). Хотя бы лениво. Хотя бы пару часов в субботу — или скажем 15 минут в день. За это не будут платить стипендию, и, возможно, вообще никакой благодарности не будет. Зато будет наращиваться самое драгоценное — опыт и репутация.

Но так же важно, к слову, иметь смелость бросить проект, в который вы вложились — если вы точно поняли, что не нравится, не интересно, «не моё». И вообще про GSoC забыть навсегда — вовсе не зазорно. Но попробовать один раз, понять на что это похоже и бросить, потому что не соответствует вашим ожиданиям или характеру — куда осмысленннее, чем «даже не пробовать».

Если честно, мне было довольно странно наблюдать, как осмысленные ребята из Индии, Шри-Ланки, Таиланда, Индонезии — вкладывают все силы и средства в то, чтобы хотя бы попробовать; а вот российских, украинских, польских, болгарских, литовских имён среди студентов известных мне организаций — что-то не видать. Уж не знаю, списать это на незнание о GSoC, лень или что иное.

А если я не студент?

К сожалению, у Google строгие правила: студент GSoC обязан быть студентом аккредитованного вуза (оффлайнового или онлайнового) на момент принятия в программу (в мае, то есть пятикурсником быть ок!).

Но! Я повторю рекомендации, данные тем, кого не приняли: попробуйте «просто участвовать» в одном из проектов. Без ожидания стипендии — но с ожиданием менторства, опыта, вливания в какую-то живую среду.

Из всех способов получить живой реальный опыт — это один из самых надёжных.

Напоследок

Грубо: не ной «где взять опыт?», «как получить репутацию?», «что писать в резюме?» Как говорил один из моих лучших учителей программирования: «получил мяч — х**чь». Вот тебе мяч, дорогой друг. Дальше дело за тобой.

📎📎📎📎📎📎📎📎📎📎