Аватарка пользователя Сергей Фегон
Сергей Фегон

Какие инструменты изучить, чтобы перейти из джунов в миддлы на примере Frontend и NodeJS

Рассказываем, как перейти из джуниора на позицию миддла, что для этого нужно знать и изучать, на примере Full-Stack разработчиков.

1201

Всем привет. С вами Сергей Фегон, CTO/Технический директор в компании заказной разработки сложных web и мобильных приложений WebSailors. Также я ментор начинающих web-разработчиков и преподаватель в онлайн-школах Synergy Academy (курс “Профессия Frontend-разработчик”) и Otus (Курс “CTO / Технический директор”).

Мой блог, где я пишу больше мыслей о сфере IT и web-разработке:

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

Даже эти трактовки довольно субъективны. В каждой компании оценивают по-своему. Где-то пытаются натянуть грейды на временные рамки: условно, junior до года, middle 1-3 года, senior – 3 и более лет.

Такие способы оценки вызывают много вопросов. Человек может за 2 года на реальном проекте попасть в пекло сложных задач, а может 5 лет просидеть, раскрашивая кнопочки и двигая пиксели.

С моей точки зрения, как нанимающего менеджера с огромным опытом, оценивать специалистов нужно по компетенциям – формально описанным требованим к личностной способности специалиста решать определенный класс профессиональных задач на основе его знаний, умений и навыков. Компетенции близки к навыкам (skills), но немного шире. Опыт в месяцах и годах вторичен.

Конечно, специалист, работающий 1 месяц, не может претендовать на грейд мидла, так как за это время невозможно набраться достаточного опыта. Однако некоторые онлайн-школы утверждают, что мидлом можно стать вообще без коммерческого опыта, только после их обучения на псевдореальных проектах. Ну, оставим это на их совести.

В каждой компании есть свой требуемый набор навыков и компетенций для той или иной должности, а так же для грейда. Например, остановимся на так хорошо знакомых мне Full-Stack разработчиках в стеке React, NodeJS.

Для Junior-специалиста будет достаточно хорошего уверенного знания JavaScript, проверяемого на собеседовании, а также вёрстки. Базовое знание React (компоненты, хуки, контекст) и ExpressJS (роуты, контроллеры, миддлвари, базовое умение работать с PostgreSQL или MongoDB) и несколько пет-проектов на данных технологиях, ну и понимание клиент-серверного взаимодействия, HTTP (запросы, ответы, основные методы, статус-коды, заголовки).

Иногда требования могут немного меняться, в зависимости от текущей ситуации и потребностей в проектах. Такого специалиста практически нереально продать на outstaff, в продуктовой разработке производительность и качество работы такого специалиста тоже “хромает”, поэтому спрос на них на рынке труда небольшой. А предложение огромно, благодаря многочисленным IT-школам, обещающим золотые горы и высокие зарплаты сразу после окончания базовых трехмесячных курсов.

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

Итак, как же получить заветный грейд Middle и занять свое место среди опытных специалистов:

  1. Пройти курсы “От Junior до Middle” и надеяться, что компании поверят в мидла после курсов без коммерческого опыта;
  2. Написать в резюме, что ощущаете себя мидлом и все субъективно.
  3. Совместить реальную работу в компании или на фрилансе с курсами повышения квалификации или самообразованием

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

Умение решать практические задачи в своем стеке. Для фронтенда – написать переиспользуемый компонент, собрать UI, руководствуясь принятым на рынке лучшим практикам, правильно спроектировать Redux-стор, задуматься о быстродействии своего решения, удобстве для пользователя и читаемости кода. Для бэкенда – это спроектировать слой данных в БД, необходимый для решения задачи, написать правильные Application Programming Interaces (API), сложные запросы к БД, индексы и бизнес-логику. Лучшие инструменты здесь – это фундаментальные книги, технические статьи и опыт решения подобных задач.

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

Нужно хорошо изучить современные сборщики, такие как Webpack, Rollup, Vite. Научиться писать тесты для своего кода. Тут вам поможет Jest, Playwright, Cypress, изучить и научиться пользоваться SSR (Server Side Rendering), c помощью такого фреймворка как NextJS и PWA (Progressive Web Applications).

На бэкенде полезно изучить асинхронное выполнение кода и Event Loop (который вы должны были изучить еще джуниоров в рамках изучения JS), изучить основы Linux и работы с командной строкой. Углубить знания реляционных и нереляционных баз данных (PostgrSQL, MongoDB, Redis). А в некоторых случаях могут потребоваться знания и других типов СУБД: графовые, time series, и т.д.

Разобраться в работе ORM (TypeORM, Knex, Sequelize, Prizma). Также нужно изучить наиболее популярные фреймворки NestJS и FastifyJS. И пригодятся брокеры сообщений, такие как RabbitMQ и Kafka.

Путь из джуниора в мидлы сложен, но дорогу осилит идущий. IT – это высокоинтеллектуальная сфера, требующая от человека постоянного развития его навыков. Но так же не хотелось бы забывать о soft skills. Навыки коммуникации, работы в команде и другие личные качества не менее важны.

Зачастую компании предпочтут нанять человека с хорошими софт-скиллами, но пробелами в технических скиллах, которые могут быть наверстаны обучением, чем токсичного и замкнутого “компьютерного гения”, который предпочитает не видеть никого, кроме своего монитора. Софты развить гораздо сложнее.

1201