Руководство по вашему приложению GSoC

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

Прежде чем я расскажу вам, как подготовиться к этому, позвольте мне представиться. Я был студентом последнего года бакалавриата IIT Kharagpur, получая степень бакалавра в области химического машиностроения, когда планировал поступить на GSoC’18. Мой проект GSoC был связан с InterMine по созданию похожей на Google поисковой системы для наборов биологических данных в Интернете. О моем проекте можно прочитать здесь. Я получаю сообщения от некоторых моих младших сотрудников относительно процесса отбора и этапа подготовки предложения, поэтому я подумал, что должен поделиться своим опытом, так как это может помочь вам принять вашу заявку в Google.

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

Прежде всего, позвольте мне рассказать вам, какое место GSoC занимает в мире программирования на уровне колледжа. Программирование на уровне колледжа имеет две более широкие категории — по крайней мере, то, что обычно предполагают студенты — это ваше соревновательное программирование, где вы изучаете алгоритмы и структуры данных, пытаясь оптимизировать время выполнения и управление памятью, а другая — с открытым исходным кодом, где вы в основном работать над созданием инструментов, более или менее связанных с изучением новых языков (Ruby, Julia, GO, Node JS), инструментов (Elastic search, Apache Solr, Kibana), программного обеспечения (ПО для контроля версий, JBoss, Jenkins), библиотек ( OpenGL, Scrapy), фреймворки (Flask, Spring, Spring Boot) или математические концепции (NLP, машинное обучение, научные вычисления, астрономическая математика). Работа в большинстве организаций связана со вторым. Итак, вы должны знать, куда вы направляетесь, когда вы устанавливаете свои планы для GSoC.

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

  1. Если вы не очень уверены/готовы к этому (что было в моем случае), то идите в новые организации. Проверьте список организаций, участвовавших за последние 3–5 лет, и найдите относительно новые организации, которые ранее не принимали большого участия в GSoC или находились в составе какой-либо другой зонтичной организации. Такие организации, как Python, mlpack, Scipy, участвуют уже более десяти лет. Есть много вкладчиков, которые работают с ними в течение длительного периода времени, и вы можете ожидать высокую конкуренцию при подаче заявок в такие организации.
  2. Каждая организация имеет общедоступный список/канал рассылки и поддерживает свою кодовую базу на платформе контроля версий. Большинство из них по-прежнему используют устаревшие каналы и платформы. Иногда бывает сложно общаться/вносить вклад в такие сообщества (поскольку вы привыкли к GitHub/Bitbucket), и вы можете в конечном итоге потратить много времени на понимание самой платформы. Так что выбирайте организации, которые используют Slack, Discord, Google Groups для обсуждения и Github, BitBucket для обслуживания своих репозиториев.
  3. Не выбирайте организации, работающие над НЛП, машинным обучением, глубоким обучением, так как ваш опыт может не соответствовать их ожиданиям. Они предпочли бы, чтобы студенты имели гораздо лучший опыт для таких проектов или люди, имеющие лучшую математическую курсовую работу и опыт в этой области. Идите на такие проекты, только если вы очень хорошо разбираетесь в темах.
  4. Некоторые языки/инструменты очень известны среди студентов — например, Python. Таким образом, все проекты, связанные только с python, будут иметь много претендентов, что увеличивает конкуренцию. Я бы посоветовал вам не выбирать очень простые и популярные проекты в самом начале, так как количество претендентов на этот проект со временем увеличивается, и если человек с хорошим опытом работы с python примет участие в этом проекте, вам будет немного сложно. завершить. Мой проект был чисто на Python, но в нем использовались такие инструменты, как Apache Solr, Scrapy и Flask framework. За два месяца ко мне попал только один студент, который пытался подать заявку на один и тот же проект. Но в конце концов он ушел, потому что я работал над проектом с самого начала. На самом деле проекты на Julia, Ruby, Node JS и т. д. были менее переполнены соискателями, и их не так сложно освоить, если начать рано. Вы можете рассмотреть возможность изучения одного из них, это даст вам преимущество перед другими кандидатами. В том же духе проекты для Android и веб-разработки немного перегружены.
  5. Старайтесь избегать организаций, которые являются частью какого-либо иностранного университета. Они могут предпочесть своих собственных студентов колледжа, поскольку у них может быть больше физических взаимодействий / встреч со студентом в районе их кампуса. (Я получил этот совет от прошлых GSoCers, и я не могу сказать, правда ли это. Но я последовал их совету :p)
  6. Когда вы начнете работать с организациями и начнете взаимодействовать с сообществом, обратите внимание, сколько времени им требуется, чтобы дать вам ответ. Если разрыв значительный (например, 3–4 дня), вы можете рассмотреть возможность ухода из этой организации. Они будут тратить ваше решающее время в течение периода подачи заявки. Это произошло в одном из проектов, на который я подавался. Организация хорошая и активная, но проект, который я выбрал, не включает много участников, и мне потребовалось 3 дня, чтобы ответить на мои комментарии. В конце концов я исключил этот проект из своего списка приоритетов.
  7. Если организация участвовала ранее, проверьте, сколько студентов было выбрано в прошлый раз. Сравните это с нет. студентов, которые в настоящее время участвуют в различных проектах, зарегистрированных на портале GSoC (вы можете угадать число, проверив, кто все поднимает вопросы и кто все отвечает на канале обсуждения), и если это огромная разница, тогда рассмотрите возможность конкуренции быть жестким для этой организации (это означает, что вам нужно больше работать, чтобы попасть в эту организацию).
  8. Когда вы сужаете свои варианты, вы не должны выбирать самый простой проект, так как после этого все будут. Ищите проект, который вы можете частично понять и решить, и усердно работайте над частью, которая вам не нравится. У таких проектов относительно меньше претендентов и конкуренция.

Итак, что вы можете сделать, чтобы подготовиться к битве?

  1. Выучите любой 1 язык очень правильно. Очень хорошо разбирайтесь в концепциях ООП и тонкостях этого языка. Например: реализация наследования, полиморфизма, интерфейсов и того, как отделить бизнес-логику от точки зрения разработчика. Большинство кодовых баз, над которыми вы будете работать, будут очень большими, и полное понимание этих концепций поможет вам понять их текущую кодовую базу и улучшить качество вашего вклада. Старайтесь избегать проектов на фронтенде, если вы не являетесь экспертом в этом. Я никогда не находил их очень полезными в GSoC (JavaScript является исключением, но JavaScript очень обширен и требует больше опыта, чем знаний). Попробуйте изучить основы и освоиться с каким-нибудь не очень популярным языком в колледжах — например, Julia, Ruby on Rails, node.js, GO и освоиться в любом из них. Это поможет вам ориентироваться на менее востребованные проекты.
  2. Начните работать над собственными проектами. Подумайте обо всем, для чего вы хотите создать программное обеспечение, и начните создавать его с нуля. Во время разработки вы узнаете о таких вещах, как GIT, управлении большими базами кода, о том, как структурировать файлы и папки в вашей базе кода, как выбрать правильную БД для вашего варианта использования, работать с базовыми интерфейсными фреймворками. Короче говоря, вам нужно совершить переход от перспективы «программирования» к перспективе «разработчика». Почти все проекты используют ту или иную БД. Используйте любой, postgresql, MongoDB, MariaDB, Cassandra и т. д. Для внешнего интерфейса научитесь использовать любой фреймворк — AngularJS, flask, J2EE и т. д. Эта технология пригодится, когда вы увидите новую технологию, поскольку основные концепции остаются одинаковыми во всех подобные технологии.
  3. Начните работать над любым проектом с открытым исходным кодом. Вы должны понимать, как они структурируют свои проекты, чего они хотят достичь и как они реализуют свои цели в реальном проекте.

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

Godspeed,
Innovationchef