Как научиться программировать?

0
25253

Статья поможет начать программировать. Подскажет, как правильно себя мотивировать к обучению, и где набраться драгоценного опыта. Начинающие прогеры, дерзайте!

Существует множество ресурсов, которые призваны помочь начать программировать, освоить азы или изучить новый язык или фреймворк. Но есть две проблемы: Как действительно взяться за обучение, а не просто испытывать желание? И как сделать обучение по-настоящему эффективным?

На деле нужно помнить всего три правила для успешной стратегии обучения:

  1. Идите к привычке, а не к цели
  2. Учёба в одиночку приносит страдания
  3. Создавайте

А теперь подробнее о каждом из пунктов.

1. Концентрируйтесь на построении привычек, а не на целях.

Мы привыкли воспринимать цель любой деятельности как самоцель (уж извините за тавтологию), но от этой привычки нужно избавляться. Если поставить себе цель похудеть на 30 килограмм за 3 месяца, можно заработать стойкое отвращение ко всем на свете фитнес-клубам, возненавидеть диетические хлебцы и овсянку и вздрагивать от приснившегося во сне бургера. Так не пойдёт. Гораздо эффективней формировать в себе привычку — к другому питанию, к другому образу жизни, к другому расписанию, не бегая ежеминутно к весам и не подсчитывая страдальчески калории в ресторане.

То же работает, когда учишься программировать. Если вы хотите стать веб-разработчиком за 21 день, ничего, кроме разочарования, вы не получите. Если вы скажете себе: «Мне нужно посвящать программированию 20-30 часов в неделю и заниматься этим ежедневно» (не «для того чтобы», а «потому что мне нравится это делать»), в конце концов вы достигнете цели, о которой даже не мечтали.

Здесь работает принцип постепенного увеличения нагрузки (да-да, как в спорте). Начинайте с 15 минут занятий программированием в день. Если почувствуете, что можете больше, увеличьте продолжительность до 20 минут. Не пытайтесь перепрыгнуть свои собственные возможности, устраивая 10-часовые марафоны кодинга — это может дать вам ложное чувство удовлетворения, но в итоге выльется в усталость.

Ваша цель: не ставить цель, а постепенно развиваться.

2. Учёба в одиночку = боль и страдания.

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

Опытный наставник

Во время учёбы в университете я работал в небольшом стартапе. Так получилось, что за одно лето работы там я узнал гораздо больше, чем за год учёбы. Есть некая магия в совместной работе с более опытным коллегой, который действительно ускоряет процесс обучения. В совместной работе раскрываются секреты, которые вы никак не могли узнать, изучая предмет теоретически или даже на практике, но самостоятельно. Именно поэтому наставничество никуда не денется, каким бы независимым обучением вы ни занимались.

Сообщество единомышленников

Для меня отправными точками вхождения в сообщество разработчиков стала локальная студенческая организация моего университета и онлайн-членство в HackerNews.

В сообществе я не узнавал ничего нового о классах или объектах. Зато узнал, что никто не любит JavaScript, что рубисты — это такие хипстеры в программировании, и что в крупных корпорациях местные кофейни выглядят, как лаборатории по изготовлению метамфетамина. В общем, здесь я научился разговаривать.

И здесь я научился не только работать программистом, но и чувствовать себя им.

3. Создавайте!

В первый год своего обучения веб-разработке я создал несколько проектов:

• Клон Digg;

• Приложение интернет-магазина (на Rails 4, совместная разработка);

• Приложение в стиле GeekSquad;

• Онлайн-класс;

• Приложение для изучения иностранных слов

Разрабатывать реальные проектов важно по многим причинам, но одна из главных — это действительно весело и приятно.

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

4. Не вымирайте

Это секретный, четвёртый пункт, который доступен тем, кто дочитает пост до конца.

Скорее всего, настанет миг, когда вы захотите бросить программирование к чертям собачьим. Как и всё, что хоть что-то значит в этой жизни, программирование порой бывает сложным, и порой заставляет чувствовать себя идиотом. Вот почему важен первый пункт: не волнуйтесь о том, как далеко вы продвинулись и как долго вам ещё нужно развиваться, чтобы достигнуть идеала. Помните только о том, что вы уже сделали. Помните о том, что это часть вашей ежедневной жизни. Тогда вы не выгорите и не исчезнете.

Когда-то давно я сказал, что 80% жизни — это показуха. Люди то и дело говорили мне, что хотят написать пьесу, или сценарий, или роман, и кое-кто даже сказал, что они сделали 80% из задуманного. Все остальные выпадали из обоймы, даже не начав. Они не начинали и не заканчивали, поэтому, стоит вам сделать это — начать писать сценарий или роман, вы уже на полпути к завершению. И это один из главных жизненных уроков. Все остальные уроки меня подводили.

Вуди Аллен


Ещё несколько советов, которые могут оказаться действительно полезными.

Найдите в интернете сайт, в котором собраны задачки, в том числе и олимпиадные задания по программированию.

Например, SPOJ или USACO. На USACO есть и обучающие материалы по алгоритмам, и он прекрасно подходит для новичков; на SPOJ — большой ассортимент.

Не пытайтесь изучить какой-либо язык сразу досконально.

Пока вам не нужно знать все нюансы. Вам нужно научиться решать задачи с помощью языка программирования. Вместо того, чтобы копаться в учебниках, пробуйте решать задачи на практике. Читайте прежде всего об алгоритмах. Например, книгу Р.Седжвика “Алгоритмы на Java”. Развивайте логические навыки и будьте уверены в себе. Через это прошли все, значит получится и у вас.

Участвуйте в конкурсах, олимпиадах, хакатонах.

Найдите то, что вас вдохновляет, именно вас. Но, пожалуй, с чего не стоит начинать новичкам, так это с C++. Это не тот язык, который может вдохновить на подвиги человека, который до этого никак не был связан с изучением информатики и математики.


(Чтобы посмотреть полностью, нажмите на картинку.)

Возможно, вы заметили, что многие пути в этой инфографике ведут к тому, чтобы вы начали программировать на Python. На это есть несколько причин. Одна из основных состоит вовсе не в том, что в Python какое-то невообразимое количество классных функций. Основной секрет того, что Python действительно хорош для новичков состоит в том, что Python позволяет быстро приступить к практике.

Любой человек, приступающий к изучению чего-то нового, часто может столкнуться с ощущением фрустрации, неудачи, всё валится из рук, не хочется продолжать. Что действительно нужно новичку, так это минимум стараний и ожидания между написанием кода и его выполнением. Заставлять новичка ждать компиляции, как, например, в С, — это добровольно потерять будущего нового специалиста. А уж если новичку приходится компилировать на Mac OS X, где нужно установить Xcode, преодолеть все проблемы совместимости и прочесть половину интернета в поисках решения очередной ошибки компилятора — о каком удовольствии можно говорить?

Скриптовые языки вроде Python позволяют сразу же посмотреть на работу кода, неважно, на Windows вы или на Mac OS X. Да, и ещё важная деталь: чтобы начать работать на Python, пользователю достаточно просто зайти на вебсайт, скачать файл и запустить его. Куда уж дружелюбнее?

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

Собственно, именно поэтому тем, кто начинает программировать с нуля, рекомендуется начинать программировать именно с Python.

И напоследок небольшое сравнение различных популярных языков программирование по аналогии с героями и персонажами «Властелина колец».

Чтобы посмотреть полностью, нажмите на картинку.


Инфографика: Карл Чео; советы: Quora