Frontend с нуля проигрывает не из-за HTML. Он проигрывает, когда вместо одного кабинета заказов человек год коллекционирует курсы и «ещё один фреймворк». Рекрутер открывает GitHub и видит пять лендингов без состояния. Ему нужно другое: форма, список, ошибка, адаптив, который не разъезжается, и умение объяснить, почему так.
Этот материал — про вход во frontend в 2026: какой минимум стека, какой один проект вместо десяти, как собрать резюме и куда откликаться. Без обещания оффера за квартал и без зарплатных медиан. Вилку смотрите по живым фильтрам в вакансиях frontend.
Коротко:
- Порядок: HTML/CSS, затем JavaScript, затем один фреймворк. React чаще встречается, Vue и Angular — если под них уже есть слоты, на которые пойдёте.
- Один кабинет с фильтрами, формой и состояниями сильнее портфолио из лендингов.
- TypeScript подключайте, когда JS уже не путает вас на собеседовании, а не «с первого дня, потому что так модно».
- В резюме — ссылка на демо и репозиторий, стек по факту проекта, честный список того, чего нет.
- Junior+remote узкий. Смотрите intern, верстальщика с JS, «frontend developer» без слова middle.
Что делает frontend на первой работе
Первый месяц — не «придумать дизайн-систему». Это верстка кабинета по макету, формы, валидация, запросы к уже существующему API, правки после QA, не сломать соседнюю страницу. Если вам интересны только анимации и не интересны состояния загрузки и ошибки — роль будет раздражать.
Frontend в продукте часто живёт в одном интерфейсе долго: кабинет, лендинг, админка. В аутсорсе чаще прыжки между макетами клиентов. На входе это не выбор «кто круче», это выбор, готовы ли вы читать чужой CSS и не переписывать его с нуля в первый спринт.
Не путайте роль с «умею Figma». Макет читать нужно. Рисовать с нуля — нет, если вы не идёте в дизайн. Не путайте и с fullstack: если API пишете вы же, это уже другая история — как стать fullstack без распыления. Чистый backend — путь backend.
С нуля, из вёрстки, из другой IT-роли
С нуля путь длиннее, чем обещают лендинги курсов. Реалистичный горизонт при 10–15 часах в неделю — полгода до вменяемого кабинета, не «оффер через 90 дней». Если можете 30 часов — быстрее, но только если часы идут в один проект, а не в пять интенсивов.
Если вы уже верстаете лендинги, ваш ход — добавить состояние: логин, список, фильтры, ошибка сети. Именно это отличает frontend-разработчика от верстальщика в глазах вакансии 2026. Если вы QA или поддержка — переведите опыт: вы уже видели, где интерфейс врёт пользователю. Соберите кабинет, который эти грабли закрывает, и ссылайтесь на это в письме.
Без артефакта не спасает ни сопроводительное, ни «очень хочу». Сначала работа, которую можно открыть. Как упаковать отсутствие трудовой: резюме без опыта и поиск работы без опыта.
Стек: что обязательно, что можно не трогать год
Откройте junior-вакансии и выпишите повторяющееся. Каркас, который чаще всего достаточен для первой роли:
- HTML и доступность на базовом уровне. Формы, кнопки, заголовки, не div вместо всего.
- CSS. Flex/Grid, адаптив, состояния. Не обязательно Tailwind в первый месяц, но если вакансии сплошь на утилитах — подключите в проекте.
- JavaScript. DOM, fetch, промисы, отмена запроса хотя бы на уровне «понимаю, зачем abort». Без этого фреймворк — декорация.
- Git. Ветка, осмысленный коммит, PR-описание.
- Один фреймворк. Чаще React. Карта: React roadmap. Vue/Angular — если вы целенаправленно идёте в команды с этим стеком.
- TypeScript. Когда JS уже пишете сами. Roadmap: TypeScript roadmap.
Можно отложить: Next.js как религия, микрофронты, GraphQL, анимационные библиотеки пачками, «свой UI-kit на 40 компонентов». Next имеет смысл, когда кабинет уже живёт и вакансии его просят — см. Next.js roadmap. Навыки по грейдам: что должен знать frontend.
90 дней: один кабинет вместо десяти курсов
- Дни 1–20. HTML/CSS: две страницы кабинета без фреймворка. Список, карточка, форма. Адаптив до узкой ширины телефона. Если сетка разъезжается — не переходите к React.
- Дни 21–45. JavaScript: те же страницы с данными из mock API или json-server. Фильтры, валидация, сообщение об ошибке, состояние загрузки.
- Дни 46–70. Перенос на React (или выбранный фреймворк). Маршруты, форма, список. TypeScript — если JS уже не путает. README: как запустить, что сделано, чего нет.
- Дни 71–90. Демо (GitHub Pages, аналог, любой стабильный хостинг), резюме, 15 точечных откликов, разбор тестовых.
Критерий готовности не «закончил модуль». Критерий: вы открываете демо, проходите сценарий «залогиниться → отфильтровать → отправить форму → увидеть ошибку валидации», и можете объяснить код без чтения Stack Overflow вслух. Если работаете полный день — растяните план, не выкидывайте этапы.
Пример 1. Учебный кабинет заказов
Вакансия: junior frontend, React, работа с макетами, Git, коммерческий опыт не обязателен.
Кабинет заказов. Список с фильтром по статусу, карточка заказа, форма создания, сообщения об ошибке и пустом списке. Авторизация учебная: мок, не прод-OAuth. Стек: React, TypeScript, CSS-модули, React Router. Демо и репозиторий в шапке README.
Сделано мной: состояния загрузки, валидация, адаптив, обработка 401 с редиректом на логин. Не сделано: реальные платежи, SSR, свои компоненты-дизайн-система, тесты. Это написано в README, чтобы не притворяться интернет-магазином.
Рекрутер за две минуты понимает уровень. «Интернет-магазин на миллион строк» без демо и с README из двух слов работает хуже. Честный объём — это сигнал, что на созвоне вы не развалитесь.
Пример 2. Сопроводительное на junior frontend
Вакансия: вёрстка кабинетов, React, макеты, Git.
Откликаюсь на junior frontend с React.
По вакансии в первый месяц нужно собирать экраны кабинета по макету и не ломать состояния форм. Собрал учебный кабинет заказов: список, фильтры, форма, обработка ошибок. Стек: React, TypeScript. Демо и код: [ссылки]. В README указал, чего нет: авторизация настоящая и тесты.
Коммерческих проектов в команде не было. На созвоне могу разобрать компонент формы. Готов к тестовому 2–4 часа в том же формате, что в объявлении.
Каркас письма без воды: письмо без опыта. Короткая версия в поле комментария — там же по формуле «роль + факт + ссылка + следующий шаг».
Резюме и портфолио: ссылки, которые открывают
В шапке: роль Junior frontend, город/удалёнка как есть, ссылка на демо, ссылка на репозиторий. Не пять соцсетей. В блоке проекта — задача, что сделали вы, стек, ограничение. Не «адаптивная вёрстка» как единственная пуля.
Не кладите в skills то, чем пользовались один вечер. Next, Redux, GraphQL без следа в репозитории на собеседовании становятся ловушкой. Полный разбор: резюме frontend-разработчика, типичные дыры — ошибки в резюме. Перед массовой рассылкой прогоните файл в разборе CV.
Макет в портфолио лучше один, доведённый, чем галерея. Если демо падает — вы сами закрыли воронку. Проверяйте ссылку с телефона и в инкогнито.
Куда откликаться и чего избегать
Ищите формулировки junior frontend, intern, trainee, sometimes «верстальщик» с JS в описании. Читайте задачи. Если ждут сразу middle-архитектуру, дизайн-систему и менторство джунов — это не ваш слот. Каталог: вакансии frontend, плюс junior-слоты вообще.
Удалёнка без опыта бывает, но реже офиса и гибрида. Не отфильтровывайте все города заранее, если вам важна первая роль, а не формат. Про remote-вход: как найти удалённую работу.
Тестовое на выходные в объёме «сделайте клон сервиса» — красный флаг. Короткое тестовое по брифу — норма. Мошеннические «оплатите доступ к практике» отсекайте сразу: проверка вакансии.
Зарплату не выдумывайте. Соберите вилку по фильтрам роли, грейда и формата в каталоге и на скрининге называйте коридор. Как отвечать: ожидания по зарплате.
Собеседование frontend: блоки, а не весь интернет
Готовьте по вакансии: JS (замыкания, this, промисы — в том объёме, который светится в описании), CSS (специфичность, flex), фреймворк (состояние, ключи в списках, когда memo не нужен), живой код небольшой формы. Не учите «все вопросы с GitHub-списков» вместо разбора своего кабинета.
Живой код часто проще, чем кажется: собрать список и форму, не написать идеальный алгоритм. Думайте вслух, спрашивайте про край. Поведенческий блок тот же, что везде: конфликт в команде, ошибка на проде учебного проекта, как принимали фидбек. Разбор блоков: что спрашивают на собеседовании frontend и общий контур вопросов на собеседовании.
Типичные ошибки входа, которые сжигают месяцы
Первая: новый курс каждый раз, когда в кабинете появляется трудность. Трудность — это и есть работа. Вторая: портфолио из лендингов агентства шаблонов. Их видно сразу, и разговаривать не о чем. Третья: десять библиотек в skills и один репозиторий с create-react-app по умолчанию. Четвёртая: отклик на middle, потому что junior «мало платят» — вилку вы всё равно не знаете, пока не собрали её по фильтрам каталога.
Пятая ошибка — бесконечный перфекционизм дизайна. Учебный кабинет может быть визуально скромным. Состояния, адаптив и честный README важнее теней. Шестая — демо, которое открывается только у вас локально. Проверьте ссылку с телефона и из инкогнито в день отклика. Седьмая — сопроводительное про «динамично развивающуюся команду» без названия роли. Восьмая — молчание после тестового: короткое «отправил, вот ссылка, готов ответить на вопросы» нормально, третье сообщение через день — нет.
Если две недели откликов без ответа, не меняйте фреймворк. Снимите скрин своего демо глазами рекрутера: понятно ли за 30 секунд, что это кабинет, а не лендинг? Есть ли в README запуск и ограничения? Совпадает ли заголовок резюме с вакансией? Этот разбор дешевле нового интенсива. Как упаковать файл целиком: как составить резюме.
Частые вопросы
Достаточно ли HTML/CSS без JavaScript?
Для роли верстальщика иногда да. Для frontend-разработчика в 2026 почти нет. Без JS вы не закроете состояния и запросы. Если JS пугает, это не повод вечно сидеть в вёрстке — это повод учить его на том же кабинете.
React, Vue или Angular?
Тот, который в ваших целевых вакансиях. Если не знаете рынок — React чаще как общий вход. Два фреймворка до первого проекта — распыление.
Нужен ли дизайн?
Нужно собирать по макету и не игнорировать отступы. Не нужно становиться дизайнером. Учебный кабинет может быть визуально скромным, если состояния и адаптив честные.
Что делать, если все вакансии хотят коммерческий опыт?
Искать intern/trainee, стажировку, соседние формулировки, усиливать демо. Не писать middle. Смотреть стажировки и не путать их с бесплатной вечной работой.
Стоит ли учить Next.js сразу?
После того как кабинет на React живёт. Next не маскирует слабый JS. Если вакансии его требуют — добавьте тонкий слой, не переписывайте портфолио ради галочки.
Можно ли собирать проект полностью нейросетью?
Как ускоритель — да. Как единственный автор, которого вы не можете объяснить — нет. На созвоне спросят «почему так», и модель за вас не ответит.
Что сделать сейчас
Откройте пять frontend-вакансий уровня junior. Выпишите стек и первую задачу месяца. Сегодня начните одну страницу кабинета без фреймворка: список и форма. Не новый курс.
Когда появится демо, соберите резюме вокруг него и одно короткое письмо. Проверьте файл в разборе резюме, откликнитесь точечно. Если через две недели тишина — чините кабинет и README, а не добавляйте третий фреймворк.