Мне очень давно хотелось написать заметку на эту тему, но что-то все никак руки не доходили. А тут недавно я наткнулся на замечательный пост , который так точно отражает мое видение ситуации, что я даже подумывал просто взять и перевести его на русский язык. Но в конце концов я решил все-таки написать свою версию, немного расширенную и чуть более адаптированную к российским реалиям.
Чисто на случай, если для кого-то это не вполне очевидно, сообщаю, что на собеседовании не только оценивают вас, но и вы оцениваете потенциальное место работы. Поэтому прийти, порешать задачки , а затем отправиться домой ждать звонка — не лучшая идея. Чтобы получить представление о компании и условиях работы в ней, нужно задавать вопросы. Примерно такие.
1. Какая методология разработки используется в команде? Scrum, водопадная модель, XP, или что? Правильный ответ — Scrum или Scrum с элементами XP. Чистый XP в России, насколько мне известно, никто не практикует. Абсолютно неправильные ответы — водопадная модель или «не знаю».
2. Вообще, расскажите поподробнее о вашем воркфлоу. От кого поступают запросы на написание новых фичей, кто пишет ТЗ, как производится тестирование, чем катите, какой багтрекер, а также какие системы непрерывной интеграции и контроля версий используются? Правильный ответ примерно такой. Фичи просят менеджеры, ТЗ пишут аналитики, тестирование производится в несколько этапов (функциональное, нагрузочное, альфа, бета) командой тестировщиков, катим deb-пакетами, используем Jira, Git и Jenkins. В некоторых компаниях ТЗ пишут менеджеры прямо в Jira, в принципе, это ОК. Jenkins до сих пор используют не везде. Его, в общем-то, нетрудно внедрить. А вот, например, отсутствие системы контроля версий или команды тестировщиков обычно является тревожным знаком.
3. Почему вы нанимаете? Годный ответ — бизнес растет, задач очень много. Ни на что не годный ответ — неделю назад команда разработчиков дружно встала и ушла.
4. Чем мне конкретно предстоит заниматься? Тут заодно можно расспросить об используемых компиляторах, операционных системах и версиях СУБД. Ответ в стиле «вам предстоит писать на Erlang часть системы, отвечающую за обработку котировок, там используется Erlang R16, LevelDB и все это крутится на CentOS» считается правильным. Ответ типа «мы пишем высоконагруженный стартап , но не можем о нем рассказать, так как заказчик заставил подписать NDA» должен вас насторожить. Ответ вроде «как мы уже отметили, нам нужен профессиональный CSS-программист со знанием JavaScript, Ruby, NoSQL и Django» считается очень, очень неправильным.
5. Каков размер команды? Если в команде до пяти-шести программистов, это ОК. Если больше, это повод задуматься. Возможно, начальство пытается успеть сдать проект к дэдлайну, наняв побольше людей. А может быть, баги лезут из-за всех щелей с такой скоростью, что команда не успевает заниматься ничем другим, кроме их исправления.
6. А сколько, вы говорите, лет проекту? Чем старше проект, тем больше вероятность, что это ужасный легаси говнокод, а поддерживающая его команда программистов полностью меняется в течение одного года. Если проекту не более пяти лет, скорее всего, бояться вообще нечего. Если же системе лет 15 или даже больше, скорее всего, работа над ней окажется сомнительным удовольствием. Если где-то посередине, то ничего непонятно.
7. Расскажите, пожалуйста, о вашем соцпакете. Если соцпакета нет, а есть только зарплата и 28 дней отпуска, это не очень круто. Если есть халявные кофе и печеньки, а также бесплатные обеды, медстраховка, деньги на новый ноутбук, занятия английским в офисе , оплачиваемое посещение конференций и прочие нештяки, это большой плюс.
8. А могу я взглянуть, где у вас работают программисты? «Нельзя» — плохой ответ. Плохо, если программисты работают в большом душном опенспейсе вместе с бухгалтерами и отделом продаж. Плохо, если программисты сидят в узких кьюбиклах. Если программисты сидят в старом курятнике рядом с грудой гудящих одноюнитовых серверов, это очень, очень плохо! Хорошо, если программисты работают отдельно от остальных коллег в небольшой тихой кондиционируемой комнате человек на семь, с широкими столами и удобными креслами. И при этом есть свободное место спиной к стене.
9. Расскажите о зарплате. Лично я считаю, что белая зарплата — это плюс, хотя кому-то пофиг. Узнайте, есть ли премии. Мне всегда казалось, что премии — это такой развод. Как бы, зарплата, которую на самом деле могут не дать. Но кто-то может со мной не согласиться. Выясните, как часто производится пересмотр зарплаты. Хорошо, если раз в год, плохо, если никогда. Спросите, есть ли прозрачная схема повышения зарплаты. Хорошо, если есть. Например, где-то зарплату повышают на определенную сумму за каждый поддерживаемый проект, а где-то увеличивают на сколько-то процентов каждый год. Однако учтите, что если расспрашивать про зарплату слишком долго, вы рискуете произвести негативное впечатление.
10. Оцените уровень кровавости вашего энтерпрайза по шкале от 1 до 10. Насколько гибок рабочий график, возможно ли работать удаленно, например, в случае болезни. Стоит ли менеджер над душой, спрашивая каждые 10 минут, когда будет готово, или же дает задачу и идет по своим делам? Приходится ли ежедневно отчитываться о своей работе, сколько часов на какую задачу было потрачено? Ходят ли программисты в рубашках и галстуках? И так далее.
11. Как бы вы оценили стрессовость работы? Есть ли постоянные факапы в продакшене, регулярные переработки, спущенные сверху сроки, звонки по ночам от службы поддержки, вечно орущий начальник и все в таком духе. Вряд ли вы наслаждаетесь стрессом.
12. Сколько времени вам понадобится на решение? Просто чтобы не было недоразумений. Где-то могут позвонить на следующий день, где-то собеседуют многих программистов в течение нескольких месяцев и выбирают пару наиболее понравившихся, а где-то и вовсе никого не ищут, а так, смотрят, не зайдет ли случайно настоящая рок-звезда.
Можете еще поспрашивать про качество кода и текучесть кадров, но, скорее всего, никто вам на эти вопросы честно не ответит. Можете спросить про нагрузку проекта (число запросов к системе в секунду, количество пользователей и так далее), но, по моему опыту, как ни странно, это не имеет особого значения. О том, сколько именно вам будут платить, спрашивать не нужно. Тот, кто вас собеседует, сам поднимет этот вопрос, не сомневайтесь. Кстати, кое-какие мои соображения касательно поиска работы, в том числе, на счет того, как отвечать на вопрос о желаемом уровне зарплаты, вы можете найти в этой старенькой заметке .
Учтите также, что нужно не только слушать ответы, но и смотреть на то, как ведет себя человек во время ответа. Ведь существенная часть общения происходит невербально! Важно, кто именно вас собеседует. Хорошо, если это делают сами программисты, менее хорошо, если технический директор, плохо, если HR. А если вы проходите собеседование в кадровом агентстве, тогда я вообще не понимаю, каким местом вы думаете.
Дополнение: Мой скромный опыт в роли рекрутера