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

А что дальше?

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

К сожалению, далеко не у всех есть подобный человек.

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

Предположим, мы хотим сделать одностраничный сайт на Node JS (серверный javascript). Вам нужно знать на базовом уровне:

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

Ну, и само программирование, написание кода, проработка концепций. И множество ошибок и проблем.

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

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

Весь изучаемый материал можно разделить на две категории:

  1. Язык
  2. Языковая платформа

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

Многие люди не знают, как это делать, или просто не запариваются — они предпочитают задавать вопросы. Еще многие прыгают с головой в языки и платформы до того, как будут действительно готовы. Лично я пытаюсь изучать вещи по одной, зато как следует, но есть куча людей, которые говорят: «Я совершенно новенький в программировании.

Сейчас я пишу приложение под Android на Java, взаимодействующее с SQLite. И этот код не работает», — окей, а это проблема Java, проблема Android или проблема SQLite? Вряд ли все три сразу. Что вы сделали, чтобы понять, что является источником проблемы?

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

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

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

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

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

Без первых двух шагов третий не имеет смысла. Знание конкретных конструкций языка никак не поможет составить алгоритм.

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

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

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

Проекты

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

Каждый проект – это неделя (кроме четвертого проекта) глубокого погружения в код вне Хекслета при участии нашего ментора. Весь код проекта лежит на вашем Гитхабе и становится частью вашего портфолио.

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

Последний проект длится месяц, это дипломная работа. На нем разрабатывается полноценное законченное приложение.

Узнайте подробнее о проектах на hexlet.io/projects.

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

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

Чтение книг

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

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

Для продолжения нужно перейти в курс и вступить в него.