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

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

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

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

Мотивация и образ мышления

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

Позвольте мне рассказать вам о себе. В настоящее время я учусь на втором курсе магистратуры по информатике в Делфтском технологическом университете. Я бы назвал себя (ниже) средним разработчиком по сравнению с моими сверстниками. Я действительно не начал программировать, пока не получил степень бакалавра. Я никогда не находил мотивации заниматься этим вне курсов.

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

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

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

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

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

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

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

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

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

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

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

Лучшим практическим примером этого на практике является контекст моего первого выступления. В четверг (19 апреля) я практически весь день работал в универе. По моим меркам это было довольно раннее утро, начало в 10:00, что означает для меня просыпаться в 8:00. И мы не закончили до 18:30, что сделало день довольно длинным. Вернувшись домой и закончив ужин, было уже почти 20:00. В любой другой день я бы либо заснула на диване, либо осталась в прохладном остатке вечера.

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

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

Мой выбор проектов

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

На данный момент мой главный интерес и область, на которой я сосредоточен больше всего, - это веб-разработка. Особенно React - это библиотека, которую я полюбил и с которой мне больше всего комфортно. Естественно, я хотел найти проекты, связанные с веб-разработкой. Для меня проект, написанный (частично) на JavaScript, был необходимостью, в то время как участие или связь с React было плюсом.

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

Полный список проектов, которые я изучал, состоял из проектов, найденных с помощью поиска« React на Github», и проектов, о которых я знал или слышал: React, Redux, MobX, React-Router, Next.js, styled-components, Storybook, Spectrum и другие…

В конце концов, я остановился на style-components, Storybook и Spectrum. В основном потому, что другие проекты казались относительно абстрактными и более трудными для понимания. Эти проекты были очень дружелюбны к новым участникам. К тому же они по-прежнему широко используются в сообществе.

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

Сделаю свой первый вклад

Итак, я уже говорил о контексте моего первого вклада. Однако я не говорил о технических деталях Pull Request (PR). Или как я вообще попал в PR, о чем и пойдет речь в этом разделе.

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

Затем, когда у меня было свободное время, я просматривал все электронные письма. Я обрабатывал те, которые мог понять. Кто-то устроил пиар, и название не похоже на полное волшебство? Позвольте мне взглянуть на то, что они сделали и как. О, по этому вопросу идет активная дискуссия, и это не кажется подавляющим? Давайте тоже будем следить за этим разговором!

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

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

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

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

В какой-то момент кто-то открыл вопрос. Проблема описывала некоторые проблемы с интерфейсом командной строки Storybook во время процесса установки. Оказалось, что Storybook предпочитает использовать пряжу. Однако не все используют пряжу, и npm по-прежнему широко используется в этой области.

Чтобы охватить эти случаи, интерфейс командной строки запускает команду yarn - version, чтобы проверить, установлена ​​ли yarn. Если это так, он будет использовать его в качестве предпочтительного менеджера пакетов для установки зависимостей. Однако проблема возникла, когда разработчики установили оба менеджера пакетов, но в основном использовали npm. Storybook тогда будет использовать старую версию пряжи. Это привело к проблемам, о которых сообщил текущий пользователь.

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

Есть несколько причин, по которым я прямо спросил об этом, а не просто сделал это.

  1. Это сигнализирует о том, что кто-то работает над проблемой, и это здорово для сопровождающих.
  2. В нем поясняется, что вы работаете над этим и заявили о проблеме. Это особенно полезно в очень активных проектах.
  3. Это гарантирует, что вы не решите чужую проблему. По разным причинам кто-то уже мог над этим работать, и я лично ненавижу убирать чью-то проблему.
  4. Это гарантирует, что вы не собираетесь тратить свое время и силы на что-то устаревшее, ненужное, нежелательное или уже сделанное. Если что-то из этого верно, специалист по сопровождению, скорее всего, сообщит вам об этом.
  5. Никогда не помешает быть вежливым и общаться 😊.

Получив зеленый свет от сопровождающего и пользователя, сообщившего о проблеме, я пошел и применил исправление, описанное в проблеме. Само исправление не произвело особого впечатления. Вместо того, чтобы проверять установленную версию yarn, он будет проверять наличие файла yarn.lock. После некоторого обсуждения того, как сделать проверку немного более сложной и обработки этой обратной связи, они одобрили мои изменения. Мой пиар слился! 🎉

Чувствовал ли я себя после этого супер-успешным? Вы ожидали этого, но на самом деле я чувствовал себя гораздо менее взволнованным, чем ожидал. Не поймите меня неправильно, мне действительно приятно, что мои изменения были объединены. Просто не было ощущения, что я решил эту сверхсложную проблему.

Настоящее чувство достижения и воодушевления на самом деле приходило позже, в неожиданные моменты. В разные моменты времени люди сообщали об определенных проблемах, которые у них были с Storybook. Для меня это казалось совершенно не связанным с моими изменениями. Однако, по крайней мере, в 4 различных проблемах мое исправление было упомянуто сопровождающим, поскольку оно помогло решить возникшую проблему.

КАКИЕ!? Я НА САМОМ ДЕЛЕ ПОМОГАЛА ЛЮДЯМ !? 😱 Мое небольшое исправление, которое казалось ничем, на самом деле помогло людям с их проблемами. Чувство достижения и возбуждения, которое у меня было в тот момент, было неописуемым. Это превосходило любое чувство, которое я мог испытать при решении какой-либо сверхсложной проблемы. Я все еще очень дорожу им.

Остальная часть недели

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

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

За первую неделю я открыл 4 PR в Storybook, и все они были приняты и объединены! Если вас интересуют подробности этих PR, смело загляните в трекер GitHub.

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

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

Основная причина, по которой я смог решить проблему и все равно поработать с кодом, заключалась в том, что я прошел через изменения в чужом PR, которые коснулись той же части кодовой базы. Поэтому стиль моих изменений, если вы сравните его с изменениями того PR, был очень похож. Но, в конце концов, я все же выполнил свою работу, и это все, что имело значение для меня (и проекта)!

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

Что я выучил

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

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

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

Идти вперед

Забегая вперед после этой недели и далее, я буду делать то же, что и в течение этой первой недели: следить за проблемами и разговорами и помогать везде и всегда.

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

На самом деле, я так долго работал, что когда я заканчиваю этот пост (примерно через 5 недель после того, как я начал писать его), владелец Storybook пригласил меня присоединиться к организации GitHub! 🎉 Я очень благодарен за эту возможность. Я обязательно сделаю все возможное, чтобы приносить пользу проекту! 😊

TL; DR:

  • Подумайте, чего вы хотите достичь с открытым исходным кодом. Если это не долгосрочная мотивация, будет сложно 1) начать и 2) продолжать.
  • Следите за всей активностью из репозиториев, которые вам интересны, и постарайтесь потратить время на их изучение. Это значительно расширит ваши знания о проекте и поможет вам внести свой вклад.
  • Оставайтесь вежливыми и получайте удовольствие! 🙇🎉

Спасибо за чтение. Если вам понравилась моя история, подумайте о том, чтобы немного похлопать по ней, поделиться ею с другими людьми или подписаться на меня здесь или в Твиттере (или в обоих 😱). Я сделаю все возможное, чтобы в будущем предоставлять аналогичный контент!

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

Особая благодарность Маурисио Анише и Мартин Стинберген за помощь мне с этим постом, вычитку и отзывы! Также выражаю благодарность Норберту де Лангену (сопровождающему Storybook) за то, что пригласил меня в организацию GitHub и изо всех сил старался вовлечь меня в проект!