Хорошее не бывает дешёвым. Но бывает бесплатным

В этой статье хочу рассказать о Rolling Scopes School – бесплатном курсе по JavaScript / фронтенду, который я прошла, и который мне очень понравился. Узнала я об этом курсе случайно, информации в сети о нём, на мой взгляд, немного, а курс отличный и заслуживает внимания. Думаю, эта статья будет полезна тем, кто пытается самостоятельно изучать программирование. Во всяком случае, если бы мне кто-то раньше рассказал об этом курсе, я точно была бы благодарна.

У тех, кто не пытался учиться сам с нуля, может возникнуть вопрос – зачем нужны какие-то курсы, ведь информации в сети море – бери и учи. На самом деле, море информации – это не всегда хорошо, потому что выбрать из этого моря именно то, что тебе необходимо, бывает совсем не просто. Курс подскажет: что учить, как учить, в каком темпе учить; поможет отличить хорошие и достойные внимания источники информации от некачественных и устаревших; предложит большое количество практических заданий; позволит стать частью сообщества увлечённых и заинтересованных людей, которые занимаются тем же, что и ты.

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

Курс работает практически непрерывно: запускается два раза в год и продолжается полгода. Он состоит из трёх этапов. На первом этапе мы изучали преимущественно Git и вёрстку, на втором – JavaScript, на третьем – React и Node.js.

В следующий этап проходили по результатам выполнения заданий предыдущего этапа. В конце каждого этапа проводилось собеседование. После первого и второго этапа это были учебные собеседования с менторами, после третьего этапа для ста двадцати лучших студентов организовали собеседования в минскую EPAM JS Lab. Курс проводит белорусское сообщество фронтенд и JavaScript разработчиков The Rolling Scopes, поэтому понятно наличие у них контактов именно с минским офисом EPAM. Впрочем, сообщество старается наладить контакты и рекомендовать своих студентов в IT-компании и в других городах Беларуси, Казахстана, России.

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

На первом этапе мы прошли два теста по основам Git, два теста по HTML/CSS, курсы Codecademy и HTML Academy, создали своё CV в виде markdown-файла и в виде обычной веб-страницы, сверстали небольшой одностраничный макет, решили несколько довольно сложных задач по JavaScript.

Самым объёмным заданием первого этапа была вёрстка сайта Hexal.
Самым интересным – игровой Code Jam на знание css-селекторов «CSS Quick Draw».
Самыми сложными – задачи по JavaScript. Пример одной из таких задач: «Найти количество нулей в конце факториала большого числа в указанной системе счисления».

Пример задания первого этапа: Hexal.

По результатам выполнения заданий первого этапа 833 студента получили приглашения на интервью. Прохождение студента во второй этап в ходе собеседования определял его будущий ментор. Менторы Rolling Scopes School – это действующие разработчики из Беларуси, России, Украины. Менторы помогают и подсказывают, проверяют задания, отвечают на вопросы. В нашем наборе менторов было больше 150. В зависимости от наличия свободного времени ментор может взять от двух до пяти студентов, но на интервью к нему направляется на два студента больше, чтобы в ходе собеседования он мог выбрать тех, с кем будет заниматься.

Распределение студентов и менторов было одним из самых интересных и волнующих моментов курса. Организаторы внесли в него небольшой игровой элемент – данные о менторах хранила распределительная шляпа, при клике по которой можно было увидеть имя и контакты своего будущего ментора.

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

Вопросы предстоящего интервью были известны, так что подготовиться к нему можно было заранее.
ООП учила по видео [J]u[S]t prototype this!. Его автор – Сергей Мелюков – рассказывает исключительно доступно и понятно.
Структуры данных и нотация О-большое отлично раскрыты в статье Шпаргалка для технического собеседования.
Наибольшие сомнения вызывала задача по JavaScript, которая непременно будет на интервью. Решать задачи я, в общем, люблю, но с Google и в консоли браузера, а если решать нужно ручкой и на бумаге (или мышкой в блокноте) – всё становится намного сложнее.
К интервью удобно готовиться вдвоём на сайте skype.com/interviews/ – задавать друг другу вопросы, придумывать задачи. Это достаточно эффективный способ подготовки: когда выступаешь в разных ролях, лучше понимаешь того, кто находится по другую сторону экрана.

На что в моём представлении могло быть похожим собеседование? Скорей всего, на экзамен, где есть экзаменатор и экзаменуемый. На самом деле, экзаменом это точно не было. Скорее, беседой двух увлечённых людей, которые занимаются одним делом. Собеседование прошло исключительно спокойно, комфортно, доброжелательно, вопросы были не очень сложными, задача достаточно простая, причём ментор совершенно не возражал против решения её в консоли и даже разрешил заглянуть в Google («на работе пользоваться Google никто не запретит»).

Насколько я понимаю, главной задачей собеседования было не проверить наши знания и умение решать задачи, а дать возможность ментору познакомиться со своими студентами и показать им, как выглядит собеседование вообще. И то, что от собеседования остались только хорошие впечатления, было результатом его сознательных усилий, желания показать, что в собеседовании на самом деле нет ничего пугающего, и проходить его можно с удовольствием. Другой вопрос, почему это достаточно легко удалось сделать человеку с техническим образованием, и очень редко удаётся преподавателям. Все ведь помнят, с каким волнением шли на экзамен, даже если отлично знали материал. И раз уж речь зашла об официальной педагогике, поделюсь ещё одним наблюдением. На курсе учились, в том числе, и студенты старших курсов IT-специальностей. И вот они утверждали, что формат обучения, который предлагает Rolling Scopes School, намного полезней, интересней и результативней, чем обычная вузовская программа.

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

На втором этапе у нас был очень интересный и динамичный Code Jam «JavaScript Arrays Quick Draw», такие соревнования в школе проходят захватывающе и увлекательно.
Намного более сложным оказался Code Jam «CoreJS». 120 задач по JavaScript, на решение которых отводилось 48 часов, стали серьёзным испытанием.
Ещё у нас было несколько тестов по JavaScript, ссылка на один из них у меня сохранилась в закладках браузера. На решение теста отводится 30 минут.
Дальше мы сверстали макет NeutronMail, выполнили Code Jam «DOM, DOM Events», создали поисковик по YouTube.

Другие задания второго этапа: Task: Codewars – решение задач на одноимённом сайте, Code Jam «WebSocket Challenge.» – отправка и получение сообщений при помощи веб-сокетов, Code Jam «Animation Player» – создание небольшого веб-приложения.

Достаточно необычным и интересным заданием второго этапа стал таск «Presentation». Основная его особенность в том, что презентацию необходимо было подготовить и представить на английском языке. Здесь можно посмотреть, как проходил очный этап презентаций.

И, несомненно, самым сложным и объёмным был финальный таск второго этапа, в ходе которого нам предложили создать собственную копию веб-приложения Piskel (www.piskelapp.com).
На это задание ушло больше месяца, причём большая часть времени – на то, чтобы понять, как это работает в оригинале. Для большей объективности, финальный таск проверял другой, случайно выбранный ментор. И собеседование после второго этапа тоже проводил случайный ментор, потому что к своему мы уже привыкли, и он привык к нам, а на реальных собеседованиях, как правило, встречаются незнакомые между собой люди.

Второе собеседование оказалось намного сложнее первого. Как и раньше, имелся список вопросов для собеседования, к которым я подготовилась, но ментор решил, что просто спрашивать теорию будет не совсем правильно, и к собеседованию подготовил набор задач. Задачи, на мой взгляд, были достаточно сложными. Например, он искренне не понимал, что мне мешает написать bind polyfill, а я так же искренне считала, что то, что я знаю, что такое bind, и что такое polyfill, это уже много. Эту задачу я не решила. Но были и другие, с которыми справилась. Вот только задачи были не простыми, и, как только я находила решение, ментор немного менял условие, и решать задачу приходилось снова, в уже более сложном варианте.
При этом отмечу, что атмосфера собеседования была очень доброжелательная, задачи интересными, ментор потратил много времени, чтобы их подготовить, и стремился, чтобы учебное интервью в будущем помогло пройти реальное интервью при устройстве на работу.

Примеры заданий второго этапа:
NeutronMail
Palette
YouTubeClient
PiskelClone

На третьем этапе нам предложили таск Culture Portal. Его мы выполняли в группе, и впервые познакомились с особенностями командной работы, распределения обязанностей, разрешения конфликтов при слиянии веток в Git. Наверное, это было одним из самых интересных заданий курса.

Пример задания третьего этапа: Culture Portal.

После окончания третьего этапа студенты, которые претендовали на работу в компании EPAM и вошли в список 120 лучших, прошли телефонное собеседование на знание английского языка, и в настоящее время проходят технические интервью. Большую часть из них пригласят в EPAM JS Lab, а затем на реальные проекты. Каждый год более ста выпускников Rolling Scopes School получают работу в EPAM. На фоне тех, кто начал курс, это довольно небольшой процент, но если смотреть на тех, кто дошёл до финала, для них шанс получить работу достаточно большой.

Из трудностей, к которым нужно быть готовым, назову две. Первая – это время. Его нужно довольно много. Ориентируйтесь на 30-40 часов в неделю, можно больше, если меньше – маловероятно, что вы будете успевать выполнять все задания, так как программа курса очень насыщенная. Вторая – английский уровня А2. Если он ниже, учиться на курсе это не помешает, но найти работу с таким уровнем языка будет достаточно сложно.

Если есть вопросы, задавайте, постараюсь ответить. Если знаете другие похожие бесплатные русскоязычные онлайн курсы – поделитесь, это будет интересно.

Источник: habr.com