На данный момент существует более 500 различных языков программирования. Следовательно, вполне нормально взять и начать учить новый язык прямо сейчас. Например, вы знаете C++ и Java, но на работе требуется Python, или наоборот. А может быть, вы просто хотите выучить какой-нибудь модный язык, чтобы повысить свою конкурентоспособность?..
Какие существуют варианты, чтобы освоить новый язык программирования:
- занятия по онлайн-обучалкам
- онлайн курсы (типа MOOC)
Впрочем, кто-то может возразить, мол, лучший способ обучения новому языку это:
- освоить синтаксис языка, а затем
- создать собственный проект на этом языке
Хорошо! Но такой способ докажет только то, что вы применили знания синтаксиса на деле.
Я разработал более 20 мини-проектов, пока учил разные языки. Поверьте мне, когда пишешь код для своего домашнего проектика, который зачастую является мимолётным увлечением выходного дня или ночным хаком на коленке, единственную цель, которую ты преследуешь — это чтобы оно просто работало. Вряд ли вы будете беспокоиться о качестве кода.
"Любой дурак может написать код, который поймёт компьютер. Хороший разработчик напишет код, который поймут люди." Martin Fowler
Так где же черпать good-practices языка, который вы пытаетесь выучить?
Делать вклад в опенсорс проект на этом языке
Удивлены? Некоторые из вас подумали – "Погоди, опенсорс — это же сложно. Я могу привнести что-то в опенсорс проект только будучи матёрым разработчиком, не так ли?". Отвечаю — Нет.
Расскажу вам одну историю.
В прошлом году я получил оффер от Booking.com. Я знал, что мне предстоит писать на Perl (который является основным языком для бэкенд части в Booking). В июне 2016, после окончания колледжа, я начал учить Perl, чтобы подготовиться к своей первой работе. Поскольку к работе я должен был приступить в середине июля, в запасе у меня оставался месяц.
Я начал читать про синтаксис Perl, попутно осознавая основные шаблоны языка. После этого появилось огромное желание собрать что-нибудь, используя Perl, чтобы применить и обкатать свои новообретённые навыки. Пока я искал идею для приложения, в Github я наткнулся на организацию DuckDuckGo с открытым исходным кодом (DuckDuckGo — поисковая система прим. пер.). Я заметил, что некоторые публичные проекты написаны на Perl. Дальше я просмотрел issues и нашёл много таких, которые по силам исправить новичку. Не медля ни секунды, я начал решать их и тогда же отправил парочку pull request'ов.
На сегодняшний день я являюсь одним из главных контрибьютеров в нескольких публичных проектах, а также одним из двадцати лидеров opensource сообщества (Open Source Community Leaders) для DuckDuckGo.
Так как же это работает ?
Сразу после того, как я освоил синтаксис Perl, я начал вносить вклад в различные opensource проекты. При этом я всегда просматривал уже существующие модули, подмечал шаблоны, использующиеся в Perl. Исходя из этого, я начал подбирать так называемые "good practices" уже в своём коде, и это помогло мне понять, как писать хороший Perl-код.
Не так давно, будучи разработчиком в Booking.com, я наткнулся на задачу, которая включала в себя работу(добавление новой фичи) над одним сервисом, который в свою очередь написан на Go. Тогда у меня состоялся такой диалог с коллегой:
Я: Классная задача. Хочу взять её в разработку. Что скажешь?
Он: Да, в самом деле классная задача. Но тут понадобится знание Go. Ты знаешь Go?
Я: Неа.
Он: А хочешь?
Я: Да!
Он: улыбаясь Тогда вперёд!
Так я оказался на пороге изучения другого языка программирование — Go.
Опять же я начал с чтения про синтаксис и нашёл прекрасный экскурс по языку для новичков прямо на официальном сайте. Он был настолько хорош, что я быстро освоил всю базу языка.
И я снова начал искать проекты с открытым кодом на Go, у которых были бы какие-нибудь issues для начинающих или баги из разряда "easy-fix". Тогда я нашёл проект Google, который представлял из себя Go-обёртку для REST API GitHub'а.
Мой первый pull request в проект был уже через два дня после начала изучения Go.
Как же помогает Open Source?
Итак, теперь вы наверное спросите — как же участие в opensource-проектах помогает усвоить best practices? Существует несколько аспектов, давайте обсудим их по порядку.
Качество кода
Большинство хороших opensource-проектов имеют чёткие принципы разработки (coding guidelines), которых вам придётся придерживаться, для того чтобы ваш код оказался в проекте. Это поможет вам освоить основные принципы разработки, а как следствие, улучшить написание кода в целом.
Кроме этого, вы будете иметь дело с чужим кодом, который хорошо написан и/или документирован.
Code Reviews
Это самая лучшая часть в opensource. Когда вы заливаете свой код, вы получаете отзыв от экспертов текущего проекта, что впоследствии даёт возможность улучшить понимание языка в целом.
Это как будто получить халявную персональную консультацию о том, как писать хороший код.
Признательность
Мы, разработчики ПО, как никто другой нуждаемся в признании за свою работу. И opensource-сообщество гарантирует это вам сполна. По собственному опыту, я никогда не получал ни единого обидного или демотивирующего комментария. Все они были крайне обнадёживающими и полезными.
Итак, в следующий раз, когда вы захотите освоить новый язык, найдите подходящий opensource-проект и смело шагайте вперёд навстречу неизведанному.
→ Ссылка на оригинал
Перевёл: Сергей Чикирев
Автор: Wrike