Pull to refresh
76.92
Wrike
Мы делаем совместную работу проще

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

Reading time4 min
Views14K

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


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

Tags:
Hubs:
Total votes 20: ↑16 and ↓4+12
Comments6

Articles

Information

Website
www.wrike.com
Registered
Founded
2006
Employees
1,001–5,000 employees
Location
США
Representative
Wriketeam