Доброго времени суток! Прошу прощения за длинный текст, но как говорится - наболело!
С детства я увлекался компьютерами, как и большинство детей в 2000-х, часами проводил за игрушками, рисовалками и пр.
Лет в 14 увлекся flash, пытался что-то рисовать, анимировать и там же пытался познакомиться с первым языком программирования actionScript, ваял какие…
Я работаю frontend девом больше семи лет, по образованию - гуманитарий. Было тяжело, учился по сайтам\книжкам и больше всего - на практике. Первый год моей работы был адом, но это быстро стало меняться к лучшему с опытом. К сожалению у меня почти не было коллег, которые могли бы меня чему-то обучить, приходилось расти самому, что помогало менять работу и вырастать в зарплате. В итоге благодаря работе я смог уехать в более развитую страну, чем та, в которой я был.
Все могут быть разработчиками, это несложная работа, на самом деле, но она требует важных качеств - умение досконально разбираться в вещах, стремление к перфекционизму (но без фанатизма) и живой ум, который не боится учиться, что придется делать теперь всегда, в той или иной степени.
Сейчас много всяких курсов, вебинаров, книг, сайтов, постов. С ними есть одна проблема - новичку тяжело выделить из этого шлак, а его слишком много. Кроме полной чуши в статьях и книгах (именно так), есть еще просто ненужные вещи, которые нет необходимости знать сейчас или вообще. И пусть в меня кидают тапком, но фронту не нужно знать 100500 разных алгоритмов, функциональное программирование, архитектурные подходы и все дизайн паттерны мира, это приходит с опытом, постепенно, когда ты достаточно разбираешься в вопросе, чтобы понимать, что тебе нужно, а что нет. Тем более не все хотят быть продвинутыми разработчиками, некоторых устраивает какой-то определенный уровень, на котором они и останавливаются - что тоже классно. Это такой же выбор, как не быть тимлидом, потому что ты не хочешь ебаться.
Вот список того, что я использовал, когда самообучался (может быть сейчас есть что-то более полезное и удобное, но я бы все-таки дал шанс именно этим ресурсам):
- htmlbook.ru - потрясающий сайт со всем, что нужно знать по html\css, там есть отличные пдфки, которые меня очень спасали первый год моей работы
- javascript.ru - там не все полезно, но первые шаги в javascript я сделал именно благодаря этому сайту, очень рекомендую
- https://frontendmasters.com/books/javascript-enlightenment/ - потрясающая книга, которая подробно объясняет как работает и как пользоваться JS.
- https://css-tricks.com/ - полезный сайт со всякими статейками по фронту, часто заглядываю туда, забывая как работает flex-box, например (https://css-tricks.com/snippets/css/a-guide-to-flexbox/).
- http://getbem.com/ - это было открытие для меня в свое время. Не углубляйся сильно в тулзы, просто начни писать классы в стиле БЭМ, этого достаточно.
Я бы сказал, что это - первые шаги, после которых уже понимаешь, что читать дальше, углубляясь в разработку, вот просто несколько примеров, но там ты уже подрастешь и сможешь понимать, что тебе нужно сам: https://addyosmani.com/resources/essentialjsdesignpatterns/book/index.html https://github.com/MostlyAdequate/mostly-adequate-guide
https://github.com/getify/You-Dont-Know-JS
И гайды по React, Angular (искренне не рекомендую этот фреймворк, сломаешь мозг без выгоды для себя), Redux, RxJS, SASS, Typescript и т.д.
И на заметку - общие советы, которые я бы дал себе тогда, семь лет назад, это несколько предвзято и персонально, но вдруг кому будет интересно:
- Не бойся, это несложно. Если это сложно, то чего-то не знаешь - это нормально, узнаешь позже.
- Слушай только тех, кто умеет аргументировать, не следуй чьим-то словам слепо, но уважай опыт. Бывает у человека просто нет времени\умения объяснить, но он прав и надо делать так, как он говорит. Такое понимание придет с опытом.
- Не недооценивай HTML\CSS, знания этих языков важны не менее, чем JS. Без них ты не можешь быть полноценным разработчиком в этой сфере. (Привет backend\fullstack программистам, которые писали фронт, который я потом переделывал).
- Спрашивай, постоянно, не бойся никого задолбать - они скажут.
- Тянись к людям, которые знают больше, причем не обязательно к фронтам. Я много узнал именно он синьоров в бэке.
- Подписывайся на людей, которые двигают твою сферу, лучше всего юзать Twitter. Они постоянно постят что-то интересное и полезное.
- Читай статьи, а не книги. Книги же читай между строк, останавливаясь только там, где тебе нужно или где ты что-то не понимаешь. Твое время и концентрация ограничены.
- Всегда пиши код так, будто он на века, старайся продумывать структуры данных, разделять код на слои, даже не зная паттернов, потом ты их встретишь и поймешь например, что тут ты использовал фабрику, а это, скажем - фасады. Но ищи грань, если конфигурация переиспользуемого слоя становится больше кода самого слоя - то надо переделывать.
- А вот переделывать не бойся, постоянно рефаторь свой код, причем даже если тебе не выделяют на это время, начальству необязательно знать, а коллеги зачастую поддержат.
- Учи Typescript, строго типизированный язык всегда лучше в долгосрочной перспективе, как для проекта, так и для себя.
- Получай больше удовольствия от работы, не кранчи, если есть возможность этого избежать.
Если есть вопросы, постараюсь ответить.
Спасибо большое!