Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Что дальше?

Поздравляю! К текущему моменту вы уже освоили базовые концепции, составляющие основу любой программы, в общем-то, на любом языке. Теперь самое время задаться вопросом "а что дальше?".

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

А автоматизированные способы обучения, направленные сразу на создание готового проекта, как правило, превращаются в мартышкин труд. Объем знаний, которыми необходимо обладать для создания качественного проекта (который учит правильным вещам), огромен. Дать его не представляется возможным из-за желания как можно быстрее кинуться в омут разработки. Все это сказывается на качестве, создание такого проекта превращается в плюс-минус выполнение команд без понимания их смысла.

Предположим, мы хотим сделать одностраничный сайт на nodejs (серверный javascript). Для реализации простейшего сайта вам нужно знать на базовом уровне:

  • Объекты
  • Прототипы
  • Исключения
  • tcp/ip, понятие порта
  • Протокол http (коды, ошибки)
  • Роутинг
  • Request/Response
  • Функции как объекты первого рода
  • Пакетный менеджер, зависимости
  • Шаблонизация

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

По указанным выше причинам мы отказались от этой идеи и идем снизу вверх. При этом, мы также используем проектное обучение, но на другом уровне. Почти каждый курс на Хекслете (по js направлению) представляет из себя материал, построенный вокруг микропроекта. Например, в следующем курсе мы построим библиотеку для работы с графическими фигурами, далее мы разработаем небольшую игру, свою файловую систему и многое другое. А в конце концов мы придем к созданию полноценных сайтов.

Весь изучаемый материал, грубо, можно поделить на следующие категории:

  • Язык
  • Языковая платформа

Вот что говорит об этом Джон Скит, №1 на stackoverflow, автор C# in Depth, одной из лучших книг по .NET, разработчик в Google и 14-кратный MVP

И я обнаружил, что многие люди не знают, как это делать, или просто не запариваются — они предпочитают задавать вопросы. Еще многие прыгают с головой в языки и платформы до того, как будут действительно готовы. Лично я пытаюсь изучать вещи по одной, зато как следует, но есть куча людей, которые говорят: «Я совершенно новенький в программировании. Сейчас я пишу приложение под Android на Java, взаимодействующее с SQLite. И этот код не работает», — окей, а это проблема Java, проблема Android или проблема SQLite? Вряд ли все три сразу. Что вы сделали, чтобы понять, что является источником проблемы? Поймите, я не докапываюсь, я пытаюсь научить людей помогать самим себе. Я твёрдо убежден, что понимание «как работает мой язык», отдельное от «как работает моя платформа» — это реальное преимущество в отношении того, как быстро вы сможете разобраться и начинать применять что-то при изучении нового.

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

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

Изучение языка

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

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

Примитивная задача по выводу списка всех файлов в папке (с подпапками) требует понимания древовидных структур и умения использовать рекурсию.

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

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

Проекты

Помимо курсов на Хекслете также есть те самые "реальные" проекты. Для каждой профессии свой набор проектов, разделяемых по уровню. Каждый проект — это глубокое погружение в код вне Хекслета при участии нашего ментора. При этом весь код проекта лежит на гитхабе и становится частью вашего портфолио.

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

Подробнее о проектах: https://ru.hexlet.io/projects

Локальная среда

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

Чтение книг

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


<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят менторы из команды Хекслета или другие студенты.

Зарегистрироваться

или войти в аккаунт

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг». Защита от спама reCAPTCHA «Конфиденциальность» и «Условия использования».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг». Защита от спама reCAPTCHA «Конфиденциальность» и «Условия использования».