Разработчик Сахил Дуа выработал необычный подход к изучению новых языков программирования. Делимся переводом его статьи.
В мире существует более 500 языков программирования. Следовательно, нет ничего необычного в том, что вы начинаете учить новый. Вероятно вы знаете C++ и Java, но на вашей работе нужен Python, или наоборот – вы знаете Python, но на работе нужна Java. Или просто вы хотите узнать новый язык для расширения кругозора.
Какие есть варианты изучения нового языка?
- по онлайн руководствам;
- в онлайн курсах (MOOC).
Некоторые из вас могут сказать, что лучший способ изучения нового языка на самом деле следующий:
- изучить синтаксис нового языка программирования и…
- создать свой собственный проект, используя этот язык..
Вполне справедливо! Это даст вам уверенность в том, что вы сразу примените на практике изученный синтаксис.
Я разработал более 20 мини-проектов, изучая разные языки программирования. Поверьте мне — когда вы пишете код для своего личного проекта, который может быть проектом «выходного дня» или «ночным быстрым хаком», вы пишете код просто, чтобы выполнить задачу. Единственное, что вас заботит — «работает ли мой код?». И вас мало заботит качество кода.
Любой дурак может написать код, который может понять компьютер. Хорошие программисты пишут код, который могут понять люди, — Мартин Фаулер.
Итак, как ознакомиться с лучшими практиками языка, который вы собираетесь выучить?
Примите участие в открытом проекте на этом языке
Удивлены? Некоторые из вас могут подумать: «Но подождите, открытый исходный код сложен. Мы можем внести свой вклад в проект с открытым исходным кодом только если мы сами будем профессионалами в этом языке, верно?».
Нет, не верно.
Позвольте мне рассказать вам историю.
В прошлом году у меня было предложение о работе от Booking.com, и я знал, что буду работать на Perl (который является их основным языком для бэкэнда). В июне 2016 года, когда я окончил колледж, я начал изучать Perl, чтобы подготовиться к моей первой работе. Поскольку я должен был выйти на нее во второй неделе июля, у меня был примерно один месяц на изучение нового языка.
Я начал читать о синтаксисе Perl и начал понимать некоторые общие шаблоны. Я уже хотел что-то сделать с помощью Perl, чтобы применить свое понимание языка и попробовать на практике различные концепции. Пока я искал идеи для создания чего-то на Perl, я наткнулся на организацию DuckDuckGo на GitHub. Я заметил, что некоторые из их открытых проектов были написаны на Perl. Я посмотрел на открытые запросы и нашел много задач для начинающих. Я сразу начал работать над ними и представил пару пул реквестов. Перемотаем вперед – и вот я один из главных контрибьюторов нескольких их открытых проектов, а также один из 20 Лидеров Open Source Сообщества DuckDuckGo.
Мораль истории — я закончил изучение Perl, внося свой вклад в проекты с открытым исходным кодом, написанные на Perl.
Почему это работает?
Сразу после того, как я выучил синтаксис Perl, я начал участвовать в проектах с открытым исходным кодом. При этом я всегда смотрел на существующие модули. Я привык замечать шаблоны, используемые в Perl. Следовательно, я начал использовать эти лучшие практики и в своем собственном коде — это помогло мне научиться писать хороший код на Perl.
Это не просто совпадение. Позвольте мне рассказать вам еще одну историю, чтобы лучше осознать связь.
Недавно, уже работая на Booking.com, я взял на себя некоторые задачи, в которых надо было добавить новые функции в одну из служб, написанной на языке Go. Это был разговор с моим товарищем по команде:
Я: Мне очень нравится эта задача. Я хочу поработать над этим. Что вы думаете?
Он: Да, это действительно интересно. Однако для этого требуется знание Go. Знаете ли вы Go?
Я: Нет.
Он: Вы хотите выучить Go?
Я: Да!
Он: * улыбается * Так давайте! (в оригинале There you go! — непереводимая игра слов, основанная на самом названии языка Go – идти)
Вот так я и начал учить новый язык программирования Go! Я начал читать о синтаксисе Go и нашел удивительный начальный курс для новичков на их официальном сайте. Он был достаточно хорошо, чтобы познакомить меня со всеми основными понятиями.
И снова я начал искать проекты с открытым кодом Go, в которых есть задачи «для начинающих» или «просто поправить». Я нашел проект Google, который в основе своей является оболочкой на Go для GitHub REST API.
Спустя 2 дня после начала изучения Go у меня был свой первый проект.
Вот график моих вкладов за последний год — https://github.com/sahildua2305.
Как открытый код помогает?
Итак, теперь вы можете быть спросить о том, как участие в проектах с открытым исходным кодом может помочь вам в изучении лучших практик языка. Давайте обсудим варианты один за другим.
Качество кода
Большинство хороших проектов с открытым исходным кодом имеют строгие правила кодирования, которых вы должны придерживаться, чтобы залить туда ваш код. Участие в проекте поможет вам понять эти рекомендации и, следовательно, писать код хорошего качества, даже если вы просто начинающий и изучаете язык.
Кроме этого, у вас есть шанс взглянуть на остальную часть кода и посмотреть, насколько хорошо он написан и/или документирован.
Ревью кода
Лучшая часть open source – это сам обзор кода. Когда вы пушите ваш код, вы получаете отзыв от экспертов проекта, и это дает вам возможность улучшить понимание языка.
Это похоже на получение личных бесплатных уроков написания хорошего кода.
Признание
Мы, как разработчики программного обеспечения, действительно нуждаемся в признании нашей работы. И сообщество открытого исходного кода дает его с лихвой. По моему опыту вклада в проекты с открытым исходными я могу сказать, что никогда не получал ни одного комментария, который был бы оскорбительным или демотивирующим. Все очень оптимистичны и полезны.
Поэтому в следующий раз, когда вы захотите выучить новый язык, двигайтесь сразу вперед и сделайте решительный шаг! Найдите проект с открытым исходным кодом, чтобы внести в него свой вклад, и с его помощью продвигайтесь вперед по вашему пути изучения этого языка и его нюансов ;)
Дайте мне знать, как этот нетрадиционный способ сработает для вас. Также, пожалуйста, порекомендуйте (❤) этот пост, если вы думаете, что это может быть полезно кому-то.
Не стесняйтесь поделиться любым другим способом, который сработал для вас.