Nick's Journal Думки, спостереження, конспекти та розповіді про подорожі

Что делать начинающим во Front-End?

После завершения курса по Front-end, который я веду, у меня часто просят дать рекомендацию о планах на будущее. Чтобы не повторяться, я решил составить своё видение общего рекомендательного плана развития Front-end разработчика после базового курса HTML/CSS/Javascript.

Я не могу гарантировать что это план поможет всем и наверняка не стоит ему слепо следовать, но он точно может дать некоторые идеи для развития.

Алгоритмы

Для начала, есть знания, которые пригодятся вам рано или поздно, хотя и мгновенного эффекта вы от них не получите. На первых этапах даже может казаться что такие знания не применяются в реальных задачах. Но их всё же лучше иметь в долгосрочной перспективе. Речь идёт об алгоритмах, паттернах и стиле кода.

К изучению: алгоритмы, паттерны, стиль кода, серии Clean Code.


Многие программисты приходят к изучению таких, казалось, бы базовых, областей спустя годы своей карьеры. В этом есть позитивные моменты, т. к. они теперь точно знают где эти знания применить. У них в работе есть проблемы, и они находят решения в этих знаниях.

Без “проблемы” эти знания будут иметь более теоретический характер. Но тем не менее я советую как можно раньше начать погружаться в основы. Не переключать вектор развития полностью на эту тематику, всего лишь уделять 10-15% времени, которое вы тратите на обучение, изучению чему-то нового именного по алгоритмам, паттернам и т. д.

Эти знания позволят вам быть универсальным программистом, когда для изучения синтаксиса и принципов нового языка не нужно будет тратить месяцы.

HTTP, Клиент-сервер

Для веб-разработчика важно понимание принципов работы общения клиент-сервер. Основа таких знаний это HTTP протокол и даже некоторые принципы сетевого взаимодействия.

Знания этих областей пригодятся когда вы столкнётесь с проблемами загрузки ресурсов, скоростью загрузки страницы и при работе с AJAX.

Основы Javascript

Это основа вашей специализации, нужно следить чтобы недостаток знаний синтаксиса и возможностей языка не становился преградой в задачах, которые перед вами стоят.

Необходимо регулярно следить за появлением новых возможностей языка (сейчас ES6 и дальше ES7).

Вёрстка (HTML, CSS…)

Вам нужно хорошо разбираться в вёрстке, даже если 90% кода, который вы будете писать будет JS. Javascript в браузере тесно сопряжен с DOM, поэтому без глубоких знаний HTML и CSS будет тяжело.

Полезные умения: Flexbox, работа с SVG, Canvas, CSS3 анимации и трансформации.

Библиотеки, фреймворки и инструменты

jQuery — нужно знать о возможностях и ограничения, уметь применить jQuery плагин или написать свой.

Angular — нужно иметь хотя бы элементарный опыт создания одностраничного приложения, то что у вас уже должно было быть после нашего финального задания.

React.js — очень желательно разобраться в принципах работы, т.к. это то направление куда сейчас движется веб-разработка. Желательно также иметь хотя бы минимальный опыт создания приложения по сложности похожего на наше финальное задание, но с использованием React.js + Flux (или Redux), но без понимания принципов это бесполезно.

lodash — знание этой библиотеки прийдёт к вам на помощь когда вам нужно будет работать с данными. Нет смысла заучивать использование каждой функции, нужно лишь в нужный момент уметь обратиться к документации и разобраться какая функция библиотеки решит именно вашу проблему.

node.js — очень желательно иметь хотя бы небольшой опыт разработке простых скриптов для node.js, учитывая что это всего лишь другая среда выполнения Javascript. В идеале это должен быть простой сервер (используя Express) или программа работы с файлами

Gulp и Grunt — системы сборки для веб-проектов (работают с помощью node.js), важно понимать принципы и уметь настраивать плагины и модернизировать функциональность при необходимости.

Что сейчас делать? Куда идти работать?

Могу посоветовать начать с одной необычной задачи, только сразу предупреждаю что она требует немалой самоорганизации: поставьте сами перед собой какую-то задачу и реализуйте её.

Чем вы занимаетесь помимо обучения JS? Что вам интересно? Может быть вы вышиваете крестиком? Или играете на музыкальном инструменте? Попробуйте сделать сайт о своём увлечении, реализовать его так чтобы код не стыдно было показать будущему работодателю. Такой задачей вы решаете сразу несколько проблем:

  • вы делаете что там вам нравится;
  • ваш проект может быть полезен кому-то кроме вас;
  • вы набираетесь опыта;

Если ваше увлечение не очень подходит для создания сайта о нём, то сделайте сайт для чего угодно! Хоть сайт для общения жильцов вашего дома. Посещаемость не важна, важно как вы его сделаете. Также следите за тем чтобы каждый ваш новый проект был лучше предыдущего.


Дальше в зависимости от удачи и умений у вас есть несколько вариантов:

  • стать стажером. И это, пожалуй, лучший вариант. У вас появляется возможность работать в команде, решать реальные задачи и развиваться. Минус — символичная оплата или её отсутствие. Рано или поздно у вас накопится достаточно опыта, чтобы быть интересным кандидатом для других компаний, или же вам предложат полноценно работать там же где вы стажировались.

  • стать фрилансером. Неплохой вариант. У вас будет возможность работы с реальными проектами, но уже без команды. Оплата — от 0 до средней по рынку. На начальных этапах можно просить заказчиков прислать задачу “просто так” и решить её бесплатно. Думаю многие пойдут навстречу, а у вас появится ещё одна работа в портфолио, опыт и заказчик, который потенциально может дать вам следующий проект, уже за оплату.

  • попробовать себя в роли OpenSource программиста. В мире существует огромное количество проектов, которые так и ждут что-то кто-то пришел и добавил функциональности или починил существующие баги. Начать может быть немного сложно, возможно, к этому вы прийдёте, побыв в роле стажера или фрилансера.

Чтобы влиться в OpenSource мир, можно попробовать такой план: находите на Github интересный, не очень популярный и несложный проект, смотрите какие у него есть проблемы, решаете их и делаете pull-request с решением. В идеальном случае, ваш код примут и теперь вы контрибьютор в открытое программное обеспечение, которое создаётся такими же людьми, как и вы. Чем больше вы сделаете таких правок, тем больше опыта у вас будет, тем быстрее вы сможете разбираться в сложных проектах и тем быстрее вы устоитесь на хорошую работу. Профиль Github такого человека это огромный плюс к резюме.

Не бойтесь писать HR-ам интересующих компаний письма в стиле “Я учусь и хочу у вас стажироваться”, это даёт вам некоторый плюс — HR-ам не прийдется заинтересовывать вас, вы же сами к ним “пришли”. Не пренебрегайте этим приёмом даже тогда, когда будете устраиваться на следующую работу.


И главное — если вы не видите как можно улучшить ваш код спустя день, неделю или месяц, значит вы не развиваетесь как разработчик, значить нужно уделять больше времени обучению. Удачи!