Разработка ПО имеет одни из самых высоких показателей отказов ATS в любой сфере. Проблема почти всегда в точности форматирования. Языки программирования должны указываться точно: «Python», а не «python», «Node.js», а не «NodeJS», и «Go» рядом с «Golang», поскольку оба встречаются в вакансиях. ATS-системы для инженеров также взвешивают индикаторы масштаба системы — количество пользователей, пропускную способность и объём данных, — поэтому включение этих чисел в пункты опыта заметно улучшает скоринг.
У вас 500+ коммитов на GitHub. Вы написали продакшн-код в трёх компаниях. А ATS по-прежнему отклоняет резюме. Проблема почти всегда в точности форматирования. Языки программирования, фреймворки и инструменты должны указываться точно так, как они называются: «Python», а не «python», «Node.js», а не «NodeJS», «Go» вместе с «Golang», поскольку оба варианта встречаются в объявлениях. ATS-системы для инженеров также взвешивают индикаторы масштаба системы — количество пользователей, пропускную способность, объём данных, — поэтому включение этих цифр в пункты опыта заметно улучшает скоринг.
Найм в разработке программного обеспечения имеет одни из самых высоких показателей ATS-отклонений в любой сфере. Причина не в нехватке квалифицированных кандидатов: проблема в том, что инженерные резюме, как правило, имеют специфические для способа написания разработчиками о своей работе проблемы форматирования и ключевых слов. Понимание этих паттернов меняет то, как вы представляете опыт.
Как реально работают ATS-системы для инженерных ролей
Большинство крупных технологических компаний используют Greenhouse, Lever или Workday в качестве ATS с кастомной конфигурацией для скрининга технических ролей. Инженерно-специфичные конфигурации добавляют существенный вес:
- Языкам программирования (точные названия важны)
- Фреймворкам и библиотекам
- Облачным платформам и сервисам
- Инструментам разработки и методологиям
- Индикаторам масштаба системы (пользователи, пропускная способность, объём данных)
Эти системы также всё активнее интегрируются с GitHub, где рекрутер может получить данные репозиториев как вторичный сигнал. Но основной скрининг по-прежнему текстовый, и этот текст — ваше резюме.
Форматирование технического стека: конкретика, которая важна
Обобщённые технические описания снижают ATS-скоринг для инженерных ролей чаще, чем в любой другой сфере. Каждый инструмент, язык и фреймворк должен называться точно так, как в технической документации и описаниях вакансий.
Названия языков — пишите точно:
- Python (не «python» — регистр важен в некоторых парсерах)
- JavaScript и TypeScript (не только «JS» и «TS» — включайте полное название хотя бы один раз)
- Go (включайте также «Golang», так как оба варианта встречаются в объявлениях)
- C++ (включайте и «C++», и «C Plus Plus», поскольку некоторые парсеры не справляются со специальными символами)
- Rust (не «Rust programming language» — просто Rust)
- Swift (убедитесь, что контекст ясно указывает на язык Apple, а не «swift» как прилагательное)
Называния фреймворков:
Всегда включайте экосистему рядом с названием фреймворка:
- «React (JavaScript)», а не просто «React», если подаёте на роли, где могут иметь в виду React Native
- «Next.js», а не «NextJS» — официальное написание включает точку
- «Node.js», а не «NodeJS» или «Node»
- «Express.js» или «Express» — оба широко используются и ATS-системы распознают оба
- «FastAPI» (Python), а не «fast API» — одно слово
- «Spring Boot», а не «SpringBoot» — два слова в официальной документации
- «Ruby on Rails» для фреймворка, «Rails» — приемлемое сокращение после первого упоминания
Облако и инфраструктура:
- AWS (Amazon Web Services) — включайте оба варианта при первом упоминании
- GCP (Google Cloud Platform) или «Google Cloud» — используются оба; включайте полное название один раз
- Azure (Microsoft Azure) — оба при первом упоминании
- EC2, S3, Lambda, EKS, RDS, DynamoDB — сервисы AWS пишутся заглавными буквами точно так, как написаны
- GKE (Google Kubernetes Engine), Cloud Run, BigQuery, Pub/Sub
- Azure Functions, Azure DevOps, AKS (Azure Kubernetes Service)
- Kubernetes (не только «k8s» — пишите «Kubernetes (k8s)», чтобы обе формы были найдены)
- Docker, Terraform, Helm, Ansible — точные названия, правильно написанные с заглавной
Номера версий: включать или нет?
Руководство по номерам версий зависит от технологии и роли.
Включайте номера версий, когда они сигнализируют об экспертизе в конкретном поколении технологии:
- React 18 (concurrent-функции отличаются от знания React 16)
- Python 3.11+ (async-функции отличаются от Python 2.x)
- Java 17 или Java 21 (LTS-версии сигнализируют о знании актуального enterprise Java)
- PostgreSQL 15 (функции партиционирования, логической репликации специфичны для версии)
- Kubernetes 1.28 (знание пути обновления сигнализирует об операционной глубине)
Опускайте номера версий, когда они очевидны или устарели:
- Не пишите «Python 2.7» для недавней работы — это сигнализирует о неактуальном Python
- Не пишите «React 15» — сигнализирует об отставании
- Не пишите «Node.js v10» — та же проблема
Практическое правило: включайте номера версий, когда они говорят что-то значимое о глубине или актуальности знаний. Опускайте, когда они устарели или не добавляют информации.
Форматируйте версии единообразно: «Python 3.11», «PostgreSQL 15», «Kubernetes 1.28». Не пишите «Python v3.11» или «Python>=3.11» — формат напоминает файлы требований, а не содержание резюме, и парсеры с ним работают непоследовательно.
GitHub и open source: как форматировать
URL GitHub должен присутствовать в разделе контактов как стандартная гиперссылка: «github.com/yourusername». Не пишите «Мой GitHub: github.com/yourusername» — приставка «Мой GitHub» лишняя, и некоторые парсеры извлекают текст приставки вместе с URL, производя неопрятные данные.
Для open source-вкладов включайте их в раздел опыта или выделенный раздел «Проекты»:
Что писать:
«Внёс 12 принятых PR в проект Django REST framework (github.com/encode/django-rest-framework), преимущественно по генерации OpenAPI-схем и оптимизации производительности».
Этот формат говорит ATS: вы знаете Django REST framework (попадание по ключевому слову), вы знаете OpenAPI (попадание по ключевому слову), у вас измеримая история вкладов (12 PR) и указана ссылка на верифицируемую публичную запись.
Что не писать:
«Активный участник GitHub» — ATS ничего специфичного не определяет и не оценивает.
Для собственных проектов указывайте технический стек явно:
«Создал редактор кода для совместной работы в реальном времени на React, WebSockets (Socket.io), Monaco Editor и бэкенде Node.js/Express, развёрнутый на AWS ECS. 340 звёзд на GitHub. (github.com/yourusername/project-name)»
Количество звёзд — сигнал доверия для рецензентов-людей. Список технологий — кластер ключевых слов для скоринга ATS.
Масштаб системы: как о нём писать
ATS-системы для инженеров придают дополнительный вес индикаторам масштаба. Инженер, работавший на масштабе 10 миллионов ежедневных активных пользователей, отличается от работавшего на 10 000, и ATS-скоринг для должностей старшего и основного инженера это отражает.
Пишите масштаб явно в пунктах:
- «Спроектировал распределённый слой кэширования, снизивший нагрузку на базу данных на 70% для сервиса, обрабатывающего 45M ежедневных запросов»
- «Перевёл монолитное приложение на микросервисную архитектуру; система теперь обрабатывает 2TB ежедневных событий с uptime 99.97%»
- «Руководил проектом оптимизации производительности, снизив p99 latency API с 1.2s до 180ms при 200K RPS»
Числа здесь нужны не только для читателей-людей. ATS определяет фразы вроде «45M ежедневных запросов», «2TB», «99.97% uptime» и «200K RPS» как индикаторы масштаба и взвешивает их соответственно для старших ролей.
Раздел навыков для инженерных резюме
Раздел навыков должен быть организован по категориям, а не как плоский список. Организованные разделы парсируются лучше и легче просматриваются рецензентами-людьми.
Рекомендуемая структура:
Languages: Python, Go, TypeScript, SQL, Bash
Frameworks: FastAPI, React, Next.js, gRPC
Databases: PostgreSQL, Redis, DynamoDB, Elasticsearch
Cloud & Infrastructure: AWS (EC2, Lambda, EKS, RDS), Terraform, Kubernetes, Docker
Tools: GitHub Actions, DataDog, PagerDuty, Confluence, Jira
Methodologies: Agile/Scrum, test-driven development (TDD), CI/CD, microservices architecture
Не перечисляйте каждый инструмент, которого вы когда-либо касались. Перечисляйте инструменты, по которым у вас достаточно опыта, чтобы разумно обсуждать их на интервью. Раздел навыков из 40 технологий без контекста выглядит как спам ключевых слов, и современные ATS-системы с ИИ-дополнениями скрининга отмечают несоответствие между плотностью ключевых слов и контекстными доказательствами в пунктах.
Правило: если технология есть в разделе навыков, она должна встречаться хотя бы в одном пункте в разделе опыта, показывающем, как вы её использовали.
Ключевые слова методологий, которые взвешивают инженерные ATS-системы
Помимо инструментов и языков, описания инженерных вакансий последовательно включают термины методологий, по которым ATS-системы проводят скоринг:
- Agile (и Agile/Scrum отдельно — нередко перечисляются отдельно)
- TDD (test-driven development) — пишите обе формы
- BDD (behavior-driven development)
- CI/CD (пишите именно так, а не только «continuous integration/continuous delivery»)
- DevOps
- SRE (site reliability engineering)
- System design
- Distributed systems
- Microservices
- Serverless
- Infrastructure as Code (IaC)
- Observability (отличается от «monitoring» в современной инженерной культуре)
- Code review
- Pair programming
Включайте те, которые точно описывают ваш способ работы. Для ролей в компаниях со зрелыми инженерными практиками (Google, Meta, Stripe, Airbnb и подобных) эти термины методологий несут значительный вес в ATS-скоринге, поскольку сигнализируют о соответствии тому, как работают эти команды.
Что должно быть в резюме
Раздел резюме для инженеров-программистов нередко либо пропускается, либо пишется как общий шаблон. Ни то ни другое не оптимально. Хорошо написанное резюме даёт ATS плотный кластер ключевых слов в начале документа, где вес скоринга наиболее высок.
Шаблон (адаптируйте под реальный опыт):
«Инженер-программист с 7-летним опытом в бэкенде и распределённых системах, специализирующийся на высокопроизводительных пайплайнах данных и проектировании API. Работал с Python, Go и PostgreSQL в масштабе в consumer-facing и B2B SaaS-продуктах. Опыт с инфраструктурой AWS (ECS, Lambda, RDS), Kubernetes-развёртываниями и CI/CD через GitHub Actions. В настоящее время нацелен на старшие бэкенд-роли в fintech или инфраструктуре данных».
Это резюме содержит: сигнал уровня (7 лет), специализацию (распределённые системы, пайплайны данных, проектирование API), языки (Python, Go), базу данных (PostgreSQL), облако (явно названные AWS-сервисы), развёртывание (Kubernetes), инструментарий (GitHub Actions) и таргетинг роли (старший бэкенд, fintech/инфраструктура данных).
Каждый термин в этом резюме — попадание по ключевому слову ATS. Написанное таким образом — конкретно, с квалификациями, с таргетингом — превосходит «Увлечённый инженер-программист с любовью к решению проблем» в ATS-скоринге в десятки раз.
Активность GitHub как вторичный сигнал
Некоторые ATS-платформы (особенно Greenhouse) имеют интеграции, извлекающие данные GitHub, когда кандидат даёт на это разрешение или когда URL профиля указан в заявке. Это по-прежнему вторично по отношению к тексту резюме, но стоит знать об этом.
Рекрутеры, использующие GitHub как сигнал, смотрят на: частоту вкладов (активность за последние 12 месяцев), качество репозиториев (задокументированные, протестированные, реальные проекты) и вклад в известные open source-проекты.
Оптимизировать GitHub за ночь невозможно. Но можно убедиться, что резюме ссылается на него правильно и что закреплённые репозитории содержат README с описаниями технологий — эти описания доступны для поиска по тексту и могут быть проиндексированы.
Для должностей staff и principal engineer ссылка на GitHub или техническое портфолио в разделе контактов ожидается. Для junior и middle — полезна, но не обязательна.
Запустите инженерное резюме через ATS CV Checker по конкретному описанию вакансии перед подачей. Инженерные описания вакансий точны в технических требованиях, и разрыв между текущим покрытием ключевых слов и тем, что требует роль, почти всегда устраняется менее чем за 30 минут.