Поздравляю! К текущему моменту вы уже освоили базовые концепции, составляющие основу любой программы, в общем-то, на любом языке. Теперь самое время задаться вопросом "а что дальше?".
Естественное желание любого человека, который начинает заниматься программированием, это как можно быстрее прыгать в бой, делать сайты, фронтенд или бекенд. Этот путь очень хорош с точки зрения мотивации и отлично работает, если у вас под рукой всегда доступен эксперт, который в любой момент вам расскажет, разжует и направит читать в правильное место. К сожалению, такое могут позволить себе единицы.
А автоматизированные способы обучения, направленные сразу на создание готового проекта, как правило, превращаются в мартышкин труд. Объем знаний, которыми необходимо обладать для создания качественного проекта (который учит правильным вещам), огромен. Дать его не представляется возможным из-за желания как можно быстрее кинуться в омут разработки. Все это сказывается на качестве, создание такого проекта превращается в плюс-минус выполнение команд без понимания их смысла.
Предположим, мы хотим сделать одностраничный сайт на nodejs
(серверный javascript).
Для реализации простейшего сайта вам нужно знать на базовом уровне:
Не считая главного, что это еще даже не программирование. К тому же, если будут ошибки, то разобраться в них, без посторонней помощи, будет практически невозможно.
По указанным выше причинам мы отказались от этой идеи и идем снизу вверх. При этом, мы также используем проектное обучение, но на другом уровне. Почти каждый курс на Хекслете (по js направлению) представляет из себя материал, построенный вокруг микропроекта. Например, в следующем курсе мы построим библиотеку для работы с графическими фигурами, далее мы разработаем небольшую игру, свою файловую систему и многое другое. А в конце концов мы придем к созданию полноценных сайтов.
Весь изучаемый материал, грубо, можно поделить на следующие категории:
Вот что говорит об этом Джон Скит, №1 на stackoverflow, автор C# in Depth, одной из лучших книг по .NET, разработчик в Google и 14-кратный MVP
И я обнаружил, что многие люди не знают, как это делать, или просто не запариваются — они предпочитают задавать вопросы. Еще многие прыгают с головой в языки и платформы до того, как будут действительно готовы. Лично я пытаюсь изучать вещи по одной, зато как следует, но есть куча людей, которые говорят: «Я совершенно новенький в программировании. Сейчас я пишу приложение под Android на Java, взаимодействующее с SQLite. И этот код не работает», — окей, а это проблема Java, проблема Android или проблема SQLite? Вряд ли все три сразу. Что вы сделали, чтобы понять, что является источником проблемы? Поймите, я не докапываюсь, я пытаюсь научить людей помогать самим себе. Я твёрдо убежден, что понимание «как работает мой язык», отдельное от «как работает моя платформа» — это реальное преимущество в отношении того, как быстро вы сможете разобраться и начинать применять что-то при изучении нового.
Мы полностью поддерживаем Джона и строим свое обучение таким образом, что сначала изучаем язык, а только потом платформу. Да, этот путь не кажется таким же захватывающим как и сразу окунуться в боевой проект, более того этот путь довольно долгий и местами тяжелый, но если вы его пройдете, то будете значительно опережать многих других начинающих разработчиков по своему уровню.
В этом убедились множество компаний, которые приняли наших ребят к себе на работу, о чем сами ребята иногда делятся.
Существует заблуждение, что выучить язык программирования это и есть научиться программировать. На самом деле, на базовом уровне, умение программировать это способность проанализировать задачу, сформулировать алгоритм ее решения и реализовать этот алгоритм в коде.
Как видите, без первых двух шагов третий бесполезен. Знание конкретных конструкций языка никак не поможет составить алгоритм и даже не улучшит этот навык. Дальше больше. Чем более сложное взаимодействие, тем более сложные алгоритмы, в которые вплетаются различные составные данные и дополнительные языковые возможности.
Примитивная задача по выводу списка всех файлов в папке (с подпапками) требует понимания древовидных структур и умения использовать рекурсию.
В этом смысле, обучение программированию мало отличается от изучения математики и физики в школе. После небольшой теории идет долгий период решения всевозможных простых и сложных задач. Так, шаг за шагом, происходит познание и, самое важное, приобретение навыков.
Обучение на Хекслете захватывает практически все возможности современного js, но, вместе с этим, основной акцент в обучении строится именно на умении программировать, которое не зависит от языка и фактически определяет способ мышления.
Помимо курсов на Хекслете также есть те самые "реальные" проекты. Для каждой профессии свой набор проектов, разделяемых по уровню. Каждый проект — это глубокое погружение в код вне Хекслета при участии нашего ментора. При этом весь код проекта лежит на гитхабе и становится частью вашего портфолио.
Программа обучения построена таким образом, что всего во время освоения профессии нужно пройти 4 проекта. Вы можете стартовать их в любое время, что позволяет успевать подготовиться к проекту следующего уровня. Последний проект длится месяц и, по сути, является дипломной работой. На нём разрабатывается полноценное законченное приложение.
Подробнее о проектах: https://ru.hexlet.io/my/learning
Какой бы путь обучения вы ни выбрали, есть одна вещь, которую надо сделать в любом случае - настроить локальное окружение и научиться запускать код локально. Как правило, этот шаг очень сложный и психологически и технически, особенно если ваша основная операционная система Windows
, но именно он, по-настоящему, приближает вас к реальному программированию.
Уже с первых дней обучения стоит начать читать профессиональную литературу, это очень сильно ускорит ваше развитие как разработчика. Книг очень много, и не все из них полезны. Поэтому мы составили список лучших книг и рекомендуем в первую очередь читать именно их. Еще у нас есть статья о том, как эффективно выбирать и читать профессиональную литературу.
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт