Техническое собеседование. Как успешно пройти любое техническое собеседование

Не стоит ожидать, что я смогу ответить на вопрос, который остается открытым для компаний с многомиллионными бюджетами на рекрутинг. Чтобы понять, насколько сложен вопрос подбора хороших специалистов, достаточно посмотреть на разнообразие подходов, которые используют мировые гиганты разработки ПО.

Для чего мы проводим собеседование? Мы хотим найти кандидата, который бы подходил под наши требования «подходящего» разработчика. Но поскольку мы не можем взять человека и посадить его на три недели за решение наших текущих задач, мы придумываем некую модель, соответствие которой означает, что кандидат нам подходит.

При этом «модели» используются самые разные. В гугле когда-то считали, что человек, который сможет ответить на вопрос: сколько шариков для гольфа влезет в багажник Lexus LS470 является хорошим программистом и сможет успешно решать их задачи. Майкрософт когда-то использовал похожий подход (вспомните «Чтобы сделал мистер Фейнман» Эрика Липперта), а сейчас они садят кандидата за стол и просят его покодить. Очевидно, что эта модель также не совершенна, ведь она не соответствует реальному миру, ведь мы никогда не кодим на работе, когда от этого зависит наша судьба, а наш начальник при этом заглядывает в код через наше левое плечо.

В отечественном аутсорсе применяется несколько иной подход. У нас считается, что если человек хорошо разбирается с некоторой технологией, то он достаточно разумен и талантлив, чтобы решать «замечательные» задачи их корпоративных клиентов.

ПРИМЕЧАНИЕ
Помимо отечественного аутсорса подобные тип собеседований активно используется и в некоторых компаниях в США. Например, в Нью Йорке большинство собеседований очень напоминают киевские;)

Кого мы хотим найти?

Прежде чем решить, как же нам подобрать правильных людей (и отсеять «неправильных») нужно определиться с тем, кого же мы ищем.

Проблема здесь в том, что к отечественному аутсорсу (который составляет существенную часть нашего рынка труда) не применимы те же самые критерии, что и к мировым гигантам, типа МС-а, Фейсбука или Гугла. Главное отличие между этими мирами в том, что аусорсу нужно не столько высочайшее качество, сколько большее количество при вменяемом качестве. И хотя требования к разработчикам в аутсорсе может быть и недотягивают до гугловских, тем не менее они достаточно высокие и наши программисты обычно превосходят в техническом плане многих представителей заказчика.

Так что планка в наши компании несколько ниже, ключевые критерии совпадают: нам нужно найти человека, который умеет думать, решать задачи и доводить дело до конца (кстати, именно умение довести дело до конца Бертран Мейер считает самой полезной чертой разработчика, о чем он поведал в своем недавнем интервью).

ПРИМЕЧАНИЕ
Я тут здорово все упростил, поскольку процесс отбора существенно сложнее. Как минимум нужно учитывать человеческие качества, ведь даже rock star разработчику стоит отказать, если из-за него развалится вся команда.

Техническое собеседование

На рынке существует множество способов определения таланта разработчика: начиная от задач на бредо логику, типа квадратных и круглых люков, заканчивая решением олимпиадных задач на клочке бумаги.

Отечественный аутсорс при отборе уделяют максимальное внимание конкретным техническим навыкам: знаниям языков программирования, технологий и платформ. Можно сколько угодно спорить, насколько коррелируют знания языка C# с умением решать рабочие задачи и насколько этот подход лучше/хуже альтернативных вариантов. Как по мне, значительно важнее не то, какие вопросы вы задаете и какие знания проверяете, а то, как вы слушаете ответы и каким образом их анализируете.

Не зависимо от задаваемых вопросов и типе технического собеседования, есть ряд простых советов, которым разумно следовать.

Узнайте, как человек думает

Капитан подсказывает, что наиболее эффективными являются не те вопросы, на которые кандидат знает ответ, а вопросы, ответ на который заранее не известен . На практике мы довольно часто решаем задачи, с которыми не сталкивались ранее, поэтому важно понять ход мыслей и рассуждения кандидата при ответе на вопрос, ответ на который ему заранее не известен.

Например, вполне нормальным попросить реализовать StringBuilder самостоятельно или спросить о том, как он реализован в.NET. При этом значительно интереснее обсуждать этот вопрос, когда кандидат не знает решения. Тут можно затронуть компромиссы между эффективностью реализации методов Append и ToString , подумать о выборе структуры данных и т.п..

СОВЕТ
Очень полезно обсуждать задачи, суть которых хорошо известна кандидату, но которые он не решал на практике. Это немного выведет кандидата из зоны комфорта и будет показывать не его способность запоминать факты, а его способность думать и принимать решения.

Никаких вопросов из "тестов"

Из первого совета вытекает второй совет о том, чего делать никогда не нужно. Не нужно задавать вопросы, ответы на которые легко гуглятся, и главное, нельзя трактовать ответы по принципу тестов: "ответил/не ответил", без продолжения обсуждения.

Меня всегда очень беспокоит, когда на собеседовании задается вопрос следующего вида: "Скажите, а какой тип возвращаемого значения должен быть у перегруженного оператора = в С++? Ссылка или константная ссылка?". Особенно печально, когда ответ на этот вопрос просто записывается на бумажке и интервьюер переходит к следующему подобному вопросу.

На самом деле, сам вопрос не так и плох, но тут важно понять, почему кандидат выбирает тот или иной вариант, и как изменяется его мнение в зависимости от дополнительных наводящих вопросов. Здесь легко можно подтолкнуть к определенной ситуации, с которой кандидат не сталкивался, что, опять-таки, покажет его способность анализа и выбора подходящего решения.

Сосредоточьтесь на фундаментальных вещах

Есть некоторые позиции, которые требуют очень глубокой экспертизы в определенной области. Бывает, что команде нужен эксперт по WCF, WPF или ASP.NET, который должен знать технологию очень глубоко и тогда на собеседовании придется гонять кандидата по всем дебрям. Во всех других случаях значительно полезнее сосредоточиться на фундаментальных вопросах, даже если они и привязаны к конкретной технологии.

Обычно под фундаментальными вещами я понимаю ключевые концепции: основы типов в.NET, основы сборки мусора и проблемы управления ресурсами; основы языка C# типа делегатов, событий, замыканий. Фундаментальные вещи из области проектирования, типа cohesion & coupling, проблемы наследования/агрегации, опасностей изменяемости и т.п; паттерны проектирования, отношение к ним и их роль в арсенале разработчика. Основы алгоритмов, можно в привязке к платформе ("Что будет если метод GetHashCode будет всегда возвращать 42?") и т.п.

Даже в контексте конкретной технологии можно найти достаточно общие вопросы, и не мучить мелкими частностями. Нам важно определить кругозор и фундамент, а не проверить, какая у человека память.

Определите свой уровень по шкале от 1 до 10

Я уже несколько лет пользуюсь подходом, подсмотренным когда-то у Эрика Липперта и в качестве первого вопроса собеседования задаю следующий: "Определите, пожалуйста свой уровень знания языка C# по шкале от 1 до 10, где 1 – это уровень моей мамы, преподавателя математики, а 10 – уровень автора языка C# – Андерса Хейлсберга.".

Это довольно распространенный вопрос, но для меня он не самодостаточен (хотя бывает любопытно услышать от синьера, что его уровень ниже 6 или выше 8). После этого вопроса я всегда задаю второй: "Ок, ваш уровень 8, а какие именно знания перевели вас с уровня 7 на уровень 8?".

Польза такого подхода в том, что можно узнать следующее: (1) чем человек интересуется и интересуется ли чем-то вообще, и (2) можно пропустить ряд простых тем, если кандидат говорит о недавнем изучении каких-то продвинутых вещей. Так, если кандидат говорит, что он узнал о сегментах в GC и Card Table, о реализации обобщений, деревьях выражений, о проблемах изменяемых значимых типах или о генерации IL-кода, то вполне можно пропустить базовые вопросы, типа разницы между ссылочными и значимыми типами и углубиться в более серьезные подробности.

К тому же такой вопрос позволит оценить человеческие качества: насколько кандидат уверен в себе и насколько он адекватно оценивает свои знания, насколько сильно он отстаивает знания в тех областях, в которых он считает себя экспертом и т.п.

ПРИМЕЧАНИЕ
Не так давно на rsdn было обсуждение этого вопроса: "Как вы оцениваете... по 10ти бальной шкале?" , в котором я также принял участие .

Тяните за ниточку

Я очень редко провожу собеседование по бумажке. Обычно происходит следующее: берется несколько ключевых вопросов (таких себе "якорей"), на основе которых строится все обсуждение. Ответ на вопрос n зачастую дает почву для вопроса n+1, который в свою очередь дает почву для следующих вопросов.

Обычно даже невинный вопрос, типа, а зачем нужен интерфейс IDisposable приводик к обсуждению управляемых и неуправляемых ресурсов, Dispose-паттерна, откуда легко перейти к обсуждению стандартов кодирования (поскольку все эти вещи описаны в Framework Design Guideline).

Аналогично, невинный вопрос, типа "А атомарна ли операция i++, где i – это System.Int32?" может послужить хорошим началом разговора, поскольку наверняка даст почву к другим темам, таким как неизменяемость и многопоточность, проблеме гонок, вопросам об атомик операциях и многим другим.

Именно поэтому мне нравится сверх простая задача следующего вида:

class Foo
{
public event EventHandler MyEvent;
private readonly int _syncRoot = 42 ;public void RaiseMyEvent()
{
Monitor . Enter(_syncRoot);
try
{
if (MyEvent != null )
MyEvent(this , new EventArgs ());
}
finally
{
Monitor . Exit(_syncRoot);
}
}
}

Здесь можно обсудить массу вещей: начиная от проблем упаковки, заканчивая гонками и проблемами вызова событий из под блокировки.

При этом кандидаты очень часто сами себя закапывают, пытаясь ответить "умнее", чем в их силах, затрагивая темы, в которых они не сильны. Если же кандидат действительно силен в определенной теме, то такой способ быстрее позволит перейти к продвинутым темам и позволит лучше определить уровень кандидата.

Насколько "технологическое" интервью эффективно?

Есть ли связь между знанием языка C# и умением решать производственные задачи? Тут все не так просто. Можно выделить две крайние ситуации.

Во-первых , есть техно-гики, которые идеально ответят на все технические вопросы, но не смогут (или не захотят) решать бизнес-задачи. Обычно такие кандидаты обладают очень хорошей памятью и отвечают на многие вопросы практически не задумываясь. Попытка вывести их из зоны комфорта (перевести тему на дизайн, другой язык или платформу) позволит лучше понять, как они будут вести себя при решении неизвестных для них задач. Отсеять таких кандидатов должны лиды и ПМ-ы проверяя софт-скиллы кандидата (это не просто, но, в целом, возможно).

Во-вторых , есть замечательные практики, которые не сильны в теории. Есть вероятность, что такой кандидат будет отсеян, но опытный интервьюер может постараться перейти из теоретической области в более практическую и определить таланты такого кандидата. Один из моих текущих коллег попадает именно под эту категорию, и на многие продвинутые вопросы во время интервью смело отвечал, что "этой ерунды он не знает". Но его открытость и практичность подкупила с самого начала, поэтому мы уже почти год работаем в одной команде.

В целом, разумный подход на основе технологических интервью показал вполне хорошие результаты. Полноценный синьер не обязан знать про Card Table, но сможет относительно легко ответить о пользе поколений в сборке мусора, и даже не зная о SOLID принципах мы наверняка сможем пообщаться на предмет cohesion и coupling, о роле тестов и паттернах проектирования.

Талантливый разработчик знает свою кухню, как минимум на продвинутом уровне, поэтому "технологический" критерий не хуже любого другого.

Интервью – это двусторонний процесс

Для любого специалиста собеседование является двусторонним процессом: интервьюер оценивает кандидата, а кандидат оценивает компанию посредством оценки интервьюера.

Именно поэтому меня вгоняют в ступор собеседования, на которых практически не проверяются технические знания кандидата или его аналитические способности. Меня пугает как минимум два момента: во-первых, вопросы и обсуждения показывают не только уровень кандидата, но и уровень собеседующего, с которым мне (как кандидату), возможно, придется работать. Во-вторых, слабый отсев кандидатов путем невнятных вопросов вызывает сомнения в среднем уровне команды, поскольку в этом случае в команду может попасть множество "случайных" людей.

Можно подумать, что это лишь мое личное наблюдение, и не каждый интервьюер готов спрашивать C# MVP о языке C# (хотя лично я не вижу в этом ни каких проблем). Но ведь такую же картину видят и многие мои коллеги, которые проходят собеседования на Senior или даже Middle позиции.

Поскольку отечественный рынок является "перегретым", то интересное техническое интервью может играть дополнительную положительную роль: с его помощью вы можете показать кандидату, что он будет работать в интересном коллективе, что перевесит чашу весов в вашу сторону.

З.Ы. Если так уж случилось, что вы были на моих собеседованиях (Земля ведь квадратная;), будет интересно услышать ваше мнение о нем.

Сирадж Равал, разработчик, писатель и видеоблоггер, рассказывает как успешно пройти любое техническое собеседование в 5 шагов.

Я проходил через этот процесс дюжины раз в различных IT-компаниях, на моей памяти огромное число как отказов, так и предложений. И вот какие уроки я из этого извлек. Собеседование требует труда: не верьте тем, кто утверждает, что это должно быть легко. Это не так. Люди говорят только о своих успехах и никогда - о провалах.

Я выделил несколько шагов, которые позволят избежать многих ошибок и успешно пройти любое техническое собеседование.

Шаг 1. План подготовки

Учитесь. Еще до того, как вас посетит светлая мысль попытаться устроиться куда-нибудь работать, вы должны сконцентрироваться на прокачке своих технических навыков.

Процесс найма на позицию разработчика выглядит примерно одинаково во многих крупных компаниях. Как правило оно проходит в два этапа. Сначала рекрутер общается с соискателем по телефону, чтобы понять, насколько он заинтересован в их компании. При успешном прохождении первого этапа, за ним следуют 1-2 технических беседы со специалистами, в течение которых ему задаются сложные вопросы и задачи, которые он должен решить на доске. Он должен показать ход своих мыслей в процессе решения проблемы, найти подходящее решение, и тогда его наймут.

Единственный способ научиться этому - практика. Все мои друзья, работающие в крутых компаниях, очень много занимаются. Смысл здесь не в том, чтобы иметь выдающийся интеллект, а в том, чтобы усердно и продуманно трудиться.

Возникает вопрос, что именно надо практиковать? У вас не будут проверять знание синтаксиса какого-либо языка. При желании можно изучить основы синтаксиса Ruby за одну ночь. Но на что ночи не хватит, так это на основы фундаментальной информатики. А ведь на собеседовании у вас будут проверять именно знания структур данных и алгоритмов.

Начните с прохождения двух курсов:
введение в структуры данных (My Code School)
введение в алгоритмы (MIT Open Courseware)
Оба они находятся в открытом доступе и идеально подходят для того, чтобы получить базовые знания по этим разделам.

После этого можно закрепить полученные знания на HackerRank и HackerEarth . Эти ресурсы содержат огромное количество задач для оттачивания навыков программирования.

Порешав по паре дюжин задачек с обоих сайтов, прочтите книги «Технические интервью как они есть» и «Ломаем техническое интервью» . Они расскажут вам о многих специфических заданиях с реальных собеседований, начиная с задач по системному дизайну и заканчивая вопросами о времени и сложности.

Проделав все вышеприведенные ритуалы, начните репетировать собеседование с кем-нибудь из своих друзей. Попросите его задавать вам вопросы и отвечайте на них, используя только маркер и белую доску и объясняя вслух ход ваших мыслей. Я рекомендую заниматься этим в течение двух-трех месяцев по два-три часа в день.

Шаг 2. Найдите компании, которые вас интересуют

Если процесс подготовки к каждому собеседованию занимает два-три месяца, то, естественно, очень не хотелось бы тратить это столь драгоценное время на компании, которые не впечатляют вас.

Отслеживание процесса подготовки и прохождения собеседований в компаниях может быть довольно стрессовым делом, но пытайтесь оставаться организованным. Составьте список интересных вам компаний и отмечайте, на какой стадии находятся ваши отношения с каждой из них. Неплохими ресурсами для этого могут служить angel.co и Hacker News .

В этом есть нечто сверхъестественное. Вам придется напрячь все свои экстрасенсорные способности, чтобы понять, как эффективнее всего применить ваши навыки в желаемой сфере и найти компании, которые позволят вам сделать это.

Шаг 3. Составьте портфолио

Крупные компании получают сотни резюме в день, поэтому им просто необходимо отсеивать массу неинтересных им посредственностей. Как же выделиться из этой серой массы? Убедитесь, что все слова вашего резюме помещаются на одной странице, а само оно лаконично, но содержательно. Осветите в нем наиболее важную работу, выполненную вами.

Неплохая идея - иметь несколько резюме: по одному на каждую специальность или для каждой компании, куда вы пытаетесь устроиться. В портфолио разделите личные проекты, проекты с хакатонов, вливания в проекты с открытым кодом.

GitHub - прекрасное место не только для хранения вашего кода, но и как еще одно портфолио, которое может сослужить вам хорошую службу.

Сделайте своим лучшим веб-проектом собственный сайт-резюме. Постарайтесь, чтобы он выглядел стильно и профессионально и мог впечатлить потенциального работодателя.

Шаг 4. Получите приглашение на собеседование

Простейший способ - откликнуться на вакансию компании на специализированном сайте. Но крупные компании получают множество таких откликов ежедневно, и среди них очень легко затеряться. Хороший вариант - послать e-mail рекрутеру компании, сделав его кратким и емким. Включите в него краткий обзор того, кто вы есть и чем хотите заниматься, ссылку на легкодоступный и актуальный проект, а также выразите желание и готовность учиться и узнавать новое.

Настало время перейти к…

Шагу 5. Пройдите собеседование

Иногда интервьюер может нервничать больше, чем вы сами, и это нормально. Просто улыбайтесь, будьте вежливы, дайте понять, что вы понимаете его и готовы сотрудничать для достижения общей цели.

Решая технические задачи, не бойтесь рассуждать вслух. Помните, что от вас хотят именно этого: правильный ответ не столь важен, как правильный ход ваших мыслей. Когда соискатель выдает первое решение, рекрутер часто просит его найти более эффективные варианты. Здесь в игру должны вступить ваши знания информатики.

И не стесняйтесь задавать вопросы. Собеседующий призван помочь вам. И несмотря на то, что его основная цель - оценить ваши навыки, ему также важно попытаться найти с вами общий язык, сотрудничать с вами и помогать вам в достижении общей цели. Поэтому если вы пришли подготовленным, все будет хорошо.

Заключение

Подготовка к собеседованию и его прохождение - ответственный и трудоемкий процесс. Никогда, н и к о г д а, НИКОГДА не позволяйте отказам выбить вас из колеи. Прохождение интервью - это тоже большой опыт, даже если вас не наняли. Поэтому со временем вы достигнете высочайшего мастерства и сможете успешно пройти любое техническое собеседование. Главное - тренируйтесь, верьте в себя и не теряйте мотивации.

Я ожидала получить достаточно много вопросов по этой теме. Однако обратных вопросов – «Как его проходить?» - на почту и на форум «Лаборатории Качества» валилось значительно больше. Следуя спросу, продолжаю цикл ответной статьёй.

Введение

2. Протестируйте лифт!

Итак, Вы рассказали, что такое классы эквивалентности и граничные значения. Пришло время проверить, умеете ли Вы их использовать. И вот, Вас просят протестировать лифт. Или карандаш. Или калькулятор, джинсы, чашку. Неважно что. Задача – скорее всего непривычная и нестандартная. Что ждёт от Вашего ответа работодатель?

Способность мыслить творчески. Для тестеров это ого-го как важно. Я неоднократно встречала соискателей, которые на вопрос «протестируйте чашку» не могут придумать ни одного теста. Скорее всего, с тестированием нового компонента у них тоже возникнут проблемы.

Структуризацию. Если тестирование калькулятора начинается с деления на ноль, то соискатель скорее всего не умеет приоритезировать тесты и не очень хорошо понимает основных задач, возлагаемых на тестирование.

Умение использовать методики, которые в теории кажутся такими простыми. Если на лифте Вы планируете ездить с каждого этажа на каждый этаж – значит, понимание классов эквивалентности не ушло дальше теории.

Умение использовать все возможные виды тестирования. Нагрузочное тестирование лифта (вызвать со всех этажей), объёмное тестирование чашки (налить в неё максимум воды), производительность калькулятора при операции сложения, юзабилити джинсов и пользовательская документация на карандаш – лучшие способы показать, что Вы «в теме».

Правильный ответ на подобный вопрос следует из описанных выше требований к ответу. Структурируйте информацию. Узнайте максимум о тестируемом объекте. Определите, что вы будете проверять в рамках функционального и нефункционального тестирования. Подумайте, как Вы можете оптимизировать набор тестов, чтобы не проверять всё подряд. И ни в коем случае не начинайте свой ответ с конкретных тестов – мартышкин труд отличается от грамотного тестирования предварительным продумыванием своих действий.

3. Расскажите, как создавать тест-кейзы

Или как написать тест-план, как создать фреймворк автоматизации тестирования или что-либо ещё. Самое худшее, что Вы можете сделать при ответе на этот вопрос – пытаться сделать вид, что Вы умеете делать что-то, когда на самом деле этого никогда не делали. Если тема Вам хорошо знакома, и Вы знаете, как отвечать – флаг в руки! Если же Вы не уверены в правильности своих мыслей – обязательно предупредите об этом собеседующего фразой вроде «Я никогда этого не делал, но мне кажется правильным следующая последовательность действий…». Искренность всегда подкупает, а ошибки в ответе не будут восприниматься строго. Если же Вы будете рассказывать «правильный» подход, не будучи в нём уверенным, и наговорите глупостей – врядли кто-то захочет брать Вас на работу.

4. Зачем вообще нужно тестирование?

Я не буду давать длительных советов по этому вопросу – или напишу отдельную статью. Просто убедитесь, что Вы знаете, как отвечать на этот философский вопрос.

5. Как определить качество продукта?

Этот вопрос, как и предыдущий, тоже распространён достаточно часто. Google поможет Вам быть к нему готовым.

Технические вопросы.

В мои планы в рамках этой статьи не входят рассказы про настройку DNS и запросы к базам данных. Но есть некие общие советы, которых стоит придерживаться:

1. Не пытайтесь сделать вид, что знаете что-то, если Вы этого не знаете.

Во-первых, нехватка технических знаний быстро компенсируется и работодатели редко уделяют очень серьёзное внимание этому вопросу. Во-вторых, неудачно скрываемое незнание всегда вызывает недоверие: можно ли верить остальным словам кандидата? А в-третьих, потенциальный работодатель может разделять моё мнение о том, что защищающие неправильную точку зрения люди чаще допускают ошибки в работе. По крайней мере, сотрудника, который хорошо разбирался в тестировании, но старательно доказывал что «в Windows нет поддержки динамических дисков», я на работу не взяла. Скорее всего, если бы он честно признался, что не знает, что это такое, решение было бы другим.

2. Если видите, что не очень удачно ответили на предыдущие вопросы – инициируйте ответы сами, но по темам, которые знаете лучше.

К примеру, если Вы неудачно ответили на вопрос про MS SQL, скажите сами, что зато Вы имеете опыт работы с Oracle и поэтому быстро сможете «перепрофилироваться».

Способность быстро и самостоятельно разобраться в незнакомой технологии или инструменте ценятся выше, чем имеющиеся знания. Не стесняйтесь хвалить себя. Если после Ваших слов о том, что Вы не разбираетесь в Rational Robot, собеседующий немного поник – гордо скажите, что зато в Silk Test Вы разобрались всего за неделю и сумели многое (конкретизируйте) в нём сделать. Естественно, здесь тоже говорить нужно правду!

Заключение

Главное – не бояться. Вы ищете работу, а работодатель ищет грамотного сотрудника. Вы оба заинтересованы в результате. Быть принятым на неподходящую работу – значительно хуже, чем получить отказ. Пробуйте, не нервничайте, учитесь! И развивайтесь для себя – а не для «галочки» на собеседовании. Удачи !

В интернете есть много материалов, посвященных собеседованиям с hr-менеджерами, но почти ничего не сказано о тонкостях прохождения собеседований с техническими специалистами. Данная статья посвящена тому, какими качествами и навыками должен обладать кандидат, чтобы успешно пройти этот этап и получить оффер в IT-компанию.

Диалог из жизни:

Кандидат: Мы должны выполнять операцию «А» до тех пор, пока не выполнится условие «Б».
Я: Отличный план. Давай его реализуем.

Кандидат пишет цикл в стиле for each. Хотя очевидно . Если кандидат прошел этот уровень, он рано или поздно станет хорошим программистом. Но 70% соискателей отваливаются здесь.

Богдан Гусев, СТО

Исправим это досадное неразумение.

while (bool offer == false){

Правило 0

Если вы собеседуетесь на роль java-девелопера, необходимо хорошо знать java и смежные технологии

//Без комментариев.

Правило 1

Подготовьтесь к собеседованию заранее

Заранее выясните у рекрутера все возможные подробности о проекте.

Поищите в гугле вопросы, которые обычно задаются на собеседованиях. Что-то из них точно попадется.

Александр Питц, Project Manager

Правило 2

Не врите в резюме

Пробовать обмануть, преувеличивая свои знания - это трата своего времени и времени компании. Вы должны уметь отвечать на вопросы по всем технологиям, указанным в вашем резюме.

Резюме, наполненное ключевыми словами, о которых вы не имеете должного представления, перечеркивает ваши шансы получить оффер.

Правило 3

Соотнесите свои ценности с ценностями компании

Каждая компания имеет свои ценности. Один коллектив ценит dedication и нацеленность на результат, и как следствие, не брезгует сверхурочной работой. Другой - новшества в работе, и готов изучать и применять инновации каждые пару месяцев. Третий - надежность и стабильность: проверенные технологии, преданных людей, которые не оставят компанию, если вдруг пропадут печеньки.

Есть допустимый предел расхождения ценностей, в случае превышения которого компания скорее примет решение не делать оффер, даже если у кандидата есть необходимый опыт и нужные технические знания.

Правило 4

Развивайте коммуникационные навыки

Я хочу, чтобы соискатель обладал коммуникабельностью более высокого уровня, чем базовая. В наш век полного аджайла это качество выходит на первые места среди необходимых навыков. Кандидат не должен испытывать затруднения в общении как с HR-арами и техническими специалистами, так и с заказчиками.

Правило 5

Совершенствуйте свой английский

В отличие от некритичных провалов в знаниях каких-либо технологий, вы не сможете подтянуть язык за пару месяцев. Тут уходят годы. Поэтому недостаточный уровень английского в большинстве случаев является достаточной причиной для отказа.

Немного мотивации: уровень английского и зарплата у киевских Java и.NET мидлов и сеньоров с опытом 3-5 лет соотносится .

Правило 6

Покажите увлеченность своей профессией

По мнению Богдана Гусева, о том, что вы получаете удовольствие от своей деятельности, может говорить наличие Open Source проектов, участие в тематических конференциях, владение фишками текстового редактора или IDE. И, конечно, интерес к деталям дальнейшей работы. Программисты, которые относятся к своему делу равнодушно, не пользуются высоким спросом у работодателей.

Правило 7

Покажите интеллект и абстрактное мышление

Кандидат обязан:
- уметь решать задачи, соответствующие его позиции;
- знать требуемый язык программирования и фреймворки;
- ориентироваться в технологиях проекта, на который его собеседуют.

Если позиция плохо определена, то проверяется общая эрудиция и интеллект, а также способность мыслить структурно и находить решения.

Очень важно показать умение пользоваться своими знаниями. Если вы знаете подходы и методы решения задач и умеете добывать недостающую информацию, то справитесь и с полученными задачами.

Правило 8

Демонстрируйте желание получать новые знания

Иногда кандидат говорит: «Я изучил технологию X и хочу работать только с ней. Зачем мне изучать технологию Y, если я знаю X?» Шансы такого кандидата на оффер резко снижаются. Технологии - это всего лишь инструменты. Через какое-то время X станет неактуальной, а вместе с ней - и сам специалист, который владеет только ею.

Максим Ковтун, Solution Architect

Правило 9

Покажите ориентированность на результат

Я оцениваю:
- умение пойти на компромисс со своими «религиозными убеждениями» (например, если того требует релиз, использовать «hot fix», а не подходить к решению фундаментально);
- умение настоять на своем, когда это необходимо;
- и еще важнее - умение держать правильный баланс между двумя пунктами выше.

Андрей Мудрый, Project Manager

Правило 10

Не говорите «не знаю»

Исключение: если вы никогда не работали с данной технологией, и она не указана в вашем резюме. В таком случае лучше сказать честно и попросить интервьюера объяснить вам правильный ответ.

Если не поняли, о чем речь, задайте уточняющий вопрос.

Если вопрос конкретный, и вы не уверенны в ответе, то стоит признаться в этом и обязательно высказать предположения, опираясь на свой опыт. Объясните ход ваших мыслей. Если вопрос открытый, то в нем нет единого правильного ответа.

Худшим ответом будет молчание или «я не знаю». Надо постараться решить поставленную задачу, как бы глупо ни выглядело ваше решение. Даже самый наивный ответ лучше, чем ничего. Два или три варианта ответа - это вообще замечательно. Приправьте эти ответы соображениями по поводу их применимости и дополнительными вопросами для уточнения задачи - и будет отлично.

Алексей Колупаев, СТО

Правило 11

Не стесняйтесь обучаться даже на собеседовании

Невозможно знать всё. Однажды я работал на проекте, где требовались знания довольно специфического стека технологий и картографии. Как показал опыт, немногие программисты могут перевести классическую запись координат из WGS84 в десятичное представление. В таких случаях хорошим ответом на собеседовании я считаю вопрос: «Можно заглянуть в гугл?»

Артем Полюхович, CTO

Правило 12

Думайте над тем, что говорите в ответ

Не нужно изображать усиленную мозговую деятельность в течение минуты, но попробуйте осмыслить задачу как можно шире. Тем более, на собеседованиях часто встречаются вопросы с подвохом.

Хорошо, если кандидат пытается «вывести» правильный ответ на вопрос. Не гадает, а применяет имеющийся багаж знаний, а также логику, сообразительность, находчивость и умение быстро принимать решения под давлением. Такое качество очень полезно в условиях гибкого подхода к разработке, когда заказчику требуется быстрое решение проблемы, иногда даже во время онлайн-конференции.

Сергей Чирков, Project Manager

Правило 13

Признавайте допущенные ошибки

Способность анализировать и признавать свои ошибки говорит о том, что вы будете заинтересованы как в собственном профессиональном развитии, так и в результате конкретной работы.

Правило 14

Не портите свою репутацию

Испортить мнение о вас может неосторожный ответ на вопрос «Почему вы ушли с такой-то компании?», неорганизованность, опоздание на собеседование без предупреждения, отказ решить тестовое задание.

Правило 15

Выстраивайте с интервьюером партнерские отношения

Мне кажется, в выражении «рабочие отношения» многие делают упор на «рабочие», а следовало бы больше на «отношения». В этом смысле собеседование похоже на свидание: вы оба присматриваетесь друг к другу, прикидываете, будет ли вам хорошо вместе. И когда кто-то усиленно пытается казаться лучше, чем он есть, это может вызывать раздражение. Иногда кандидат может захватывать так, что легко закрыть глаза даже на серьезные недостатки.

Алексей Колупаев, СТО

Правило 16

Ведите себя корректно

«Корректно» значит вежливо, уважительно. Надменность, заискивания или лесть по отношению к интервьюеру только испортят впечатления. Юмор тоже уместен не всегда.

Можно выделить несколько провальных стереотипов поведения:
  • друг - переводит разговор в неформальную плоскость, чтобы уйти от конкретных ответов на конкретные вопросы.
  • завоеватель - берет инициативу в свои руки, громко и много говорит, не дает задавать вопросы.
  • лентяй - после часа собеседования показывает, что испытывает настоящее мучение - такой вряд ли сможет интенсивно работать больше чем 1 час в день.
  • архитектор - создает большое количество бесполезных классов до того, как наметит план решения. В итоге это сам не может воспользоваться собственной «архитектурой».
  • теоретик - самый опасный тип, готов общаться на любые темы, лишь бы его не заставляли проявлять практические знания. Может легко описать алгоритм решения, но не в состоянии его запрограммировать.

Последний легко определяется по следующему диалогу:
Я: Возьмите на собеседование свой ноутбук
Кандидат: А зачем?

После такого диалога сразу видно, что кандидат считает, что главное в работе программиста - это разговоры о крутых технология на кухне. Он не знает, что программировать на знакомой клавиатуре гораздо проще, чем на чужой. Следовательно, проводит за ней мало времени. Интересно, как проходит его рабочий день?"

Богдан Гусев, СТО

Правило 17

Будьте адекватным:)

Адекватность - это достаточно широкое понятие. В первую очередь оно включает реакцию на сложные ситуации. Что делает человек, сталкиваясь с непонятным участком кода, сложным алгоритмом? Как он поведет себя с коллегами, когда ему от них что-нибудь понадобится (или понадобиться им)? Что он делает, если возникает конфликт интересов? А если на него поставят невыполнимую или трудновыполнимую задачу?

Артем Полюхович, CTO

Правило 18

Будьте оптимистом

Позитивный настрой - очень полезное качество. Гораздо приятнее работать с человеком, который умеет замечать положительные моменты в жизни, в работе, во всем.

Правило 19

Feel free

Собеседование - это дискуссия между двумя равными специалистами. Таким образом, скованность - скорее минус, чем плюс. Она помешает вам проявить себя на должном уровне.

Но слишком большая самоуверенность - это тоже минус. Монолог на 20 минут без остановок может послужить поводом для отказа.

Ведите себя естественно, не стесняйтесь. Например, если вам легче воспринимать информацию визуально, то не бойтесь попросить бумагу и ручку.

Правило 20

Если провалили, учитесь на ошибках

Воспринимайте собеседование как возможность узнать что-то новое и получить обратную связь. Это пойдет на пользу, даже если вы не получите предложение о работе.

Александр Кагановский, СТО

Виктория Придатко – известный эксперт в области позитивного управления ИТ-персоналом: её можно встретить на ИТ-конференциях, посвящённых менеджменту. В этом году она является одним из хедлайнеров конференции HR-специалистов в ИТ «Найти Ответ» в Питере. Мы публикуем её доклад с конференции Software Project Management Conference , которая в этом году пройдёт в Минске.
Презентация доклада Видео доклада

Текст доклада

Одна из моих любимых фраз – я её часто повторяю, поскольку это «Капитан Очевидность», –
Первое впечатление второй раз не создашь.
Первое впечатление является очень важным, и часто кандидаты составляют впечатление о компании именно по первому собеседованию. Если оно было негативым – очень трудно потом убедить их в обратном. Зачем вам это надо? Где могут пригодиться эти знания? Чем приятней общение с вами, тем лучше ваша репутация, тем больше денег и больше выбор. Когда вы известны, в хорошем смысле этого слова, когда на вас обращают внимание – претенденты хотят попасть на собеседование именно к вам. И чем больше людей хотят к вам попасть, тем больше компаний делают вам предложения. А чем лучше вы проводите собеседования, тем больше у вас принятых офферов. Часто ПМ-ы говорят так: рекрутеры не могут нам никого найти, поэтому мы не можем создать команду. Когда я прихожу к ним на техническое собеседование и смотрю, как они его проводят, – я понимаю, почему так трудно найти людей, которые согласились бы там собеседоваться. Хорошее собеседование – это шаг к должности менеджера: если вы ещё не менеджер, но хотите стать им, вам надо уметь собеседовать.
  • Собеседование – это коммуникация. Об этом мы и поговорим,
  • Как это происходит? Я буду рассказывать о своём опыте.
  • Ошибки в собеседованиях.
  • Признаки классного интервью.
  • Кто\что может помочь?

Интервью с HR-ом

Я не могу говорить за Россию, но в Украине сейчас в HR-ы берут очень симпатичных, не побоюсь этого слова – сексуальных девушек, которые всячески заманивают кандидатов. Как правило, организуются два интервью: с HR-ом и техническое. Часто кандидат на первом интервью расслабляется, а второе интервью очень сильно отличается от первого – собеседовать приходит технически сильный специалист. Проблема еще и в том, что очень часто такие специалисты хотят не сколько провести интервью, сколько показать себя. К сожалению, в компаниях этот процесс не всегда построен, и технических специалистов не спрашивают, когда им удобнее проводить интервью, – их просто вырывают из проекта. Как вы знаете, программисты работают в потоке, и им потом очень трудно в него вернуться... к сожалению, не все компании это учитывают. Соответственно, ощущения технического интервьюера следующие:
  • Чёрт, опять собеседование!
  • Ну, рассказывай что знаешь...
  • Ага, так этого ты не знаешь, бугага – опять рекрутеры пригласили тупняков.
  • А я вот знаю это и это, поэтому – я ПЕРЕЦ!
У меня как-то был такой опыт: мы очень долго искали джависта в одну компанию, и вот рекрутеры нашли классного джависта, пригласили на интервью, всё было супер, он пришёл во второй раз, и его собеседовал другой джавист, которому надо было самоутвердиться. В итоге он сказал: «Ну что, будем… меряться или поговорим?» Это впечатление просто убило кандидата, и впечатление сложилось соответствующее. Самое плохое, что эта информация потом транслируется дальше.
Почему так делать нельзя? Потому что по собеседованию люди часто составляют мнение о всей компании. Как известно – люди приходят в компанию, а уходят от менеджера. Допустим, во время интервью вы померялись… и ушли с ощущением, что вы классный, а кандидат ушёл с ощущением, что он ужасен, и что он будет рассказывать людям?.. Чем больше у вас таких собеседований, тем, к сожалению, меньше у вас кандидатов. Основные ошибки на техническом собеседовании:
  • Понты;
  • Умничанье и болтовня – когда люди компетенты в какой-то теме, они склонны эту тему развивать, и в результате интервью превращается в рассказ интервьюирующего о его любимом вопросе. Хочешь рассказать о себе – вали на конференцию и рассказывай, какая проблема?
  • Равнодушие – тоже часто встречающийся паттерн, когда технические интервьюверы сидят устало, вся их поза свидетельствует о том, что им страшно скучно и вообще непонятно, что они здесь делают… Опять же, это очень сильно зависит от того, как это организованно в компаниях. Я знаю компании, где этот процесс организован классно, где людям, проводящим техническое интервью, за это еще и платят...
  • Стресс-собеседование – такой вид панельного интервью, когда пять собеседующих тебя по очереди «мочит»… Хотя я видела интервью, когда интервьюировали пять человек и при этом была вполне дружественная обстановка.
  • Опоздание . Давайте уважительно относиться к кандидатам: мы часто вырываем людей из проекта их компании, мы забираем их рабочее время и при этом сами позволяем себе опаздывать… Моя позиция такая: если человек приходит к вам в обеденный перерыв – накормите его обедом. Для компании это копейки – предложите ему сэндвич, а не только кофе или чай! Или, допустим, кандидат пришёл вечером – если рабочий день заканчивается в 18:00, а вы пригласили его на 19:00, то понятно, что он пришел к вам голодный. Ребята! Простой сэндвич творит чудеса! Вы не поверите, как сильно у людей меняется впечатление о вас.
  • Отсутствие фидбэка . Итак, мы провели техническое интервью, а дальше мы считаем, что фидбэк – это ответственность рекрутера (я, кстати, тоже так считаю). Но фидбэк по техническому интервью должен давать тот человек, который его проводил. Когда мы звоним человеку – неважно, взяли мы его или нет – мы можем сказать ему, что нам понравилось, а что, на наш взгляд, можно улучшить. Чувство благодарности, которое возникает у людей после того, как вы им это рассказали, – это просто ни с чем не сравнимое ощущение. Они будут об этом помнить, и вы потом еще не раз удивитесь, в какие моменты это будет всплывать. Ведь кандидата всегда есть за что похвалить, и нет таких людей, которые вообще ни в чем не разбираются, – иначе мы не приглашали бы этого человека на собеседование. При этом очень важно сказать, что было хорошо, а что можно улучшить, и что плохо. У HR-ов есть такое выражение «зона развития»: не то чтобы у тебя всё плохо, просто у тебя в какой-то области наметилась «зона развития».
Бывает такое: вы долго искали человека, хантили, наконец, позвали его на собеседование и там задаёте ему вопрос: «А почему вы хотите работать в нашей компании»? И это называется «когнитивный диссонанс». А ведь это стандартный вопрос – люди просто не задумываются о том, что они спрашивают. Потому обязательно отслеживайте ресурсы, благодаря которым кандидат приходит к вам, – это действительно важно. Если вы хантите человека, то и сам процесс интервью должен быть другим, и вопросы должны быть построены по-другому. Какие последствия?
  • Не плюй в колодец . Иногда случается, что человек, которого вы собеседовали, потом может собеседовать вас. У меня был такой случай в жизни – у меня достаточно много знакомых, и, допустим, наша компания отсобеседовала кандидата не очень хорошо, а потом ты сам попадаешь к нему на собеседование, и он говорит, ага, сейчас я тебя отсобеседую.
  • Be nice or leave … Как я уже говорила, очень важно оставить у людей положительное впечатление. Для технических специалистов важна компетентность человека, который проводит собеседование, но его «хорошесть» (в хорошем смысле этого слова – его уважительное отношение, его «принятие другого человека») – важна не менее, чем техническая компетентность, а иногда даже больше.
  • Тот человек, которого вы собеседуете, может оказаться вашим руководителем или рекомендателем в будущем. Рынок непредсказуем – люди растут по-разному, переходят в разные компании и, соответсвенно, все друг друга знают.
Как лучше? Лучше общаться с кандидатом как с потенциальным коллегой и приятным человеком. Представьте, что человек попал к вам в команду: как бы вы общались с уже нанятым сотрудником? Неважно, возьмете вы человека или нет, – помните, что вы можете пересекаться с этим человеком, и всякие резкие суждения могут быть неуместны. Спрашивайте его из желания узнать что-то новое, а не из чувства превосходства. Все люди знают что-то, чего не знаем мы, и мы не можем знать всё. Потому мы должны проводить собеседование с искренним интересом и действительно слушать человека. А понять, что мы на самом деле не слушаем, очень легко – это видно по нашим глазам, по нашей позе. Даже если люди не владеют языком тела – они всё равно понимают, слушают их или нет. Спросите человека о том, что для него важно. Благодаря этому вы многое узнаете от самого человека: что важно для него и что из этого может быть важно для вашего проекта. Так вы поймёте, как его лучше мотивировать и как с ним лучше обращаться. Спросите, с какими людьми ему нравится работать? Это очень важный вопрос: если вы понимаете, что у вас на проекте люди совсем не такие, то это для вас тоже будет индикатором. Я всегда за честное интервью: я за то чтобы говорить правду. Вы можете рассказать человеку про проект, про людей, чем они отличаются от его ожиданий – и пускай он выбирает, подходит ему это или нет. Берите людей, которые обожают то, что они делают. В ИТ очень любят «сениоров», по ним сходят с ума, их перекупают. Но некоторые «сениоры» не любят то, что они делают. Да они «сениоры», они ценятся на рынке, они получают хорошие деньги, но они терпеть не могут то, что они делают. Порой они приходят, «звездятся», уходят и таким образом часто перемещаются по компаниям. Я знаю людей, которые не так уж мегакомпетентны на данный момент, но за счёт того, что они заинтересованы и обожают то, что они делают, – очень быстро могут стать «сениорами». Совпадение по ценностям и умению взаимодействовать могут стать более важными, чем знания. Навыки и знания – это те вещи, которые можно получить. Если вы не совпадаете по ценностям – то это проблема на более глубоком уровне. Конфликт на ценностном уровне может решаться, но решается он очень нелегко… Сначала надо узнать мотивацию кандидата, а потом продавать бенефиты компании. В каждой компании по-разному, но часто техническое и HR интервью проходят вместе. Что обычно делает HR? Обычно он «продаёт» компанию, не спрашивая, что интересно кандидату. А ведь все аутсорсинговые, а то и продуктовые компании примерно равны по уровню компенсаций. Но не всем, например, важна страховка. Бывает такое, что человеку рассказывают про страховку, а он спрашивает: «А у вас в команде есть люди, которые играют в баскетбол?» – он ищет есть ли у него общие интересы с командой. Выслушайте, что человеку интересно, и продавайте ему то, что ему интересно. Обязательно узнайте, чем увлекаются люди у вас в команде, и спросите об увлечениях кандидата. Когда я просматриваю резюме – я обращаю внимание на то, чем увлекается кандидат, расспрашиваю его об этом, а потом рассказываю об этом в команде, и тогда у людей в команде формируется о нем совершенно другое впечатление. Кстати, заранее расскажите команде о новом человеке – и я за то, чтобы интервью проходило с участием членов команды. Когда спрашиваете у кандидата о достижениях – уточните, кто может это подтвердить. Покажите кандидату офис, его рабочее место. Этот момент часто упускают. Человека обычно сразу ведут в переговорку, там с ним общаются битый час, а потом выводят через «ресепшн». Я не считаю, что показать офис, показать проект, в котором вы участвуете, – значит раскрыть коммерческую тайну. Для меня очень важно атмосфера в компании, куда я прихожу работать. Для меня важно зайти в комнату и почувствовать, «как там». Приведите человека в проект, покажите, где у вас кто сидит, – даже если он у вас не будет работать, он может порекомендовать других людей. Ваш внешний имидж должен соответствовать внутреннему состоянию, состоянию внутри компании. Покажите человеку то, что вам в компании самим нравится, то что вызывает у вас эмоции, – люди откликаются на эмоции, и, когда они видят, что вам это нравится, – им тоже это нравится. Проводите собеседование с юмором и энергией, УГ много в компаниях-конкурентах:). Если есть возможность провести собеседование с юмором – это создает положительное ощущение у кандидатов. Люди постоянно сравнивают: в этой компании было хорошее собеседование, в той – не очень, и если ваше собеседование будет отличаться от других, это может дать вам бонусы.