Программирование нужно всем — но как начать с нуля? Правда ли, что за три недели можно научиться делать сайты, а за три месяца — выучить JavaScript? Действительно ли разработчиком может стать даже тот, кто попрощался с математикой еще в школе? А если просто смотреть обучающие ролики на YouTube — это поможет освоить алгоритмику? T&P разбираются, как правильно организовать процесс обучения программированию.

Отбрасываем сомнения

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

Например, чтобы пройти курс по веб-разработке в Moscow Coding School, достаточно «базовой компьютерной грамотности» и «математики на уровне 5-го класса». «Можно прийти, ничего не зная, и, совмещая наш курс и самостоятельное обучение, научиться создавать интерактивные веб-страницы, работать с данными и понимать принципы их обработки», — говорит куратор образовательных программ школы Екатерина Руднева.

В онлайн-университете Skillbox сложные понятия и концепции объясняют с помощью мультфильмов и игровых домашних заданий. «Студенты рисуют картины с помощью программ, организуют жизнь небольшой семьи котиков, превращают Колобка в Пикачу. Но за всем этим стоят серьезные методологии программирования: модульный подход, наследование классов, различия атрибутов классов и экземпляров, разрешение конфликтов при Merge и прочее», — говорит ведущий курса «Python-разработчик с нуля» Вадим Шандринов.

Образовательный портал GeekBrains при поступлении просит пройти тест и тем, кто недоберет баллов, предлагает подготовительный курс. Абитуриенты с нулевым уровнем начинают с азов: «Мы берем один из самых простых языков — JavaScript — и изучаем все базовые понятия, циклы, массивы, переменные. Учимся этим всем пользоваться, понимаем, какие там основные подходы к разработке. И дальше уже можно смело учить язык, который нравится», — поясняет руководитель отдела обучения Евгений Картавец.

Но тем, кто планирует изучать специфические области — big data, machine learning, обработку финансовых/научных данных, — потребуется уже математическая подготовка на уровне профильного института, говорит Вадим Шандринов.

Выбираем формат обучения

«У офлайн-курсов есть один существенный плюс: если пришел в аудиторию, то хочешь не хочешь — нужно два часа учиться», — говорит Вадим Шандринов. Среди преимуществ такого формата — возможность слышать и видеть других учеников («Я не единственный, кто не сразу все понимает!»), слушать ответы преподавателя на вопросы. Недостаток — необходимость подстраивать свой график под расписание занятий (а кроме того, кому-то просто некомфортно осваивать новую сложную область в незнакомом коллективе).

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

Выбираем школу и курс

На что смотреть, чтобы не выбросить деньги на ветер:

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

Адекватность. «Если обещают, что вы за два месяца освоите мобильную разработку, станете middle-разработчиком и так далее, знайте — это неправда», — предупреждает Евгений Картавец. Он признает, что оценить, насколько длительность программы соответствует содержанию курса, самостоятельно бывает сложно, и предлагает советоваться с теми, кто уже ее прошел: «Просто глядя на темы, выяснить это не получится».

Опыт. Евгений Картавец советует прямо спрашивать преподавателя, на чем он специализируется, в каких компаниях и над какими проектами работал. Учитывайте, что разработчик в сфере мобильных приложений вряд ли хорошо обучит big data, добавляет Вадим Шандринов.

Иногда подходящий курс находится только с третьего-четвертого раза, предупреждает он, и дело не только в школах, но и в учениках: то, что подходит другим, может не подойти вам. А комьюнити-менеджер HTML Academy Татьяна Власенко напоминает, что эффективность обучения зависит еще и от вашей мотивированности.

Как сократить время поисков? Многие школы проводят дни открытых дверей, на которых можно познакомиться с преподавателями и оценить механику обучения. В некоторых бывают бесплатные интенсивы и пробные занятия.

Ангелина Филиппова

училась на курсах Pluralsight, Codeacademy, Moscow Coding School и hexlet.io

Я начала учиться на английском в Pluralsight (ранее Code School) и Сodecademy, потому что сначала хотела разобраться в основах и понять, стоит ли продолжать. За пару месяцев нерегулярных занятий я прошла все курсы по HTML, CSS и JavaScript. Уроки на этих сайтах разбиты на маленькие задания, все понятно, и при выполнении задач не возникает никаких проблем. После нескольких курсов у меня появилось ощущение, что я уже что-то знаю, но самостоятельно сделать пока ничего не могу. Я думаю, что Pluralsight и Codeacademy — лучший способ начать, хотя там не рассказывают о многих аспектах работы программиста, без которых не обойтись.

Потом я увидела рекламу курсов фронтенд-разработки от Moscow Coding School, программа понравилась мне и мужу, который помогал мне учиться. Курс занял около 40 часов, плюс домашние задания. Тогда программу можно было пройти за 3 недели, занятия длились 6 часов по выходным. Большую часть того, чему нас учили, я уже знала, да и вообще занятия в группе, когда все время нужно кого-то и чего-то ждать, оказались не для меня. С другой стороны, было полезно получить рецензию на свой код и иметь возможность задать вопрос учителю офлайн, потому что иногда код может работать, но при этом он очень плохой. Самым полезным навыком, полученным на курсе, стало умение правильно дебажить код (искать ошибки в программе. — Прим. ред.). В плане обратной связи офлайн-формат удобнее, но зачастую это лишает тебя возможности самому найти решение и научиться чему-то.

После Moscow Coding School хотелось найти что-то более фундаментальное, с упором на теорию, так мы выбрали hexlet.io. Их курс для JS-программиста оказался самым сложным и долгим, на его прохождение у меня ушло полгода. Над многими задачами я сидела несколько дней, иногда звала на помощь опытных программистов, но и у них не всегда получалось мне помочь. «Хекслет» не только дает знания, но и закаляет характер. Курс заставляет искать и изучать информацию самому, а это главный навык программиста. Кроме этого, у каждого задания есть секция «вопрос — ответ», где можно поискать подсказку и задать вопрос, если ты застрял. Прямых ответов авторы курса не дают, только направляют, в какую сторону стоит копать.

Рассчитываем время

Научиться писать несложные скрипты можно за 1–2 месяца, но если конечная цель — устроиться на работу младшим программистом, то на это уйдет минимум год, говорят в Skillbox. Скорость освоения программирования сильно зависит от практики и обратной связи. Если есть ментор, который регулярно проверяет и помогает исправить ошибки, грамотный код получится писать через год обучения, добавляют в GeekBrains.

От нескольких дней до пары недель: интенсив по узкой теме для опытных разработчиков. С нуля за это время можно освоить разве что основы HTML и CSS.

1–6 месяцев: новички за это время успевают освоить базовый курс и научиться решать несложные задачи — верстать сайты и писать скрипты для личного пользования. Если курс обещает, что за это время студенты выучат новый язык, скорее всего, программа предназначена для продолжающих.

12–18 месяцев: полноценный курс — с нуля до минимального профессионального уровня.

Учитывайте интенсивность обучения. Например, в Moscow Coding School занимаются по 6 часов в неделю, в HTML Academy — по 2–4 часов в день, в среднем от 20 часов в неделю (в это время входят лекции два раза в неделю и выполнение домашних заданий). В GeekBrains модуль, рассчитанный на две недели, обычно включает 5 уроков, на месяц — 8 уроков, видеокурс для самостоятельного прохождения — 20 уроков; при этом после каждого занятия учащегося ждет домашнее задание.

Вообще, на самостоятельную работу стóит заложить побольше времени: лекции не сделают вас программистом. Только решая задачи, сталкиваясь с трудностями, выискивая ответы на профессиональных форумах, можно набить руку.

Елена Мордмиллович

учится по специальности «медиаинформатика» в Высшей школе техники им. Бойта в Берлине

Сейчас я прохожу второй семестр обучения по специальности «медиаинформатика». Форма обучения — онлайн-бакалавр: дистанционное с реальным дипломом вуза. Есть учебные материалы, преподаватель, связь с которым доступна по имейлу, домашние задания, еженедельные веб-конференции, форум, а раз в 3 недели по два дня учебы на месте.

Программирование пока самый сложный предмет из всех. Как правило, одна тема дается на неделю или две — за это время нужно освоить теорию и сделать 1–3 задания. Бывает два типа ситуаций: 1. Класс, все понятно, берешь делать задачу — и-и-и… ничего не понятно! 2. Ужас, ничего не понятно, три раза читаешь учебник, смотришь видео на YouTube с Udemy (вообще, чем в большем количестве источников получаешь информацию, тем больше шансов какую-то картину выстроить), читаешь онлайн-учебники, начинаешь делать задачи и… боже, ну ничего же не понятно! Идешь на Stack Overflow, читаешь все похожие вопросы, рисуешь себе схему, пробуешь, ошибаешься, исправляешь, становится хуже, начинаешь все сначала. Чувство, когда программа работает, несопоставимо ни с чем другим.

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

Учимся сами

Учиться можно и самостоятельно, хотя это определенно потребует больше времени. В GeekBrains рекомендуют серию самоучителей «Head First». В Skillbox советуют искать видеоуроки по программированию, слушать подкасты, пробовать программировать самостоятельно и обсуждать свои работы на профессиональных форумах. При этом очень важно изучать язык системно, регулярно: каждый день или раз в два дня что-то делать — или читать теорию, или практиковаться, отмечает Евгений Картавец из GeekBrains. «На первые несколько месяцев этого хватит. Затем нужно начать работать над полноценным портфолио, чтобы знаний было достаточно не только для учебного проекта, но и для чего-то серьезного», — говорит он.

Серия самоучителей «Head First»

Самоучители по Java, C#, HTML, JavaScript, jQuery, SQL, Android, iOS и т. п. Написаны простым языком, содержат много картинок, схем, таблиц и графиков; снабжены упражнениями для закрепления пройденного материала.

Библиотека курсов и учебных пособий на образовательном ресурсе Envato tuts+

Контент предоставляется после оформления платной подписки.

Учебная онлайн-библиотека LiveEdu

Предлагает обучающие видео по различным языкам программирования и фреймворкам (React.js, Python, Django, C ++, Node.js, JavaScript). Большая часть контента доступна бесплатно.

The Code Player

Пошаговые инструкции в видеоформате, которые помогут понять процесс кодинга от начала до конца.

Programming Knowledge

Обучающие видео в основном для начинающих.

freeCodeCamp.org

Образовательная платформа для начинающих программистов: курсы для самостоятельного прохождения, YouTube-канал и форум, на котором можно попросить совета.

Получаем обратную связь

«Недостаточно просто решить задачу; нужно решить ее грамотно, качественно, чтобы разработка была стабильна, а код был читаемым», — отмечает Евгений Картавец. Получить обратную связь студенты могут как от лекторов, так и от личных наставников, которых некоторые школы закрепляют за учениками. Там, где личного наставника нет, обычно можно обратиться за помощью на форум, где общаются и ученики, и преподаватели.

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

Держим в голове цель

Когда программа в очередной раз уходит в бесконечный цикл, хочется все бросить и сказать себе: «Это просто не мое». «Никогда не знаешь, что пригодится и что окажется твоим делом. Поэтому попробовать стоит все, — считает Татьяна Власенко из HTML Academy. — Мы в Академии собираем истории выпускников и сами удивляемся: люди, посвятившие жизнь музыке, обнаруживают талант к верстке, журналисты становятся отличными фронтенд-разработчиками. Таких историй много, а это говорит о том, что деление на технарей и гуманитариев весьма условно». «В программировании человек из ничего творит нечто, что можно пощупать, потрогать, использовать», — говорит Евгений Картавец из GeekBrains. «Виртуальные миры живут по правилам, определенным программистом, он там — Создатель», — добавляет Вадим Шандринов из Skillbox.

«Непредсказуемо много молодых людей вдруг обнаружили, что быть актуальным в тотальной киберреальности можно только в том случае, если ты эту реальность создаешь, — согласна с ним Екатерина Руднева из Moscow Coding School. — Кодер — это звучит гордо. Моду на архитектуру и дизайн в образовании уверенно потеснило умение писать программы и придумывать мобильные приложения».