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

TL; DR: Сегодня начался «студенческий» период Google Summer of Code, и если вы — студент какого-нибудь ВУЗа, вполне возможно, что это именно то, чем вы хотите заняться этим летом!


Привет. 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 обязан быть студентом аккредитованного вуза (оффлайнового или онлайнового) на момент принятия в программу (в мае, то есть пятикурсником быть ок!).


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


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


Напоследок


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


Пара ссылок напоследок:


  • Про GSoC много писали на Хабре, по тегам gsoc и google summer of code можно найти и отчёты о результатах, и разъяснения.
  • сайт GSoc, со всеми доками;
  • наша маленькая, но гордая, организация — в благодарность за этот пост вы все должны записаться в неё! просто чтобы посмотреть на пример одной из них;
  • правда, посмотрите список организаций — даже если вы не студент, может быть какой-то из этих проектов — для вас?…

Комментарии (1)

  • 28 февраля 2017 в 17:19

    0

    По ощущениям, в более-менее известный проект, не поконтрибьютив в и не будучи реально выдающимся программистом очень сложно. Так что советую реально себя оценивать и не пытаться на первом курсе попасть в реально крутой проект типа LLVM. Лучше выбрать что-то не настолько известное, что интересно лично вам.


    Всем успеха!

© Habrahabr.ru