Нестандартный способ обучения новому языку программирования (перевод статьи Sahil Dua)

в 13:46, , рубрики: development, learning, open source, Блог компании Wrike, обучение, перевод, Программирование, языки программирования

cover

На данный момент существует более 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.

screenshot

Как же помогает Open Source?

Итак, теперь вы наверное спросите — как же участие в opensource-проектах помогает усвоить best practices? Существует несколько аспектов, давайте обсудим их по порядку.

Качество кода

Большинство хороших opensource-проектов имеют чёткие принципы разработки (coding guidelines), которых вам придётся придерживаться, для того чтобы ваш код оказался в проекте. Это поможет вам освоить основные принципы разработки, а как следствие, улучшить написание кода в целом.

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

Code Reviews

Это самая лучшая часть в opensource. Когда вы заливаете свой код, вы получаете отзыв от экспертов текущего проекта, что впоследствии даёт возможность улучшить понимание языка в целом.

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

Признательность

screenshot2

Мы, разработчики ПО, как никто другой нуждаемся в признании за свою работу. И opensource-сообщество гарантирует это вам сполна. По собственному опыту, я никогда не получал ни единого обидного или демотивирующего комментария. Все они были крайне обнадёживающими и полезными.


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

Ссылка на оригинал
Перевёл: Сергей Чикирев

Автор: Wrike

Источник



https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js