Программирование

Знать язык программирования и уметь программировать — это не одно и то же. Можно изучить синтаксис 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.).

Пишите код

Чтобы научиться ходить — нужно пытаться ходить. Чтобы научиться программировать — нужно пытаться программировать. Решайте задачи. Как можно больше. Сохраняйте ваши решения на Гитхабе, они вам пригодятся в работе или на собеседованиях.