Октябрь — лучший «понедельник» для Open Source
В ролях
Знакомьтесь, это Ольга. Она совсем недавно начала изучать программирование, но уже прошла десятки онлайн-курсов и завела множество учебных 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. Если ее история вдохновила, не нужно ждать подходящего момента — он наступил.
В октябре проходит Hacktoberfest. Это ежегодное международное событие от Digital Ocean, которое мотивирует участвовать в Open Source-проектах. Каждый участник должен сделать четыре вклада в публичные репозитории, чтобы получить приз: футболку или именное посаженное дерево.
Мы решили упростить задачу, потому что в Тинькофф очень любят Open Source и не стесняются выкладывать удачный код в открытый доступ. Собрали список публичных репозиториев нашей компании, в которых можно найти интересные задачи разной направленности и принять участие в Hacktoberfest:
Taiga UI — библиотека компонентов для Angular. Хотите использовать Dependency Injection по максимуму или прокачаться в rxjs? Тогда вам сюда.
Linters — устали на ревью писать одинаковые комментарии по код-стайлу? Тогда возьмите задачу из этого проекта и научитесь настраивать линтер и преттир. А наши опытные коллеги подскажут, если что-то не получится.
Полный список репозиториев, участвующих в Hacktoberfest, доступен на странице мероприятия на GitHub: