Разработчик C++: должностная инструкция, обязанности и вопросы для собеседования
Набор для найма разработчика C++: должностные обязанности с долями времени, компетенции, вопросы для собеседования с картой оценки, текст вакансии, должностная инструкция в Word и план испытательного срока.
Раздел 1 из 11
Зачем нужна эта должность
Разработчик C++ создаёт и развивает программные компоненты, которые решают задачи бизнеса и надёжно работают в составе продукта или внутренней системы. Он превращает требования в код, проверяет его и помогает поддерживать качество решения.
Когда пора нанимать
Нанимайте разработчика C++, когда компании нужно создавать или развивать продукт на C++, а текущая команда не успевает выполнять задачи без ущерба для сроков и качества. Роль также нужна, если поддержка и развитие существующего кода регулярно отвлекают руководителей или других специалистов.
Раздел 2 из 11
Должностные обязанности разработчика C++
Из чего состоит рабочая неделя. Доли времени показывают, на что человек будет тратить больше всего сил, а что останется фоном.
Разработка функциональности
40 %Реализует задачи по согласованным требованиям и проектным решениям. Передаёт готовый код, который проходит проверку и соответствует критериям приёмки.
Проектирование решений
15 %Разбирает требования, оценивает варианты реализации и согласует технические решения с командой. Уточняет риски и зависимости до начала разработки.
Тестирование и отладка
20 %Проверяет собственные изменения, находит и исправляет ошибки. Добавляет или обновляет тесты, подтверждающие корректную работу функциональности.
Поддержка кода
15 %Разбирает дефекты и технические проблемы, улучшает существующий код без нарушения его работы. Документирует важные особенности и ограничения решения.
Работа с командой
10 %Участвует в обсуждении задач, проверке кода и планировании работ. Своевременно сообщает о блокерах и передаёт коллегам необходимый контекст.
Раздел 3 из 11
Компетенции разработчика C++ и как их проверить
Всего 8, обязательных 4. Уровень: 1 базовый, 2 уверенный, 3 опытный, 4 эксперт.
Язык C++
НавыкОбязательноКак проверить: Попросите объяснить и улучшить небольшой фрагмент кода с использованием ключевых возможностей C++.
3 из 4 · опытныйОтладка программ
НавыкОбязательноКак проверить: Предложите разобрать пример с ошибкой и описать последовательность поиска причины.
2 из 4 · уверенныйАлгоритмы и структуры данных
НавыкОбязательноКак проверить: Дайте небольшую задачу и попросите объяснить выбор алгоритма и его сложность.
2 из 4 · уверенныйКонтроль версий
НавыкОбязательноКак проверить: Попросите описать рабочий процесс с ветками, изменениями и разрешением конфликта.
2 из 4 · уверенныйМодульное тестирование
НавыкКак проверить: Попросите составить тесты для функции и объяснить, какие случаи они покрывают.
2 из 4 · уверенныйЧтение чужого кода
НавыкКак проверить: Дайте незнакомый фрагмент кода и попросите кратко объяснить его поведение.
2 из 4 · уверенныйКомандное взаимодействие
КачествоКак проверить: Попросите привести пример согласования технического решения или передачи блокера команде.
2 из 4 · уверенныйОтветственность за результат
КачествоКак проверить: Обсудите пример задачи, где возникла проблема, и выясните, как кандидат довёл работу до результата.
2 из 4 · уверенный
Раздел 4 из 11
KPI разработчика C++: показатели работы
По ним вы поймёте, что человек справляется. Цели подставьте свои: модель предлагает рамку, а не цифры.
Выполнение задач
Задачи приняты по согласованным критериям и срокам
- Период
- Каждый месяц
- Откуда
- Учёт задач и результаты приёмки
Дефекты в изменениях
Ошибки, связанные с изменениями, выявляются и исправляются в согласованные сроки
- Период
- Каждый месяц
- Откуда
- Учёт дефектов и история изменений
Покрытие тестами
Для изменений добавлены или обновлены необходимые автоматические тесты
- Период
- Каждый месяц
- Откуда
- Результаты проверок и история изменений
Качество оценки задач
Оценки и риски сообщаются заранее, существенные отклонения объяснены
- Период
- Каждый квартал
- Откуда
- Оценки задач, фактические сроки и обсуждения с командой
Раздел 5 из 11
Этапы отбора
Этап 1: Первичное интервью
Уточнить опыт разработки на C++, задачи кандидата и соответствие ожиданий роли.
- Кто проводит
- Рекрутер
- Длительность
- 30 мин
Этап 2: Техническое интервью
Проверить знание C++, алгоритмов, структур данных, отладки и контроля версий на примерах из опыта и рабочих задачах.
- Кто проводит
- Технический руководитель
- Длительность
- 1 ч
Этап 3: Практическое задание
Оценить качество решения, тестирования и работы с существующим кодом на небольшой практической задаче.
- Кто проводит
- Разработчик C++
- Длительность
- 1 ч 30 мин
Этап 4: Финальная встреча
Обсудить взаимодействие в команде, ответственность за результат и рабочие ожидания.
- Кто проводит
- Руководитель команды
- Длительность
- 30 мин
4 этапа, около 3 ч 30 мин живого общения с кандидатом.
Раздел 6 из 11
Вопросы для собеседования с разработчиком C++
Задавайте вопросы по порядку и ставьте оценку сразу. Вес показывает, какие ответы важнее для решения.
- Язык C++вес 5
Вопрос 1: Расскажите о задаче, где вам пришлось использовать сложные возможности C++. Как вы выбрали подход и каких ошибок старались избежать?
Хороший ответ
Называет конкретную задачу и объясняет выбор возможностей языка с учётом владения памятью, времени жизни объектов, типов и читаемости. Может разобрать компромиссы и привести детали реализации.
Тревожный ответ
Описывает только общие знания или перечисляет возможности языка без примера. Не может объяснить поведение своего кода или выбор подхода.
- Отладка программвес 5
Вопрос 2: Расскажите о сложном дефекте, который вы нашли и исправили. Как вы сузили область поиска и проверили результат?
Хороший ответ
Последовательно описывает воспроизведение проблемы, сбор данных, проверку гипотез и локализацию причины. Объясняет, как убедился в исправлении и проверил связанные сценарии.
Тревожный ответ
Рассказывает, что менял код наугад или сразу переписал компонент. Не может назвать причину дефекта и способ проверить исправление.
- Алгоритмы и структуры данныхвес 5
Вопрос 3: Опишите задачу, для которой вы выбирали алгоритм или структуру данных. Какие варианты рассматривали и почему остановились на выбранном?
Хороший ответ
Объясняет свойства входных данных, сравнивает варианты и связывает выбор со сложностью по времени и памяти. Может назвать ограничения решения и случаи, где оно не подходит.
Тревожный ответ
Выбирает решение без объяснения сложности и ограничений либо не может описать, как оно работает на граничных случаях.
- Контроль версийвес 4
Вопрос 4: Расскажите, как вы вели изменения в командном проекте с помощью системы контроля версий. Как разбирались с конфликтом или неудачным изменением?
Хороший ответ
Описывает понятные коммиты, работу с ветками и проверку изменений перед интеграцией. При конфликте разбирает смысл правок, согласует решение и проверяет итог.
Тревожный ответ
Не может описать собственный рабочий процесс, решает конфликты механически или не проверяет, что после объединения изменений проект собирается и работает.
- Модульное тестированиевес 3
Вопрос 5: Расскажите о модуле, для которого вы писали модульные тесты. Что именно проверяли и как выбирали граничные случаи?
Хороший ответ
Приводит конкретные проверки ожидаемого поведения, включая граничные условия и ошибки. Объясняет, как тесты помогли обнаружить регрессию или упростили изменение кода.
Тревожный ответ
Сводит тестирование к проверке одного успешного сценария или считает, что достаточно убедиться в сборке программы.
- Чтение чужого кодавес 3
Вопрос 6: Вспомните случай, когда вам нужно было разобраться в незнакомом коде. С чего вы начали и как проверили, что правильно поняли его поведение?
Хороший ответ
Описывает поэтапное изучение структуры, точек входа, зависимостей и тестов. Проверяет понимание запуском кода, трассировкой или небольшим безопасным экспериментом.
Тревожный ответ
Сразу предлагает переписать всё целиком, не выяснив назначение компонентов, либо делает выводы по отдельным фрагментам без проверки поведения.
- Командное взаимодействиевес 2
Вопрос 7: Расскажите о случае, когда для решения технической задачи вам потребовалось договориться с коллегами. Как обсуждали варианты и пришли к решению?
Хороший ответ
Приводит конкретный пример, ясно излагает свою позицию, выслушивает доводы коллег и фиксирует договорённости. Может объяснить, как команда проверила выбранное решение.
Тревожный ответ
Описывает спор как борьбу за правоту, обесценивает вклад коллег или не может рассказать, как было принято общее решение.
- Ответственность за результатвес 2
Вопрос 8: Расскажите о задаче, в которой после вашей реализации обнаружилась проблема. Как вы действовали и довели работу до результата?
Хороший ответ
Открыто признаёт свою роль, оценивает влияние проблемы, сообщает заинтересованным коллегам и организует исправление. Описывает проверку результата и меры, снижающие риск повторения.
Тревожный ответ
Перекладывает ответственность, скрывает проблему или ограничивается исправлением без проверки последствий и информирования команды.
Поставьте оценки по ходу собеседования, итог посчитаем с учётом веса вопросов.
Раздел 7 из 11
Риски найма
Риск
Кандидат знает синтаксис C++, но не понимает время жизни объектов, управление ресурсами и последствия выбора решений.
Как снизить
На техническом интервью попросить разобрать конкретный фрагмент кода и объяснить поведение объектов, владение ресурсами и возможные ошибки.
Риск
Кандидат решает задачу без оценки сложности и не учитывает ограничения по времени или памяти.
Как снизить
Дать задачу с несколькими вариантами решения и попросить сравнить их сложность и применимость к разным входным данным.
Риск
Кандидат не умеет системно находить дефекты и полагается на случайные изменения кода.
Как снизить
Предложить воспроизводимый дефект и попросить вслух описать план диагностики, гипотезы и проверку исправления.
Риск
Кандидат слабо работает с командными изменениями и допускает ошибки при интеграции кода.
Как снизить
Обсудить реальные примеры работы с ветками и конфликтами, а в практическом задании оценить историю изменений и проверку результата.
Раздел 8 из 11
Готовый текст вакансии
Разработчик C++
В [название компании] вы будете разрабатывать и поддерживать программные решения на C++, проверять качество изменений и вместе с командой доводить задачи до готового результата.
Обязанности
- Разрабатывать функциональность на C++ по требованиям и согласованному плану.
- Проектировать технические решения с учётом архитектуры, надёжности и возможности дальнейшей поддержки.
- Писать и поддерживать автоматические тесты для проверяемой функциональности.
- Проводить отладку, находить причины дефектов и исправлять их.
- Поддерживать существующий код: устранять ошибки, улучшать читаемость и снижать технические риски.
- Оценивать объём и сроки задач, сообщать о рисках и изменениях оценки.
- Обсуждать решения и изменения с коллегами, участвовать в проверке кода.
Требования
- Опыт разработки на C++ и понимание основных возможностей языка.
- Навык проектирования и реализации программных компонентов по требованиям.
- Умение находить и исправлять ошибки с помощью отладчика и анализа кода.
- Опыт написания тестов и понимание роли автоматической проверки.
- Умение оценивать задачи, декомпозировать работу и сообщать о рисках.
- Навык командной работы и обсуждения технических решений.
Условия
- Оплата: [вилка зарплаты].
- График: [график].
- Задачи и ожидаемые результаты согласуются с руководителем.
- Предоставляем необходимые для работы доступы и технические средства.
Раздел 9 из 11
Должностная инструкция разработчика C++
Проект документа. Перед утверждением сверьте с вашими внутренними правилами.
Должностная инструкция
Разработчик C++
1. Общие положения
- 1.1.Разработчик C++ относится к категории специалистов.
- 1.2.Назначается на должность и освобождается от неё распорядительным документом работодателя.
- 1.3.Подчиняется непосредственному руководителю, определённому организационной структурой.
- 1.4.Квалификационные требования устанавливаются работодателем с учётом сложности задач и подтверждённых навыков кандидата.
2. Работник должен знать
- 2.1.Возможности и ограничения используемой версии C++.
- 2.2.Принципы проектирования программных компонентов и взаимодействия между ними.
- 2.3.Подходы к написанию, запуску и анализу автоматических тестов.
- 2.4.Методы отладки и поиска причин дефектов.
- 2.5.Правила работы с исходным кодом, изменениями и проверкой кода, принятые в компании.
- 2.6.Порядок оценки задач, фиксации прогресса и эскалации рисков.
3. Должностные обязанности
- 3.1.Осуществляет разработку и изменение программной функциональности на C++ в соответствии с согласованными требованиями.
- 3.2.Проектирует технические решения и согласует существенные изменения с руководителем и участниками команды.
- 3.3.Обеспечивает проверяемость изменений, разрабатывает и поддерживает автоматические тесты в пределах своей зоны ответственности.
- 3.4.Проводит отладку, устанавливает причины выявленных дефектов и выполняет исправления.
- 3.5.Обеспечивает поддержку закреплённых программных компонентов, включая исправление ошибок и улучшение сопровождаемости кода.
- 3.6.Оценивает задачи, декомпозирует их при необходимости и своевременно сообщает руководителю об отклонениях, рисках и блокирующих обстоятельствах.
- 3.7.Участвует в командном обсуждении решений и проверке изменений коллег в установленном порядке.
4. Права
Работник имеет право:
- 4.1.Запрашивать у руководителя и коллег требования, данные и доступы, необходимые для выполнения задач.
- 4.2.Предлагать варианты реализации и улучшения программных компонентов.
- 4.3.Сообщать о технических рисках, дефектах и препятствиях, влияющих на сроки или качество работы.
- 4.4.Участвовать в обсуждениях требований, архитектуры и планирования задач.
- 4.5.Вправе запрашивать обратную связь по результатам работы и уточнение критериев приёмки.
5. Ответственность
Работник несёт ответственность в пределах, установленных трудовым, гражданским и административным законодательством Российской Федерации:
- 5.1.За качество и соответствие согласованным требованиям выполненных изменений в пределах своей зоны ответственности.
- 5.2.За своевременное информирование о рисках, блокерах и изменении оценки задач.
- 5.3.За обоснованность оценок и добросовестное выполнение согласованных работ.
- 5.4.За сохранность предоставленных доступов и соблюдение внутренних правил работы с кодом и данными.
6. Взаимодействие
- 6.1.С руководителем взаимодействует по приоритетам, требованиям, оценкам, срокам и эскалации рисков.
- 6.2.С разработчиками взаимодействует при проектировании решений, проверке кода и совместном устранении дефектов.
- 6.3.С тестировщиками взаимодействует по воспроизведению ошибок, проверке исправлений и критериям качества.
- 6.4.С аналитиками и представителями смежных функций взаимодействует для уточнения требований и согласования поведения функциональности.
7. Заключительные положения
- 7.1.Настоящая инструкция вступает в силу со дня её утверждения руководителем организации.
- 7.2.Работник знакомится с инструкцией под подпись при приёме на работу, до начала работы.
- 7.3.Инструкция пересматривается при изменении обязанностей, структуры или условий работы организации.
- 7.4.Инструкция составлена в двух экземплярах: один хранится у работодателя, второй передаётся работнику.
Раздел 10 из 11
План испытательного срока: 30, 60 и 90 дней
Что человек должен уметь к концу каждого месяца и по каким признакам считать срок пройденным.
День 30: Первый месяц
Осваивается
- Изучил порядок разработки, проверки и передачи изменений в компании.
- Может самостоятельно внести небольшое изменение в существующий код и проверить его тестами.
- Корректно оценивает типовые задачи и сообщает о блокерах.
День 60: Второй месяц
Работает сам
- Самостоятельно выполняет задачи средней сложности от уточнения требований до проверки результата.
- Пишет тесты для изменений и исправляет обнаруженные дефекты без повторяющихся ошибок одного типа.
- Участвует в проверке кода и аргументированно объясняет выбранное решение.
День 90: Третий месяц
Даёт результат
- Самостоятельно ведёт задачи согласованного уровня сложности и соблюдает принятый порядок разработки.
- Даёт обоснованные оценки, заранее сообщает о рисках и предлагает варианты их снижения.
- Поддерживает качество закреплённого кода; изменения проходят проверку без существенных дефектов, связанных с невыполнением требований.
Испытательный срок пройден, если
- Согласованные задачи выполняются в ожидаемые сроки либо отклонения заранее объясняются и согласуются.
- Изменения соответствуют требованиям и не содержат повторяющихся критичных дефектов по вине исполнителя.
- Тесты добавляются или обновляются там, где это необходимо для проверки изменений.
- Оценки задач и сообщения о рисках позволяют команде планировать работу.
Раздел 11 из 11
Частые вопросы о найме
Можно ли взять разработчика C++ без коммерческого опыта?
Можно, если кандидат уверенно владеет C++, умеет отлаживать код и подтверждает навыки учебными или личными проектами. Начинающему сотруднику нужны задачи ограниченной сложности, наставник и регулярная проверка кода.
Сколько обычно занимает поиск разработчика C++?
Срок зависит от сложности проекта, требований к опыту и условий работы. Упростить поиск помогают ясное описание задач, короткий технический этап и заранее согласованные критерии оценки.
Как оформить разработчика C++?
Оформите трудовые отношения с должностью и условиями работы, зафиксируйте обязанности, порядок взаимодействия и критерии испытательного срока. При удалённом или гибридном формате отдельно согласуйте порядок передачи задач, доступа к системам и контроля результата.
Как построить оплату без привязки только к числу задач?
Установите фиксированную часть за согласованный объём работы, а переменную часть используйте только при наличии понятных и контролируемых критериев. Учитывайте качество изменений, выполнение договорённостей, тестирование и точность оценок, а не только скорость.
Когда пора нанимать второго разработчика C++?
Найм оправдан, если очередь задач стабильно превышает возможности одного специалиста, сроки срываются из-за нехватки разработки или поддержка отвлекает от новых функций. Проверьте, что требования и приоритеты определены, а загрузка не вызвана временным всплеском.
Чем разработчик C++ отличается от тестировщика и системного архитектора?
Разработчик реализует и поддерживает программный код. Тестировщик специализируется на проверке качества и поиске дефектов, а системный архитектор задаёт техническую структуру решения и согласует ключевые архитектурные принципы. В небольшой команде задачи могут частично пересекаться.
Документы
Заберите документы
Три файла из этого набора, в один клик. Бесплатно, без регистрации и водяных знаков.
Следующий шаг
Заберите профиль «Разработчик C++» в Altair HR
После регистрации профиль появится в кабинете сам: обязанности, компетенции, этапы отбора и карта оценки уже заполнены. Останется добавить вилку оклада и собрать из профиля вакансию. 14 дней бесплатно, карта не нужна.
- Профиль роли в кабинете уже заполнен
- Вакансия собирается из профиля
- ИИ разбирает отклики по вашим критериям
Отправьте коллегам
Руководителю, который будет собеседовать, или коллеге, который пишет вакансию.
Полезное для кадровика на почту
Новые статьи и инструменты: кадровые сроки, изменения в Трудовом кодексе, готовые шаблоны. Без спама, отписаться можно в один клик.
Нажимая «Подписаться», вы соглашаетесь на обработку персональных данных. Подписка включится после подтверждения в письме.