Вся Правда О Google Summer Of Code — Часть 4

Часть 1 Часть 2 Часть 3 1. Как дожить до крайнего срока окончательной оценки? С одной стороны, здесь все просто – просто продолжайте работать.

С другой стороны, период после промежуточного семестра не менее труден, чем до него.

Во-первых, если на начальном этапе вы оставили большие дыры, сейчас самое время их заделать.

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

Во-вторых, именно на этом этапе могут проявиться ошибки проектирования, которые вы допустили в самом начале.

Если вы раньше не видели (или сознательно упускали из виду) возможность расширения функционала, то сейчас как раз наступил этап «разложить мясо на кости».

И если эти кости окажутся неправильно сконструированными, то повесить мясо не получится.

Хорошо, если придется немного подправить архитектуру, или обойтись одним-двумя костылями, но если архитектура изначально была неправильной, то придется либо урезать функционал, либо все переделывать.

Те.

есть вероятность провала итогового отчета.

Что именно делать, зависит от конкретного случая.

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

Также очень важно, как вы проектировали – самостоятельно или с наставником.

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

Причем не только в дизайне, но и в коммуникативных навыках.

В этом случае они вряд ли продолжат с вами работать.

Как поехать в отпуск? Большинство студентов идут на небольшой перерыв после промежуточного семестра.

Некоторые в течение отчетной недели.

Но в отпуск уходят все, даже наставники.

Организации обычно спрашивают студентов, когда они планируют свои каникулы.

Если вас не спросили и вы планируете отпуск, то честно признайтесь им в этом.

Чтобы отправиться в отпуск правильно, постарайтесь закончить какое-нибудь важное дело.

Во-первых, вам будет легче отдыхать.

Во-вторых, во время отпуска вы сможете немного расслабиться, и вам будет немного легче включиться в работу с уже работающим кодом.

Если в период кодирования вы написали дипломную работу или сдали сессию, т. е.

практически не работали над своим проектом — то это был ваш отпуск.

Каникулы — это не время, когда вы лично отдыхаете, а время, когда вы не работаете над проектом.

Если по каким-то причинам вам необходимо скрыть свой отпуск, то позаботьтесь о том, чтобы это время было потрачено на тестирование или написание документации.

Было бы неплохо сделать какую-то работу заранее и совершить ее во время отпуска, как будто вы находитесь не в отпуске, а на работе.

В развитии бывают взлеты и падения, поэтому небольшое снижение активности на неделю не вызовет подозрений.

2. Как пережить итоговый отчет? Когда у вас все хорошо и вы готовы приблизиться к финишу, вас могут ожидать небольшие сюрпризы.

У вашего наставника может быть 1001 запрос кода, которые вы все должны выполнить.

С вашей стороны вы вроде бы все сделали хорошо и готовы к финальному аккорду; со стороны вашего наставника - вы можете стать неуловимым Джо сразу после получения денег и какая разница, что вы потом доделаете.

Поэтому ваше сообщество постарается получить от вас код, который будет работать без дополнительных модификаций.

А поскольку у них еще есть разработчик, написавший этот самый код, они постараются завершить разработку до того, как вы получите деньги.

Это то, чем вы будете заниматься последние 2 недели.

Поэтому на август ничего планировать нельзя — никогда заранее не знаешь о новых требованиях твоего наставника, он, кстати, и тогда о них не знал, но теперь до него дошло.

Карандаши вниз.

В западном мире «pencils down» означает «карандаши вниз», т. е.

вы ничего не совершаете после дня X. В программе есть два дедлайна — мягкий и окончательный.

После мягкого вы все равно можете зафиксировать и добавить к нему.

Честно говоря, организации не считают мягкий дедлайн сроком выполнения работ — «рабы работают, солнце еще высоко».

Те.

Вполне вероятно, что после мягкого дедлайна ваша организация выдвинет вам еще один список требований.

Но окончательный срок уже вполне окончателен.

Официально Google не интересует код, который вы фиксируете после Дня X. То есть.

Вам следует передать Google только тот код, который вы зафиксировали до истечения крайнего срока.

И тут начинается небольшая проблема — что делать, если ваш наставник соизволил протестировать код только на этапе оценки, а вам нужно что-то исправить.

Здесь нужно прочитать правила Google. Этот вопрос часто задают студенты, и вроде бы коммитить можно и после дедлайна, но не стоит включать этот код в архив.

«Лишний» код вы опишете в файле README и отправите ссылку на него.

Но я советую вам закончить все до начала оценочного периода и устроить тест своему наставнику, дав ему ссылку на рекомендации Google. Вы отправляете свой код только после получения положительного результата в течение периода оценки.

Вам будет дано 2 или 3 недели на создание архива.

Чем раньше вы отправите код, тем скорее Google отправит второй пакет. Грязные хаки 3. В своих отчетах за середину июля перестаньте писать о том, что есть какие-то серьезные проблемы.

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

Если вы все-таки обожглись, то притворитесь валенком и поблагодарите наставника за хорошее испытание.

А если нет, то продолжайте работать дальше.

Если останется время – переделаете, если нет – закончите после итогового отчета.

Пишите оптимистичные отчеты.

Текста о том, что что-то пошло не так, должно быть больше, чем описаний ваших ошибок и проблем.

3. Свежая кровь.

Официальная цель программы — вдохнуть новую кровь в общины.

Те.

ваше сообщество будет спать и следить за тем, чтобы вы оставались с ним и кодировали и кодировали.

В анкетах вы, конечно, напишете, что будете кодить даже после окончания программы, но на самом деле студенты остаются редко.

Но тщетно.

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

Так что, если вам все понравилось, оставайтесь с ними и продолжайте работать.

4. Что еще мне пришлет хороший Google? Футболка, картон А4 с надписью, что вы успешно завершили свой проект, и все.

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

Что именно присылают сообщества — это большой сюрприз, это как фокус.

5. Мифы.

Мы все равны: Менталитет имеет значение.

Тем не менее, разные культуры и разные системы образования делают свое дело.

Западные студенты менее заторможены, задают больше вопросов и не боятся общаться.

Больше правил, больше проблем: Чем больше правил в организации, тем лучше.

В моей прошлой организации было множество правил, начиная от количества пробелов в коде и заканчивая размером коммитов.

Причем менторы начали проверять дизайн еще на этапе отбора, когда кандидаты выкладывали патчи.

Моё мнение, это лучше, чем в середине (или в самом конце) лета узнать, что нужно «слегка» подправить стиль и что-то переделать.

Неудачные проекты случаются только во взрослой жизни: Даже если вы успешно завершите свой проект, не ждите, что он будет выпущен.

Не все студенческие работы используются позже.

Одним предложением не обойтись: Как ни странно, мне удалось пройти всего лишь с одним предложением.

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

Совместить работу и GSoC невозможно: Моему другу, решившему вспомнить молодость на последнем курсе аспирантуры, удалось успешно закончить GSoC, работая полный рабочий день.

Он тоже ушел в отпуск, сменил работу и переехал в другой город. Я не призываю заниматься подобным мазохизмом, просто у каждого свой максимальный предел.

Все знают, что индусы дураки: Стипендия, которую вы можете получить, участвуя в программе, стоит в Индии вполне приличные деньги.

Естественно, студенты из этой страны проявляют немалое рвение попасть на программу.

И конкурировать с ними очень сложно.

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

Когда они не входят в программу, они берут на себя обязательства.

А когда через год снова обращаются, их берут. Да, их код не всегда красив и оптимален, но я не могу сказать, что лабораторные работы моих учеников похожи на работу профессионалов.

А когда не видишь разницы, зачем выпендриваться? Главное кодировать: Иногда мне кажется, что главное – попробовать.

Чем больше вы говорите с сообществом о том, как смело вы написали 100-строчную функцию или насколько важен ваш проект для сообщества, тем больше они «счастливы».

Один студент однажды спросил сообщество, удовлетворено ли оно его работой и сдаст ли он промежуточный семестр.

Один из наставников написал, что доволен работой, потому что.

Я прочитал в блоге студента, какую пользу проект принесет сообществу.

Однако позже он добавил, что не смотрел код. Девушкам проще: Я так не думаю.

Пока остальная часть команды стояла на голове, чтобы помочь другому студенту начать программировать его исследовательский проект, мой наставник отправил меня в одиночку искать исходники Linux. По сути, в программе все равны, и сообщество помогает тому, кто больше нуждается в помощи или чей проект его больше волнует. Никакой дискриминации: ни расовой, ни половой, ни языковой.

В программу сложно попасть: Если соблюдать все правила сообщества с самого начала и серьезно отнестись к написанию предложения (публиковать заранее, работать с источниками, общаться с наставниками), то попасть в программу будет несложно.

Попасть в программу легко: Конкурс в непопулярном сообществе (т. е.

вы о нем никогда не слышали и пишут код на непопулярном языке, например C или C++, или там, где нужны специфические знания математики) 3 - 4 человека на место.

Количество заявок в популярное сообщество около 100, поэтому нужно очень постараться, чтобы вас заметили и выбрали среди 100 человек.

Мой наставник знает всё: Ваш наставник знает только ту часть проекта, над которой он работал.

Конечно, опыта у него гораздо больше, чем у вас, но даже у него нет навыков телепатии.

Те.

когда вы расскажете ему о своей проблеме, скорее всего он либо ничего не поймет, либо попросит еще раз все описать, но более подробно.

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

Только вы знаете, что вы делаете, как вы это делаете и какие проблемы у вас могут возникнуть.

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

Однако такие вопросы, как стиль кодирования, документация, тестирование и резервное копирование наставника, лучше всего решать вместе со всем сообществом, а не с наставником.

Все организации следуют одинаковым правилам отбора: Такие правила есть, но никакие рекомендации не заставят сообщество отказаться от собственного опыта.

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

Я единственный воин в поле: Как ни странно, вы не единственный, кто кодирует в вашем сообществе.

Пока вы кодируете функцию A, которая больше не является вашей функцией B, кто-то может переписать эту функцию.

Не забывайте о слиянии.

Другие разработчики могут как исправлять ошибки, так и создавать новые.

В документации всегда говорится: Не всегда.

Иногда все, что ваши наставники могут вам сказать, это «посмотрите на код».

В вашей организации доков может вообще не быть, а может оказаться, что вы кодируете по стандарту, который плохо описан в бесплатной литературе, и книга, где все хорошо описано, может оказаться вам не по карману.

2*2=4: В университете некоторые вещи объясняют как данность, не говоря, почему так и может ли быть по-другому.

Просто большинство студентов не окажутся в ситуациях, когда требуются продвинутые знания.

В GSoC вы можете обнаружить, что ваше представление о «стандартах» не соответствует реальности.

Неважно, чем вы занимались все лето, главное успеть до отчета: Если вы разместили свой драгоценный код, это не значит, что ваш наставник тут же бросится его смотреть.

Возможно, у него просто не будет на это времени.

Один студент перед самым экзаменом написал 2000 строк кода; Фактически, это был его первый коммит. Его наставник честно сказал, что у него, возможно, не будет времени все просмотреть и протестировать до окончания промежуточного семестра.

Я работаю только со своим наставником: Мой наставник проводил первое тестирование только в середине семестра (а может и не делал его вообще), перед этим просто смотрел код. Перед экзаменом другой наставник проводил тесты и нашел у меня пару ошибок.

Мой наставник - бюрократ, потому что.

требует регулярных отчетов: Наставники следят за студентами, а Google следит за сообществом.

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

Так что «эти дурацкие отчеты» — отчасти требования Google. Хорошо, когда твой проект связан с твоим дипломом: Но вам не нужно этого делать.

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

Во-вторых, наше научное сообщество морально не готово к открытому коду.

Хоть мой университет и установил везде бесплатный офис, без денег он ничего делать не собирается.

Итак, в ваших глазах вы слишком сильно затянули, а в глазах университета вы продали ценную научную информацию иностранной компании, лишив университет всех прав на ваши разработки, т. е.

украденную интеллектуальную собственность.

Так что либо уберите проект из своей научной работы, либо молчите о своих подвигах.

6. Из жизни.

Организация, с которой я последний раз работал, малоизвестна и развивается на языке C (который сейчас непопулярен среди студентов).

Конкурс на участие составлял 3-4 человека на место и все кандидаты уже имели опыт развития в данной сфере.

У меня не было такого опыта, но я уже решал подобную задачу.

Чтобы попасть на конкурс, мне пришлось написать часть проекта уже на стадии предложения.

Менторы задали мне всего 2 вопроса — первый касался самого кода, второй — одного из этапов реализации.

Ни до, ни после публикации не было оживленных дискуссий.

Более того, такое заявление отпугнуло других студентов от моего проекта.

Мой одноклассник сделал то же самое.

Он предоставил 30% кода всего проекта и реализовал самую сложную версию.

Проект был успешно завершен, однако такая оперативность ввела наставников в заблуждение относительно способностей студентов.

В следующем году они значительно увеличили сложность задач, с которыми не все ученики справились хорошо.

Мой наставник немедленно ответил на все мои электронные письма.

Но когда я попросил его протестировать мой код, он исчез на неделю.

У другого студента наставник проверил код только в середине семестра, хотя ответил на все письма вовремя.

Одной из частей предложения является краткое описание проекта.

Это же описание становится общедоступным после того, как вы будете приняты в программу.

Т.

к.

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

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

Объем кода, создаваемого студентом для GSoC, составляет 2–5 тысяч строк кода.

В моей организации один из студентов допустил очень серьезную ошибку при проектировании.

Он не обсуждал этот момент со своим наставником, поэтому все выяснилось прямо перед промежуточным экзаменом.

кода уже было много, и расширить функционал до обещанного уровня было просто физически невозможно; сам наставник предложил снизить требования.

В одной организации в программе приняли участие студенты из Восточной Европы и России.

Все студенты кодировали, писали наставникам раз в неделю и не переписывались.

Студенты кодировали хорошо и вовремя, но не болтали.

Собственно, именно этот факт и беспокоил всех наставников.

Пару раз студентов насильно затаскивали в чат, но дальше приветствий диалог не продвигался.

Проекты были успешно завершены, а организация добавила в правила участия общение через рассылку и отказалась от чата.

В анкетах все студенты пишут, что продолжат вносить свой вклад после окончания программы, но очень редко кто-то остается в организации.

В лучшем случае они вернутся в следующем году в качестве студентов GSoC. Все студенты обещают работать 40 часов в неделю.

В действительности рабочее время редко превышает 20 часов.

Все студенты делятся на два типа — одни любят правило патчей, другие его ненавидят. Все организации делятся на два типа — одни хотят кода в виде предложения, другие хотят конструктивного диалога.

7. Что читать? 1. Рекомендации Google для студентов: Не могу сказать, что со всем согласен — многие аспекты работы зависят от сообщества и проекта.

Но вам обязательно стоит прочитать эти рекомендации.

2. Рекомендации Google для наставников: Мы обязательно прочитаем.

Очень важно понимать, как к вам относятся ваши наставники и организации.

3. Очень известная статья русскоязычного наставника из gimp: Множество рекомендаций как для студентов, так и для наставников.

Настоящий взгляд изнутри.

4. Инструкция для связи с наставником: Написано очень политкорректно.

Русскоязычному студенту будет немного сложно понять смысл этих советов.

Но совет очень хороший.

5. Откровения Google о том, как работает раздел игровых автоматов: Больше всего слотов получают организации, которые продолжают работать со старыми участниками GSoC, «защищают» другие организации и успешно завершают проекты.

Косвенно эти критерии могут повлиять на то, выберут вас или нет. 6. Отрывок из дискуссии о том, как не допустить исчезновения студентов: Если внимательно прочитать, то станет понятно, что правила отбора кандидатов и их оценки с каждым годом будут усложняться.

Итак, тем, кому не нравится правило патчей или кто любит делать все в последний день, стоит задуматься, могут ли они вообще участвовать.

Теги: #gsoc #Google Summer of Code #стажер #открытый исходный код

Вместе с данным постом часто просматривают: