Как набраться опыту frontend-разработчику?

Дата: 28.10.2018 в 13:19, Категория: Советы
  • 2120
  • 12
Как набраться опыту frontend-разработчику?

Я часто замечаю, что начинающие фронтенд-разработчики по несколько раз то начинают, то забрасывают изучение технологий. И постепенно, уже на подсознательном уровне, появляется боязнь рисковать изучать что-то новое. Во многом, это связано как с ленью, так и с отсутствием должной практики.

К примеру, начинающий React-разработчик недавно узнал о том, что у компонента есть состояние и метод setState. Для него это что-то новое и крутое. Теперь его приложение может динамически обновлять данные.

Вроде бы ничего сложного. И даже потратив неделю, можно создать простой список задач (ToDo). Но он осознает, что одного локального состояния становится недостаточно. И не потому, что разработчик хочет изучать ещё больше технологий и развиваться, а из-за того, что костыли уже не спасают. И угадайте, кто приходит на подмогу?

Вот тут и начинается вся боль. Ты начинаешь понимать, что не зря тебе мама говорила стать медиком, а папа строителем. И девушка тебя бросила не потому, что ты скучный мудак, а потому, что ты Redux не учил. Ты начинаешь слышать голоса. Они тебе шепчут, что ещё есть шанс стать PHP-разработчиком и окунуться в мир бэкэнда.

Короч! Если ты понимаешь о чем я говорю и тебе знакомо это чувство, то эта статья для тебя. Я опишу несколько советов о том, как начать изучать «сложные» технологии и не забросить при первой же сложной ситуации.

# Терпение

Главное при изучении программирования и тем более фронтенда — быть терпеливым. То, что ты часто сталкиваешься с трудностями при изучении — это норм. Не надо винить себя в том, что ты никчёмный оболтус, который не может уже долгое время изучить какую-то технологию или язык. Чтобы стать хорошим программистом, нужно терпение и годы обучений. Стать сеньор-помидором за 1 год у тебя никогда не получится.

И скажу так: «Делать ошибки — не самое страшное. Самое страшное, не учиться на этих ошибках.»

(Интересно, мой мозг украл эту цитату или я действительно её только что придумал? Конфуций курит в сторонке).

# Уметь задавать вопросы

Да, это тоже немаловажно. Надо уметь правильно поставить вопрос, чтобы получить желаемое решение. Да, звучит банально, но это так.

Тебе никто не станет отвечать на вопрос типа: «а как на яваскрипте адронный коллайдер сделать?». Но если ты разделишь свой вопрос на несколько составляющих, шанс получить ответ хотя бы на один из них, значительно увеличивается.

Например, ты хочешь запилить интернет-магазин на ReactJS, но не знаешь как. Начни с малого, например с получения списка товаров. Тебе никто не станет объяснять как сделать ракету целиком. Сечёшь, да?

Также необязательно писать в поисковике «гугл как в реакт жс сделать пагинацию чтобы вот по кайфу было когда скроллишь подгружал информацию?», достаточно написать «react infinite scroll». А умение пользоваться гуглом набирается только с опытом. Странно, что в вакансиях не указывают этот пункт.

А как набраться этому опыту? Надо изучать английский и читать ответы из стэковерфлоу, запоминая фразы близко связанные с твоим ответом.

Ещё в Telegram есть специализированные чаты по языкам программирования и технологиям. В одной из своих статей, я составил список этих чатов. Ну а про Toster и Stackoverflow, думаю, писать не стоит.

# Практика

Самое важное при изучении какой-либо технологии — практика. От чтения книг, ты получишь намного меньше результата, чем от практики. Я только через год или даже полтора, стал понимать то, что написано в книгах по JS. Лишь только после практики, когда я сам столкнулся с тем, что было описано в этих книгах.

Главное, старайтесь следователь принципу «30% — теории и 70% — практики». Каждый раз, когда вы изучаете что-то, вспоминайте об этом принципе.

И следовательно, тут у тебя возникает вопрос (читать писклявым голосом и с дефектом речи): «А аткюдя брять ету пректекю?».

# Откуда брать практику?

Можешь уже не читать таким голосом и кстати, вопрос хороший. Не за что.

Так как я увлекаюсь UI-дизайном, для всех своих проектов я разрабатываю дизайн самостоятельно. И приведу тебе пример из своей практики. (не надо паниковать, что ты не шаришь в дизайне. Главное — фантазия).

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

  • Socket.IO — изучить работу с сокетами как на клиентской части, так и на серверной.
  • PugJS — часто встречал этот шаблонизатор в разных вакансиях, но никак не мог понять, зачем он нужен и как с ним работать.
  • Stylus — не знаю почему, но мне понравился этот препроцессор и я решил его включить в этот стек. Возможно из-за одной вакансии от Яндекса и CSSSR.
  • AngularJS — так как на тот момент я изучал данный фреймворк, было логично использовать его в этом проекте.
  • GulpJS — надо было понять, как работает сборщик проектов. Был горький опыт, а точней попытка изучить GruntJS, но в итоге остановился на GulpJS.
  • NodeJS — ну и не немного серверной разработки, чтобы работать с приемом и отправкой сообщений.

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

Ссылка на Github: https://github.com/Archakov06/ad-socketio-chat
Ссылка на кейс Behance: https://www.behance.net/gallery/44557731/Socketio-Chat

Итак, надеюсь тебе ясно о чем я хотел сказать, и к завершению этой статьи дам несколько советов по самой практике.

# Repeat it!

Попробуй повторите то же самое. Посмотри какие технологии ты бы хотел изучить, собери необходимый стек и начни пилить проект. Например:

  • Список задач (ToDo).
  • Очень простой интернет-магазин. Можно и без серверной части (кстати, я пилил курс по этой теме)
  • Список учеников / пациентов / клиентов с возможностью удалять, добавлять, редактировать их.

# Тестовые задания

Еще самая лучшая практика — тестовые задания от работодателей. Во-первых, это для тебя испытание и возможность узнать, на что ты способен. Во-вторых, практика и следовательно двойной опыт от собеседования и выполнения задания.

Иногда я проходил собеседования только ради практики (хоть и не нуждался в работе). Конечно, чаще меня не принимали на работу, но я утешал себя тем, что я практиковался...

Постоянно пробуй. Экспериментируй с разным стеком технологий и ЯП. Это даёт очень хороший опыт. Как говорил Конфуций: «Всего по немногу и дальше попрёт».