Вся разработка веб-приложений и сайтов делится на frontend и backend. Первая — внешняя сторона, видимая пользователю, вторая — внутренняя архитектура сервиса и данных. Соответственно, за эти вопросы отвечают два разных специалиста (или несколько, если задача сложная).
Однако есть джедаи, которые могут в одиночку создать работоспособный интерфейс и спроектировать архитектуру. Их называют fullstack-разработчиками. Сколько зарабатывают такие универсалы и есть ли курсы, где их обучают?
Designed by karlyukav/freepik
Fullstack-developer (фулстэк-разработчик) — это специалист, который трудится над всеми этапами создания веб-приложения или сайта. На его плечах ответственность и за внешний вид продукта, и за её внутреннюю начинку, базы данных и взаимосвязь с интерфейсом. Кроме того, он нередко занимается системным администрированием, то есть следит за работоспособностью инфраструктуры приложения (серверов, ПО, периферией и т.д.).
Что он умеет:
Создать архитектуру и ядро сайта;
Разработать функционал на базе CMS (например, создание личного кабинета, каталога товаров, сортировки, поисковой системы и т.д.);
Сделать рабочий вариант дизайн-макета, сделанный дизайнером;
Протестировать сайт на работоспособность;
Мониторинг версий ядра и откат при необходимости;
Отслеживание и обновление баз данных.
Однако то, чем занимается fullstack-разработчик, зависит от конкретных компетенций и навыков. В ИТ-среде много скепсиса по поводу таких «людей-оркестров», потому что никто, даже самый продвинутый разработчик, не может все на свете изучить и освоить.
В итоге, получается 50 на 50: либо ты чуть более продвинутый бекенд, который немного подучил фронтенд, на уровне обычного верстальщика (чтобы кнопки работали и вкладки открывались), либо наоборот – хорошо знаешь, как работать с интерфейсами, а по архитектуре твой потолок – развернуть Node.js.
Скептики обычно возражают, что для простых проектов и таких знаний предостаточно. К тому же fullstack-разработчики обычно долго работают в больших командах над крупными проектами. Поэтому у них есть представление о полном цикле разработки. Ну а дальше, если при должном желании освоить все необходимые инструменты, то создать и вести сайт в одно лицо - дело техники.
К тому же рынок все больше требует от программистов универсальности: если бросить беглый взгляд на вакансии fullstack-разработчиков — они нужны буквально везде. При этом работодателей обычно не интересует, в какой области специализируется соискатель, ему важно, что именно он умеет делать и над какими проектами работал до этого.
Основная сфера деятельности – это веб-разработка, то есть создание сайтов. По старинке фулстеков ещё иногда называют веб-мастерами, поскольку в эпоху Web 1.0 с его простенькими интерфейсами написать сайт можно было в одно лицо, причем достаточно быстро.
Кроме того, fullstack-разработчик уже практически готовый тимлид. Он сам возглавить команду ИТ-специалистов, отвечая за организационную работу, дизайн и документацию. На самом деле такие специалисты нужны любой компании со штатом разработчиков и дизайнеров, ведь лучше, чтобы ею руководил более опытный сотрудник, разбирающийся во всех процессах.
Как уже было сказано, работодатель обычно обращает внимание на конкретные навыки будущего работника. И тут возможны варианты.
Если нужен специалист с уклоном в backend, обычно требуются знания:
Платформа Node.js;
Фреймворк Express.js;
Пакетные менеджеры npm, пряжа;
Веб-сокеты;
Понимание REST API;
Другие специализированные технологии.
Обратите внимание на конкретные языки программирования. Например, Java-разработчикам необходимо знать все (или почти все), что связано с этим языком, а Python-ориентированным — его инструменты и возможности.
Если кандидат больше знаком с фронтенд-разработкой, стек будет другим:
язык разметки HTML и язык стилей CSS;
Языки программирования JavaScript и TypeScript;
препроцессоры SASS и LESS;
библиотека JQuery;
бутстрап-фреймворк;
Angular/React/Vue.js;
технологии DOM, AJAX, JSON;
Навыки адаптивной и кроссбраузерной верстки.
Все без исключения fullstack-разработчики должны знать:
Git и сервис для хостинга проектов GitHub (желательно иметь там аккаунт с готовыми проектами);
Базы данных SQL и NoSQL, как ими пользоваться, а также язык запросов SQL для СУБД;
Навыки тестирования приложений и сервисов;
Парсинг готового кода (CodeReview);
Английский не ниже Intermediate;
Докер;
Алгоритмы и структура данных;
Шаблоны дизайна на разных языках.
Designed by ArthurHidden/freepik
Уже сейчас понятно, что универсальным программистом за одну ночь стать невозможно. Но к этому обязательно нужно стремиться, прокачивая как технические навыки, так и пресловутые soft-skills: умение работать в команде, управленческие навыки, тайм-менеджмент и т.д. В среднем до тимлида можно дорасти за 5-7 лет, но бывает по-разному.
Конечно, чтобы стать полноценным разработчиком, нужно начать с одного стека, а затем постепенно расширять набор инструментов. Да, все изучить невозможно, однако необходимо серьезно вникать во все производственные процессы и не ограничиваться одним узким набором знаний.
Этому ремеслу где-то обучают? Да, есть специальные онлайн-курсы. Но записываться стоит, если вы уже что-то знаете, умеете или успели поработать над какими-то проектами. В общем, такие курсы можно рассматривать как курсы повышения квалификации. Разумеется, не бесплатное. И прежде чем выкладывать кровно заработанное, обратите внимание на:
Функционал и содержание курсов – чему конкретно там учат и нужно ли это в вашей работе;
Можно ли освоить те же знания самостоятельно, например, по учебникам, на форумах или перенять у наставника;
Можно ли самому составить учебный план (например, освоить новый язык программирования или дополнительные инструменты);
Немаловажный момент - навыки тимбилдинга. Курсы должны строиться по тому же принципу, что и обычная работа в коллективе над одним проектом (распределение ролей и задач, прокачка лидерских качеств и т. д.).
Как правило, курсы для fullstack-разработчиков содержат базовую информацию по HTML, CSS, Git, фреймворкам и популярным базам данных.
Если в вакансии указывают fullstack, то подразумевают либо руководителя, либо сотрудника на удаленке. Во втором случае разработчика обычно нанимают под какой-то отдельный проект.
Ну а дальнейшая оплата труда будет зависеть от того, что конкретно умеет соискатель, насколько сложный и длительный проект, какие именно задачи будут перед ним стоять.
Можно сказать, одно: fullstack-разработчики всегда в дефиците и зарабатывают в среднем больше, чем узкие специалисты. В списке вакансий значатся суммы от 80 до 250 тысяч рублей, иногда выше. Однако большинство работодателей предпочитают не указывать зарплату, договариваясь о ней по итогам собеседования.
Плюсы:
Большая универсальность и больше предложений на рынке труда;
Более высокий уровень зарплаты;
Карьерный рост, возможность дорасти до тимлида или архитектора;
Постоянная прокачка системного мышления и профессиональных навыков.
Минусы:
Хуже знания в узких областях;
Перегруженность задачами и переработки;
Нередко отсутствие четкой зоны ответственности при работе;
Ответственность и постоянный контроль за работой других специалистов;