Как проходит интервью QA-инженеров в Тинькофф
Я Алексей Лапаев, руководитель команды обеспечения качества мобильного приложения Тинькофф и организатор гильдии интервьюеров веб-стрима найма QA. Расскажу, как проходит отбор на вакансии QA-инженеров, что спрашивают на первичном интервью и какие секции и задачи ждут в технических блоках.
Договоримся, что термины «тестировщик», «QA» и «инженер» равнозначны и используются с целью разнообразить слог. Профессионально мы строим команды фулстек-QA-инженеров, но идеологию затронем лишь вкратце. Материал будет полезен тем, кто интересуется процессами в крупных компаниях, видит свое будущее в качестве QA-инженера или хочет работать именно в Тинькофф. Если это про вас — добро пожаловать под кат!
Этапы отбора
Мы ищем специалистов в первую очередь в Тинькофф. Определяемся с командой после того, как успешно пройдены этапы отбора. Сейчас мы набираем инженеров по трем разным стримам.
Web — все, что связано с тестированием сайтов, их бэкендов, админок и веб-экосистемы. QA в этом стриме обеспечивают качественную работу фронтов личных кабинетов клиентов, публичных порталов вроде tinkoff.ru и большого многообразия пользовательских интерфейсов, видимых только внутри.
Mobile — тестирование мобильных приложений и сервисов, которые нужны для работоспособности приложений. По этому стриму идут кандидаты, которых интересует тестирование мобильных приложений и сервисов за ними, нужных для работы этого вида фронтов.
Backend, который обеспечивает качество работы тех систем, которые не видны конечному клиенту. Без него не обходится работоспособность ни веб-части, ни мобильных приложений, ни других сложных частей экосистемы, которые работают с данными.
В Тинькофф для инженеров QA четыре этапа отбора: предварительное собеседование, профильное собеседование, техническое интервью и знакомство с командой. Вот как они выглядят в таблице:
Первый этап — интервью с рекрутером в «Зуме». Наш специалист спрашивает об опыте работы, о проектах, в которых удалось поучаствовать. Может спросить подробнее о мотивации, отношении к компании и ожиданиях от нее, о технических интересах, локации и прочем.
Рекрутер задаст несколько технических вопросов начального уровня, чтобы сразу понимать, насколько мы подходим друг другу. По каждому стриму у нас есть пул легких вопросов, что-то вроде технической базы, которую должны знать все QA-инженеры.
Обязательно будет вопрос «Кем вы видите себя через n лет?» Раньше спрашивали про пять лет, но пять — это очень долго, поэтому спрашиваем про два года. Нам важно, как человек мыслит и куда он хочет профессионально вырасти, потому что мы рассчитываем на долгосрочное сотрудничество.
Есть люди, которые через QA пытаются зайти в ИТ и стать разработчиком, иногда хотят примерить другую специальность. Часто мелькает, что тестирование — это легкий старт в ИТ-карьере. Здесь мы расходимся во взглядах и не приветствуем это.
В конце рекрутер попросит оценить свой профессиональный уровень по трем стримам найма. В зависимости от ответов выбираем приоритетную секцию технического собеседования. Например, если специалист говорит, что он хорош в бэкенде, а мобилка и веб — так себе, то мы направим его на собеседование в соответствующий стрим бэкенда. Отдаем приоритет выбранному стриму.
Если определиться с лидирующим направлением сложно, мы направляем на интервью по двум стримам и выбираем наиболее результативное — где получилось ответить на большее количество вопросов и где выше уровень владения навыками.
Второй этап — профильное собеседование, которое проходит по одному из трех стримов в формате созвона в «Зуме» и длится 1,5 часа. Секцию тестирования проводят действующие тестировщики соответствующего уровня. Чтобы пообщаться с джунами, мы зовем мидлов, для мидлов — старших тестировщиков. Стараемся, чтобы интервьюер был на один грейд постарше.
Для профильных собеседований у нас существует гильдия интервьюеров, ее задача — проводить собеседования по нашим стандартам профессиональных уровней. В первую очередь мы собеседуем в компанию Тинькофф, а потом уже профилируем на сами команды, где будет работать тестировщик.
В гильдию входят действующие QA-инженеры, которые делят свое рабочее время между задачами тестирования и собеседованиями. Они проводят технические секции и находят себе коллег в широком смысле этого слова — в свою команду или в соседние.
Гильдия тоже разделена на три стрима: ребята по веб-части, специалисты мобилок и профи на бэкенде. В зависимости от профиля тестировщика мы зовем того или иного интервьюера. Его задача — более углубленно поспрашивать по тому стриму, в котором у человека больше всего нужного опыта и знаний.
На этом этапе появляются технические вопросы по инструментам, которые используются в том или ином стриме: по фреймворкам автотестирования, по системам, из которых строится инфраструктура. Например, какие кейсы проверки знает тестировщик, как будет разбираться и какие специфичные знания у него есть. Оценивается, насколько хорошо человек владеет профильными знаниями.
В итоге проводится оценка, как получилось справиться с профильной секцией. Если что-то пошло не так и не получилось ответить на вопросы — дадим обратную связь, какие скиллы подтянуть и что почитать. Если все прошло успешно, пусть даже не на предполагаемый уровень, мы общаемся дальше и переходим на следующий этап. А о том, какие вопросы бывают на профильном собеседовании, расскажем в следующей части статьи.
Третий этап — технический. Он делится на две секции: теория и практика QA и программирование по 45 минут каждая.
Теория обеспечения качества — это проверка теоретических знаний: как построить пирамиду тестирования, как расписать тестовую модель, как писать тест-кейсы, где их хранить, что такое тестирование, что стоит проверять, а что не стоит, как можно побить проверки по функциональности приложения.
Можем поговорить про нефункциональные проверки: нагрузочное тестирование, тестирование производительности в более широком смысле, тестирование безопасности — то, что не связано напрямую с функциональностью приложения. Не про нажатие кнопок, а про какие-то технические свойства систем. Секцию проводят инженеры, которые проводят профильные секции и может так получиться, что один и тот же интервьюер будет на профильной секции и на теории обеспечения качества, а могут быть разные.
Второй блок — программирование. Этот блок наиболее пугающий, потому что мы просим кандидатов владеть каким-то языком программирования.
На самом деле блок страшный только по названию: мы не спрашиваем сложные паттерны или конструкции, владение алгоритмами или еще что-то. Просим написать простую функцию, которая делает какую-то простую вещь.
Например, посчитать количество заданных символов в предполагаемой строке — это базовая задача для тех, кто начинает изучать язык программирования. Ее описание есть во всех книжках по программированию, в тренировочных курсах или видео. Таких задач несколько — чтобы разнообразить то, что мы предлагаем тестировщикам, и не засветить их в открытом пространстве. Все задачки легкого уровня с действиями над строкой, числом или что-то похожее.
Суть этой секции — понять насколько человек не боится языка программирования, насколько он с технической точки зрения готов к тому, с чем предстоит работать, и тут цель стратегическая.
Мы хотим наших тестировщиков видеть fullstack-QA-инженерами. Под fullstack мы подразумеваем, что тестировщики могут не только руками проверить функциональность сервисов, но и смогут проверки автоматизировать. Чтобы руками делать как можно меньше и тратить время на более сложные и интересные задачи, развивать функциональность и развиваться самому специалисту.
Для автоматизации нужен язык программирования — для этого мы и проверяем его на входе. Если человек владеет языком на базовом уровне — он нам подходит, если не боится писать код — он нам подходит, если он потратил все 45 минут, чтобы решить пару задач — он нам подходит. Мы готовы вкладываться в обучение и развитие таких людей и показывать, как у нас все работает внутри, давать материалы для развития.
Тех, кто успешно прошел технические блоки, приглашают на финальные интервью с командами. Ответственные за подборы в командах знакомятся с результатами предыдущих этапов и оставляют заявку, что хотели бы познакомиться с кандидатом.
Финальных знакомств может быть несколько, если несколько команд будут искать именно такого специалиста.
Каждая встреча длится около 30 минут. Цель этих встреч не проверить какие-то знания, а пообщаться и проверить совместимость. Будущие коллеги знакомятся друг с другом, обсуждают особенности проекта и конкретные задачи.
Встреча состоит из двух частей: в первой мы расспрашиваем человека, а во второй рассказываем о команде, чтобы интересный кандидат пришел именно в нашу команду. Отвечаем на все вопросы, которые могут появиться.
Ждем вопросов о том, что беспокоит, какие-то боли на текущем месте работы, которые закрыть не получилось. На финальном знакомстве понимаем, можем ли мы быть перспективными для человека или не можем, чтобы не создавать обманутых ожиданий. Хотим, чтобы кандидату было комфортно работать в предлагаемой команде и команда сразу получила результат.
Если все складывается хорошо, то рекрутер создает оффер-встречу с выбранной командой. На этой встрече говорим предметно о зарплате, цифрах, проектах, обязанностях, графике и других рабочих моментах.
После оффер-встречи оставляем тестировщику время подумать и принять окончательное решение.
Бывают случаи, когда нужно закрыть дела на прошлом месте работы, и человек просит время. Мы готовы ждать и рассчитываем на то, что, если через несколько лет он будет покидать нашу команду, так же ответственно отнесется к передаче дел и возьмет продолжительную паузу.
Что оценивают на профильном и техническом собеседованиях
На этих этапах нужно показать свои знания в профильных стриму технологиях и инструментах, теории обеспечения качества и немного покодить вживую. Все вопросы предполагают оценку глубины ответов, поэтому не стоит зубрить определения: интервьюера есть возможность уйти чуть в сторону от прямого ответа и попросить кандидата раскрыть термины или решить минутный мысленный эксперимент. Чтобы было понятнее, приведу примеры вопросов и задач, которые встречаются в секциях.
Цель профильной секции собеседования — проверить знания стека технологий, инструментария и практик тестирования в выбранном кандидатом стриме. Вопросы могут быть как полностью специфичные стеку, так и из смежных областей. Например:
В чем отличие тестирования мобильного приложения от десктопного, от web?
Различия версий HTTP? Различия методов HTTP-запросов?
Что такое микросервис? Что такое брокеры сообщений?
Задаем классические вопросы по SQL о JOIN и предложить задачи на составление простых запросов. Можем задать и углубленные вопросы по оптимизации запросов для специалистов, претендующих на высокие позиции QA систем, обрабатывающих данные.
Цель секции теории и практики QA —проверить знания кандидата в области обеспечения качества, его умение пользоваться артефактами, техниками и подходами, сложившимися в нашей профессии. Мы спрашиваем:
Методологии разработки ПО, их преимущества и недостатки.
Практики shift left и shift right тестирования.
Задачи, например «Вы обнаружили дефект в своем функционале. Ваши действия?».
Это не исчерпывающий список, но многие вопросы неоднократно обсуждаются в профильных форумах, сообществах и рекомендуемых книгах.
Цель секции по программированию — проверить знания базовых структур данных, синтаксиса и умение писать код на том языке, который заявлен в резюме. Вот несколько примеров задач:
Написать метод, который будет возвращать true, если поданный на вход массив int содержит 3 и более последовательных числа в любом месте. Задачу необходимо решить не более чем одним циклом.
Найти все полки в библиотеке, на которых стоят книги Ремарка.
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var shelfs = new Dictionary{
{"полка 1", new string[]{"1984", "три товарища"}},
{"полка 2", new string[]{"убить пересмешника",
"герой нашего времени"}},
{"полка 3", new string[]{"10 негритят", "на западном
фронте без перемен"}}
};
var books = new Dictionary{
{"1984","оруэлл"},
{"три товарища", "ремарк"} ,
{"убить пересмешника", "ли"},
{"герой нашего времени", "лермонтов"},
{"10 негритят", "кристи"},
{"на западном фронте без перемен", "ремарк"}
};
}
}
Что будет записано в переменную a?
s = 'iamstring'
a = s[3:5:1]
По каждой из секций подробные ответы кандидата собираются в отдельную карточку результатов. На эти результаты ориентируются нанимающие менеджеры, перед тем как позвать кандидата на знакомство с командой.
Карточка специалиста в начале отбораТак выглядит карточка, когда специалист уже ответил на вопросыВо время технического интервью кандидаты отвечают на вопросы и набирают баллы, а интервьюеры пишут свое заключение и передают его рекрутерам
После этого интервьюер составляет саммари, отправляет его рекрутеру, и тот возвращается с фидбэком к кандидату.
Тайминг: сколько времени занимают этапы
Первичный телефонный разговор длится 30—40 минут, после этого рекрутер отправляет ответы техническим специалистам. Рекрутер возвращается через несколько дней, чтобы пригласить на профильное собеседование. Дата и время зависят от пожеланий кандидата.
Профильное собеседование длится до 90 минут, после него интервьюер сразу направляет обратную связь рекрутеру. Если все складывается хорошо, зовем на следующий этап — техническое интервью. Здесь дата и время также зависят от пожеланий тестировщика, а интервью длится 1,5 часа — по 45 минут на каждую секцию.
Фидбэк по техническому интервью мы получаем в тот же день. Дальше приглашаем на финальное интервью, чтобы познакомить с командами и решить, в какой проект пойдет QA-инженер. Обычно это занимает один день, но иногда может занять несколько. После этого начинаем согласовывать оффер и встречаемся на оффер-встрече, чтобы озвучить цифры, поговорить о задачах. После даем время на принятие окончательного решения и готовимся к выходу нового специалиста.
В среднем от первичной проверки до оффера проходит 27 календарных дней
Про QA в Тинькофф рассказали на нашей странице экспертизы — присылайте резюме, если нам удалось заинтересовать. А 17 сентября проведем One Day Offer для QA-инженеров (backend) с опытом от 2 лет — зарегистрироваться можно до 15 сентября. Если остались вопросы — разберем их в комментариях.