Антон Ларичев

Введение
Резюме разработчика — это не просто список технологий. Это маркетинговый документ, который должен за 6–10 секунд убедить рекрутера или техлида пригласить вас на собеседование. В 2025 году конкуренция за позиции junior и middle выросла, а большинство компаний используют ATS-системы (Applicant Tracking System), которые автоматически фильтруют CV по ключевым словам. В этой статье разберём, как составить резюме с нуля: структуру, формулировки, примеры кода в портфолио и типичные ошибки.
Структура резюме
Классическое резюме разработчика состоит из шести блоков, расположенных в порядке убывания важности:
- Контакты и заголовок (роль).
- Краткое резюме (summary) на 2–3 предложения.
- Технологический стек.
- Опыт работы или пет-проекты.
- Образование и курсы.
- Ссылки на GitHub, LinkedIn, личный сайт.
Для junior без коммерческого опыта блок с проектами поднимается выше опыта работы. Для senior — наоборот, опыт идёт первым, а стек сокращается до 8–12 ключевых технологий.
Заголовок и контакты
Заголовок — это точная роль, на которую вы претендуете. Не пишите «программист» или «IT-специалист» — рекрутер не поймёт, на какую вакансию вас рассматривать. Используйте формулировки из описания вакансии.
Фронтенд-разработчик (React, TypeScript)
Email: ivan@example.com | Telegram: @ivan_dev
GitHub: github.com/ivan-dev | Город: Москва (готов к удалёнке)
Не указывайте дату рождения, семейное положение и фото — в IT это считается избыточным и иногда мешает прохождению ATS.
Summary: первые три предложения
Это самый важный блок. Рекрутер прочитает только его, если ничего не зацепит — перейдёт к следующему кандидату. Формула: роль + опыт + ключевые технологии + измеримый результат.
Плохо:
Я молодой и амбициозный разработчик, хочу развиваться в IT и приносить пользу компании.
Хорошо:
Frontend-разработчик с опытом 1,5 года на React и TypeScript.
Собрал e-commerce SPA с 12 000 MAU, ускорил FCP с 3,2 до 1,1 секунды.
Ищу позицию middle в продуктовой команде с фокусом на performance.
Конкретные цифры и технологии работают лучше абстрактных эпитетов.
Блок технологий
Группируйте стек по категориям, а не валите всё в одну строку. Это улучшает читаемость и помогает ATS правильно распарсить ключевые слова.
**Языки:** TypeScript, JavaScript, Python
**Фронтенд:** React 19, Next.js 15, Redux Toolkit, TanStack Query
**Стилизация:** Tailwind CSS, CSS Modules, Styled Components
**Тестирование:** Jest, Vitest, Playwright
**Инструменты:** Git, Docker, Vite, Webpack, GitHub Actions
Не пишите технологии, которые вы видели один раз в туториале. На собеседовании по каждому пункту могут задать вопрос.
Опыт и проекты
Для каждой позиции или проекта используйте формат STAR: Situation, Task, Action, Result. На практике это сводится к трём-пяти буллетам, где каждый начинается с глагола действия и содержит результат.
Пример блока для коммерческого опыта:
### Frontend-разработчик, ООО «Шоп» (06.2023 — наст. время)
- Разработал модуль корзины на React + Zustand, увеличил конверсию на 8%.
- Перевёл проект с Webpack на Vite, время холодной сборки упало с 45 до 6 секунд.
- Внедрил Playwright для E2E-тестов критичных сценариев оплаты.
- Менторил двух стажёров, проводил код-ревью в команде из 5 человек.
Для пет-проектов структура аналогичная, но добавляйте ссылку на репозиторий и демо:
### Pet-проект: трекер привычек (github.com/ivan/habits)
- Стек: Next.js 15, PostgreSQL, Drizzle ORM, NextAuth.
- Реализовал серверные экшены и оптимистичные обновления.
- Покрытие тестами 78%, деплой на Vercel с CI на GitHub Actions.
Пример фрагмента кода для портфолио
Если прикладываете ссылку на GitHub, README должен показывать качество кода. Пример хорошо документированной функции:
// Дебаунс для поискового поля, чтобы не дёргать API на каждое нажатие
export function debounce<T extends (...args: never[]) => void>(
fn: T,
delayMs: number,
): (...args: Parameters<T>) => void {
let timerId: ReturnType<typeof setTimeout> | null = null;
return (...args: Parameters<T>) => {
// Сбрасываем предыдущий таймер при новом вызове
if (timerId !== null) clearTimeout(timerId);
timerId = setTimeout(() => fn(...args), delayMs);
};
}
Такой код в портфолио лучше десяти строк в резюме «знаю TypeScript».
Образование и курсы
Если у вас профильный диплом — указывайте вуз, факультет, год. Если непрофильный — достаточно одной строки. Курсы перечисляйте только релевантные: с проектами, сертификацией или известной школой.
**Образование**
- МГТУ им. Баумана, ИУ-7, бакалавр, 2024
- PurpleSchool: продвинутый React, 2024
Не перечисляйте десять трёхчасовых курсов — это сигнализирует о поверхностности.
Адаптация под ATS
ATS-системы парсят текст и сравнивают его с описанием вакансии. Чтобы пройти фильтр:
- Сохраняйте резюме в PDF, но без сложных таблиц и колонок.
- Используйте те же формулировки, что в вакансии: «React» вместо «реакт», «CI/CD» вместо «непрерывная интеграция».
- Не прячьте ключевые слова белым шрифтом — современные ATS это видят и отклоняют резюме.
- Один шрифт, чёрный текст, минимум графики.
Частые ошибки
- Объём больше двух страниц для junior и middle. Senior может позволить себе три, но не больше.
- Список «знаю всё»: HTML, CSS, JS, React, Vue, Angular, Node, Go, Rust, Python. Это вызывает недоверие.
- Размытые формулировки: «участвовал в разработке», «помогал команде». Кто конкретно что сделал — непонятно.
- Отсутствие цифр. «Ускорил приложение» против «снизил LCP с 4,1 до 1,8 секунды» — разница огромна.
- Орфографические ошибки. Прогоните текст через любой проверочный сервис.
- Ссылка на пустой GitHub. Лучше не указывать, чем показать профиль без коммитов за два года.
- Креативные шаблоны с тремя колонками и иконками. ATS их не понимает.
Заключение
Резюме разработчика — это итерационный документ. Первая версия никогда не идеальна: отправляйте, собирайте обратную связь, переписывайте. Адаптируйте summary и порядок технологий под каждую вакансию: это занимает 10 минут, но кратно повышает отклик. Помните, что цель резюме — не рассказать о себе всё, а получить приглашение на собеседование. Всё остальное вы покажете на интервью и тестовом задании.






Комментарии
0