Октябрь — лучший «понедельник» для Open Source

8a4422ae40817121c8fa45d50d4e9d6c.png

В ролях

Знакомьтесь, это Ольга. Она совсем недавно начала изучать программирование, но уже прошла десятки онлайн-курсов и завела множество учебных pet-проектов. Оля очень хочет работать в ИТ-компании, но пока ее никуда не берут, потому что нет «боевого» опыта.

Начинающий программист ОляНачинающий программист Оля

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

Сеньор ОлегСеньор Олег

Кажется, что кроме созвучности имен у наших героев нет ничего общего, но это не так. Их цели достигаются одним способом — участием в Open Source.

Зачем Open Source начинающему программисту

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

Первое достоинство Open Source для новичка: с ним легко сделать первые шаги в решении продуктовых задач.

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

И тут Ольга начала удивляться и мысленно повторять: «А что, так можно было?»

Зачастую популярные Open Source-проекты — причина гордости для разработчика или компании. Разработчики продукта уделяют огромное внимание качеству кода. Поэтому, разбираясь с кодовой базой, с высокой вероятностью можно обнаружить для себя ранее неизвестные приемы, которые повышают качество кода.

Вот мы и обнаружили второе достоинство Open Source для новичка: открытые популярные репозитории — кладезь best practice и возможность посмотреть, как писать хорошо поддерживаемый код.

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

И тут на помощь приходит третье достоинство Open Source для новичка: если возникают трудности, можно призвать на помощь главных мейнтейнеров репозитория и задать им нужные вопросы.

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

Друг Ольги подсказал ей, что любой вклад в Open Source должен начинаться с прочтения CONTRIBUTING.md. Хороший файл CONTRIBUTING.md обычно лежит на корневом уровне файловой системы репозитория и подробно рассказывает всем новичкам о требованиях к каждому открытому PR.

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

Оля делает форк проекта, вносит нужные правки в ветку и открывает свой первый PR. Тут же запускаются многочисленные CI-пайплайны проекта. Они проверяют, что проект корректно билдится, все тесты проходят, а linter и prettier проверяют код-стайл. И один из пайплайнов падает!

Ничего страшного, все CI-проверки для того и были созданы, чтобы перепроверять человека. Ольга поняла, что забыла локально запустить свои написанные тесты, и нашла в них ошибку. Она быстро корректирует, и — ура! — теперь все тесты проходят успешно.

Вот Ольга и узнала четвертое достоинство Open Source: знакомство с хорошо выстроенными бизнес-процессами промышленной разработки и грамотно настроенным CI/CD.

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

Так Оля осознает самое ценное достоинство Open Source для новичка: обратная связь от опытных разработчиков.

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

Зачем Open Source опытному программисту

Вернемся к опытному программисту Олегу. Хоть изучение программирования — это процесс непрерывный, но сделаем грубое допущение. Представим, что Олег настолько серьезный специалист, что в новом опыте и обратной связи не нуждается. Но и для него участие в Open Source — не пустая трата времени.

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

Олег быстро находит причину бага — проблема в сторонней библиотеке QWERTY, которую они используют. Он заводит задачу команде этой библиотеки. Но понимает: как ни умоляй команду разработки, у них уже есть свои запланированные задачи и они могут не успеть починить баг. К счастью, репозиторий используемой библиотеки лежит в открытом доступе.

Тут же помогает первое достоинство Open Source для опытного разработчика: возможность улучшать продукт самостоятельно исходя из своих потребностей.

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

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

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

Что было дальше

Ольга, вдохновленная успехом первого участия в Open Source-проекте, не остановилась на достигнутом. Она продолжила чинить баги. Со временем Оля поняла, что готова к разработке собственной фичи.

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

«Очень приятно, я Олег, сеньор-разработчик и активный контрибьютор в Open Source-проекте QWERTY»«Очень приятно, я Олег, сеньор-разработчик и активный контрибьютор в Open Source-проекте QWERTY»

А можно так же?

Наша героиня Ольга долго откладывала участие в Open Source. Если ее история вдохновила, не нужно ждать подходящего момента — он наступил.

В октябре проходит Hacktoberfest. Это ежегодное международное событие от Digital Ocean, которое мотивирует участвовать в Open Source-проектах. Каждый участник должен сделать четыре вклада в публичные репозитории, чтобы получить приз: футболку или именное посаженное дерево.

Мы решили упростить задачу, потому что в Тинькофф очень любят Open Source и не стесняются выкладывать удачный код в открытый доступ. Собрали список публичных репозиториев нашей компании, в которых можно найти интересные задачи разной направленности и принять участие в Hacktoberfest:

  • Taiga UI — библиотека компонентов для Angular. Хотите использовать Dependency Injection по максимуму или прокачаться в rxjs? Тогда вам сюда.

  • Linters — устали на ревью писать одинаковые комментарии по код-стайлу? Тогда возьмите задачу из этого проекта и научитесь настраивать линтер и преттир. А наши опытные коллеги подскажут, если что-то не получится.

Полный список репозиториев, участвующих в Hacktoberfest, доступен на странице мероприятия на GitHub:

© Habrahabr.ru