JavaScript один из самых популярных языков программирования и каждый год он притягивает в свои ряды все новых и новых последователей. Новички его любят за легкость в изучении, высокие зарплаты, множество открытых вакансий и большие перспективы. Более опытные ценят в JS широкие возможности, наличие мощных фреймворков и поддержку в лице многочисленного сообщества. Для того, чтобы не разочароваться во всей этой идиллии, необходимо с умом подойти к изучению, начать с правильных вещей, не потеряться в потоках информации и все-таки стать JavaScript разработчиком.
Одна из основных специализаций JavaScript это работа с контентом на web-странице - другими словами оперирование DOM-деревом (Объектная Модель Документа). Добавить динамически меняющийся текст, поменять цвет кнопки при клике, вывести pop-up - обычные задачи для JavaScript разработчика в сфере web-разработки. Для всего этого понадобиться разобраться в HTML и CSS. Здесь есть свои нюансы и чтобы стать гуру в этих областях придется попотеть (СSS), но для нас важно усвоить основы, а на это не уйдет более месяца.
Ресурсов для изучения HTML и CSS множество, но здесь хотелось бы отметить тренажер от HTML Academy. В интерактивной форме и за короткий срок можно получить базовые навыки на практике и приступить уже к изучению JavaScript.
Для того, чтобы эффективно изучать JavaScript необходимо закреплять теорию практикой, поэтому чтение книг на начальном этапе не подходит. Также сразу записываться на курсы для многих не самая удачная идея, там вы просто можете поплыть. А вот структурированные самоучители в самый раз.
Раздел за разделом, тема за темой, задание за заданием, пример за примером и в один момент вы поймете, что вы в чем-то начали разбираться.
Познакомиться с JavaScript также можно и в HTML Академии, здесь разработчики подготовили удобный тренажер по JS, который не даст сбиться с намеченного курса.
В какой-то момент самостоятельного изучения может начаться период, когда у вас будет оставаться больше вопросов чем ответов. Или может подвести самоорганизация и вы начнете отлынивать от изучения программирования. Здесь на помощь приходят курсы. Самый лучший вариант - это пойти на платные курсы с графиком обучения и наставником. Здесь не только разжуют теорию, но и погрузят с головой в практику, а также замотивируют дипломом, который дают после успешного прохождения курса.
Если с платными курсами не получается, всегда можно воспользоваться бесплатными.
На любом этапе обучения имеет смысл искать работу / подработку / стажировку. Пусть это будет должность стажера-верстальщика, это уже опыт, который погрузит вас в профессию web-разработчика. Здесь лучше подойдут компании в которых есть специализированные отделы, чтобы было кому вас обучать.
Создавайте свои проекты, набивайте руку, пусть сначала это будет просто копирование чужого кода. Далее вы будете править готовые скрипты под свои нужды, а затем начнете писать и свои.
Если со стажировкой не получается, всегда есть вариант найти простенькие задачки на бирже фриланса. Можно по началу брать совсем небольшие суммы, главное здесь не растеряться и сдать проект вовремя. Этот способ подходит для смелых.
После того, как основы языка программирования освоены теорию можно закрепить с помощью литературы. Книг для изучения JavaScript много, перечислим некоторые из достойных внимания:
На протяжении всего обучения JavaScript вы будете встречать новые программы и технологии, которые необходимо знать, а в некоторых и хорошо разбираться:
Не стоит гнаться и глубоко погружаться во все подряд. Например среди Rect, Vue и Angular выбирают что-то одно. Знание Node.js на начальных этапах не ускорит процесса обучения. Git без работы в команде теряет большую часть своей ценности. Все нюансы можно почерпнуть на курсах, в статьях, на YouTube или слушая подкасты.
Как только вы почувствуете силу, поймете, что из курсов и самоучителей выжато все что нужно, а работа не дает нового опыта - добро пожаловать в сообщество codewars.com и ему подобные. Здесь можно попрактиковаться программированию через решение разнообразных задач и наблюдение за чужими техниками написания кода.