В последнее время всё больше людей хотят научиться программированию, но не знают, как «подступиться к снаряду». Мы решили разложить всё по полочкам, и обратились за помощью к Алексею Поимцеву — CEO студии web-разработки Progress Engine и преподавателю курса по Ruby.

***

Большая часть этой статьи — рекомендации. Я видел людей, которые учились программировать на допотопных компьютерах, по устаревшим книгам и с кривым софтом. И у них всё получилось — просто сильно хотели. Но, следуя моим советам, вы немного облегчите себе жизнь.

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

Выбор языка

Первый язык — как первая женщина. Можно через много лет с теплотой вспоминать проведённое время, можно прожить с ней всю жизнь, а можно разочароваться и уехать в монастырь.

Выбирайте язык с простым синтаксисом, максимально универсальный и с активным сообществом. В #tceh я обучаю людей писать на Ruby, который удовлетворяет всем этим критериям. Неплохи Python, Java и Swift, но мой опыт показал, что врубиться в программирование приятней и легче с Ruby.

Оборудование

Для программирования обычно не нужны большие мощности — практически это работа с текстом. Исключением может стать разработка игр, где используется рендеринг — процесс преобразования кода в изображения и видео. Некоторые узкоспециализированные задачи также требовательны к производительности компьютера, но новички начинают с web-разработки.

Самое важное — экран, с которого придётся много читать, поэтому обратите внимание на модели с высокой плотностью пикселей (указывается в ppi — количестве точек на квадратный дюйм). Я рекомендую экраны с ppi более 200.

Лучше использовать экраны с IPS-матрицей — на них можно уменьшить яркость без потери контрастности. Это снизит нагрузку на глаза.

Удобно работать на больших мониторах, потому что так придётся меньше скроллить. Но нужен баланс между размером и мобильностью — когда компьютер закидывается в рюкзак, появляется бонус — свобода выбора рабочего места. К примеру, летом мои знакомые и друзья работают в парках или летних кафе.

Идеальная система, которую я нашёл — связка из ноутбука и большого монитора. Первый мобилен, а ко второму можно подключиться, если требуется сфокусировано поработать над объёмной задачей. Но всё же я не рекомендую ноутбуки с экраном менее 13-ти дюймов.

Программное обеспечение

Всё зависит от языка, которому вы решили учиться. Подавляющее большинство языков для web-разработки лучше всего себя чувствует на *nix системах — это операционные системы Linux и Mac OS X. Однако, это не значит, что на Windows нельзя работать. Просто сложнее настроить.

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

Ещё потребуется текстовый редактор с поддержкой синтаксиса нужного языка. Писать код можно хоть в блокноте, но специализированные текстовые редакторы подсвечивают ошибки, используют цвета для облегчения навигации и содержат кучу других полезных фишек. Сейчас набирает популярность Atom — он минималистичен и гибок.

Методические материалы

Самое важное — по каким материалам и методологиям учиться. Собственно, вот варианты:

  • книги-самоучители — классический вариант;
  • онлайн-курсы без преподавателя — это когда вы выполняете задания, но проверяет их либо робот, либо другие студенты;
  • онлайн-курсы с преподавателем — то же самое, но задания проверяет преподаватель, которому также можно задать вопрос;
  • оффлайн-курсы — набирается группа, которую ведёт преподаватель;
  • индивидуальные занятия — находите репетитора, и вперёд.

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

У онлайн-курсов без преподавателя главный плюс — цена. Обычно не более $50 в месяц. Минусы: нужно быть очень организованным и мотивированным человеком, чтобы находить в себе силы не отвлекаться и прилежно заниматься. Методология обычно описывается словами «повторяй за мной» — студенту показывают, как написать функцию и предлагают повторить действие. Он заканчивает курс, но не в состоянии решить ни одной задачи — в голову забыли положить умение думать.

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

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

У индивидуальных занятий есть серьёзный плюс и серьёзный минус: если преподаватель и ученик сойдутся психологически, прогресс будет идти очень быстро, но обучение вне социума опасно. Занятия в группе напротив сразу социализируют ученика, помогают ему войти в сообщество и найти друзей и приятелей. Вместе проще.

Часто спрашивают, нужно ли что-то читать, кроме методических материалов — прессу, блоги, подкасты… Я категорически против. Дайте своим мозгам отдохнуть. Вы быстрее выучите язык, если придёте на занятия отдохнувшими от программирования.

Сообщество

Самый простой способ войти в сообщество разработчиков — приехать на тематическую тусовку по своему языку программирования, выйти в центр зала и громко сказать: «Всем привет, я недавно начал изучать программирование и буду рад найти здесь друзей! С кем можно выпить?».

Серьёзно, это немного экстремально, но именно так новичок быстро и эффективно решит задачу. В разработке обычно адекватные люди, которые пригласят в свой круг общения.

Вообще, посмотрите ролики по пикапу — знакомства с девушками имеют много общего со знакомством с программистами.

***

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

Если вы хотите научиться программировать, например, на Python, но не нашли ответа на свой вопрос в статье, смело пишите на почту: edu@tceh.com.

Широбоков Никита,

Автор #tceh