Программирование
Знать язык программирования и уметь программировать — это не одно и то же. Можно изучить синтаксис JS, запомнить все его нюансы и писать при этом неоптимальные, плохо читаемые программы, поддержка которых будет занимать кучу времени.
Важно научиться анализировать задачи и предлагать оптимальные варианты решения с использованием подходящих структур данных и приемов программирования.
Например, чтобы вывести список всех файлов в директории с поддиректориями, нужно иметь представление о древовидных структурах и использовать рекурсию.
Изучая язык программирования мы, так или иначе, учимся программировать. Однако, качественно улучшить процесс можно только изучая основы информатики, алгоритмы и структуры данных.
Введение в программирование для новичков
Курс CS50 подойдет новичкам в программировании. Лучше всего пройти его на платформе edX, сделать все задачи и получить сертификат. Если совсем плохо с английским, на Ютюбе есть русский перевод курса за 2015-й год. Современная версия немного отличается, но особой роли это не играет.
CS50 подойдет любому человеку, который решил стать «айтишником». Его можно рекомендовать и способным школьникам, и умудренным опытом «перебежчикам» из других профессий. Вы изучите основы программирования и основные концепции компьютерных наук.
Курс очень информативен, но при этом подан настолько увлекательно, что лекции смотрятся как любимый сериал.
Основы программирования и JavaScript
Мы рекомендуем заниматься на Хекслете и пройти ряд курсов, объединенных в профессию «Фронтенд JS-программист»:
Обучение на Хекслете захватывает практически все возможности современного JavaScript, но основной акцент в обучении строится именно на умении программировать, которое не зависит от языка и определяет способ мышления.
На Хекслете есть довольно много бесплатных курсов, но основная часть материалов доступна по подписке.
Так же рекомендуем прочитать книгу Eloquent JavaScript. Она бесплатна, содержит прекрасный материал и в ней много интересных задач.
Алгоритмы для начинающих
Алгоритм — набор инструкций для ЭВМ, решающий какую-то задачу. По сути любая программа — алгоритм, но некоторые алгоритмы стали базовыми, классическими: бинарный поиск, разные сортировки, поиск наименьшего пути и пр. Изучая эти алгоритмы вы познакомитесь с важными приемами программирования, оптимальными подходами к решению задач, научитесь отличать хороший код от плохого.
Лекция Алгоритмы и структуры данных от Яндекс ШРИ.
Base CS — серия статей и подкастов. Можно и почитать и послушать.
В книге Грокаем алгоритмы автор постарался упростить все, что только можно упростить. Примеры кода в книге приводятся на Питоне, но в официальном репозитории есть аналогичный код на многих языках: JS, PHP, Ruby, Swift и пр.
В этом репозитории собраны реализации популярных алгоритмов и структур данных на JS с объяснениями и ссылками на более подробное изучение.
Шаблоны проектирования
Шаблоны проектирования (design patterns) — устоявшиеся способы решения часто встречающихся задач. Их стоит изучить для того, чтобы не изобретать велосипеды самостоятельно, а использовать проверенные наработки.
Книга Learning JavaScript Design Patterns.
Набор статей Принципы проектирования классов (S.O.L.I.D.).
Пишите код
Чтобы научиться ходить — нужно пытаться ходить. Чтобы научиться программировать — нужно пытаться программировать. Решайте задачи. Как можно больше. Сохраняйте ваши решения на Гитхабе, они вам пригодятся в работе или на собеседованиях.