...

четверг, 18 мая 2017 г.

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

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-проект и смело шагайте вперёд навстречу неизведанному.


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

Комментарии (0)

    Let's block ads! (Why?)

    Комментариев нет:

    Отправить комментарий