О самообучении в веб-разработке (часть 1)

Мысль о том, чтобы стать профессиональным full-stack веб-разработчиком меня посетила ещё в июне 2016 года.
Мне стало это интересно и я начал учиться. О причинах этого поведаю как-нибудь в другой раз. Сейчас же я расскажу о том, как проходило моё обучение и как оно идёт сейчас.
Поскольку информации будет много, я решил разбить её на три части:
- Front-End (расскажу как я учился вёрстке и джваскрипту)
- Back-end (опишу свои мытарства при выборе серверного языка программирования)
- Скорость и результаты самообучения (философская часть, с выводами)
В этой части, я расскажу про моё обучение фронтенд направления в вёрстке.
Front-End — начало
Начнём с того, что я уже 7 лет занимаюсь интернет-рекламой. Моя специализация — трафик и аналитика.
На тот момент я слабо знал HTML и CSS, но мне хватало этих знаний для моей работы. Я мог немного поправить вёрстку на сайте, подключить счётчики Метрики и Analytics и всё. JavaScript мне вообще казался клинописью. О серверных языках я даже и не заикался.
С этими «знаниями» я и стартовал в мире веба в июне 2016 года.
Для того, чтобы обучение шло эффективнее, мы в самом начале определяем те тсферы, в которых у нас есть наибольшие компетенции и далее уже копаем их глубже. Поскольку в вёрстке я хоть чуть-чуть но ориентировался, то и начать решил именно с неё. Но если вы вообще ничего не знаете о веб-разработке, начинать также нужно с вёрстки.
HTML5 и СSS3
С изучением HTML и СSS проблем не возникло. Мне повезло, поскольку я «варился» в теме интернет-маркетинга. Маркетолог не обязан уметь верстать макеты по тем исходникам, что присылает дизайнер, но ты очень плохой интернет-маркетолог, если не умеешь хотя бы починить «поплывшую» вёрстку у себя на лендинге.
У тебя должны быть хотя бы минимальные знания в этом вопросе. Ты должен знать как поменять цвет шрифтов или фона, как задать отступы элементов друг от друга. Ты должен уметь ориентироваться в style.css и быстро находить необходимые селекторы. В этом нет ничего сложного, если понять логику, по которой это всё функционирует.
Первое, что я сделал — подтянул свои знания HTML5 и CSS3.
Я перепробовал и пересмотрел кучу разных материалов, но лучшее, что я видел, было на сайте HTMLacademy.
У них отличные интерактивные уроки! Материал подаётся настолько простым, понятным и живым языком, что за несколько недель я сверстал с нуля свой первый одностраничник на чистом HTML и СSS.
После этих курсов, я уже только гуглил нужные для меня темы (например, как сделать сайт адаптивным) и периодически заходил сюда в поисках нужного тега или свойства селектора.
Где-то через полтора месяца я мог верстать адаптивные посадочные страницы и подключать готовые скрипты. И хоть скорость моей вёрстки оставляла желать лучшего, я никуда не спешил, решив сфокусироваться на качестве моей вёрстки.
JavaScript и прочие ангуляры с реактами
Что касается JS, то я ещё не погружался в этот язык очень глубоко.
Я успел пройти только пару тематических курсов на Codeacademy.
Там я познакомился с синтаксисом языка, попробовал написать какие-то свои простые скрипты.
Ещё, мне понравился сайт https://learn.javascript.ru. На мои вопросы по JS, Гугл чаще всего отсылает меня именно сюда.
Также я успел немного пощупать React, совсем чуть-чуть) В NodeJS и Angular я не лез и в ближайшее время это делать точно не планирую, да и вам не советую, если вы хотите заниматься фулстек-разработкой. Вам просто не хватит времени.
Пока по JS я более ничего сказать не могу, просто потому, что я не фронтендер. Мой основный приоритет на данный момент — это бэкенд и разработка на языке Ruby. Все силы и время уходят туда (об этом расскажу во второй части).
Но сказать, что изучения JavaScript для меня было бесполезным занятием тоже нельзя, так как мне в любом случае приходится с ним сталкиваться. Плюс погружение (пусть и минимальное) в этот язык дало свои плоды, которыми я поделюсь в конце статьи.
Что ещё предстоит изучить:
В ближайших планах: освоить LESS (или PostCSS, пока не решил). Также я хочу подтянуть знания JS, освоить AJAX и работу с DOM-деревом, изучить простую анимацию и эффекты.
В дальних планах — научится использовать библиотеку React JS и смежные с ним технологии для реализации свои целей и задач.
Что изучать не планирую:
Я понимаю, что время на обучение ограничено, а фронтенд развивается c такой скоростью, что мне просто физически не изучить все технологии. Да это и не нужно!
Для реализации моих целей, мне отлично подходят знания в HTML5, CSS3, базовые знания JS и библиотеки в виде React.
Что касается других технологии...
Пробовал использовать Twitter Bootstrap, но мне проще с нуля сделать разметку документа и приготовить стили, чем чистить файлы от кучи ненужного кода. Поэтому так и не освоил этот инструмент и не факт, что буду его использовать в дальнейшем.
Также не хочу углубляться в изучение jQuery. Я периодически подключаю эту библиотеку к лендингам (не понимая как она работает) из-за того же AJAX, но я уверен, что знания React в этом плане будут лучше.
В итоге:
- Если вы хотите работать фронтендером, зарывайтесь в JavaScript с головой. Это ваша и мама и папа на ближайшее будущее. Параллельно с этим учите React JS или Angular. Ну и NodeJS, если хотите заниматься бэкендом (об этом в другой части).
- Если вы не практикуетесь в языке, как например я (сейчас мало пишу на JS, так как изучаю Ruby), то навык написания кода конкретно на этом языке программирования (ЯП) — теряется.
- Предыдущие два пункта абсолютно не значат, что второй язык не нужно изучать, если не освоил первый или сконцентрировать всё своё внимание только на одном ЯП! Я заметил интересную вещь, что погружаясь в изучение разных ЯП, ты лучше их понимаешь. Логика работы этих языков очень похожа. Взглянув на какой-то код, ты можешь понять как он работает. То есть у тебя реже возникает «ступор» и чаще происходит узнавание кода. А это прекрасно!
- Только с погружением во френтенд я разобрался с тем, какие технологии мне нужны на самом деле. Поэтому выбирайте технологии и инструменты, исходя из своих целей и задач!
Конец первой части.