«Это что! А вот у меня на собесе было…», или Байки с технических интервью

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

Мы проводим конференцию C++ Russia, и как-то трое участников её программного комитета (Сергей Платонов @sermp, Алексей Веселовский и Павел Филонов) собрались на YouTube-стриме поделиться своими историями: и тех, когда собеседовали их, и тех, когда они сами рассматривали кандидатов. 

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

NDA

Алексей: Важный вопрос: мы называем компании или нет?

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

Сергей: Я тут встретил обратное NDA, когда в письме написали «Пожалуйста, ни в коем случае, ни при каких обстоятельствах не рассказывайте, чем вы занимаетесь на текущей работе».

Алексей: Ага, а то их потом судят, и им надоело. 

Павел: Это во время собеседования, если тебе зададут вопрос «Чем занимаетесь сейчас?»

Алексей: «Расскажите о себе!»

Сергей: Ну да, «расскажите о себе что-нибудь интересное». И большими буквами надо выслать подтверждение именно этого абзаца [про NDA]. Эйчар просит перед каждым раундом собеседования отдельно подтверждать, что ты это прочитал.

Павел: Это, наверное, «написано кровью» — были прецеденты, разбирательства, и с тех пор появились эти строки.

Алексей: Приходит к тебе чувак, который занимался разработкой ядерной бомбы. Говорят: «Расскажи о себе», а он начинает рассказывать. Потом к ним приезжают, вычисляют всех собеседующих и с кем они успели поговорить, и они исчезают целиком.

Сергей: На самом деле всё проще, это трейдинг. Ты рассказал, каким продуктом торгуешь и всё. Потом начинаются проблемы. 

Не сошлись взглядами

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

Тогда парень попросил меня рассказать определение потока. А именно в этот день я читал у студентов лекцию по теории операционных систем, и у меня было свежо в голове определение Таненбаума: поток — это минимальная единица управления планировщика задач. И я, особо не задумываясь, выпалил это в ответ.

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

Я сказал: «Отлично, значит мы найдем общий язык». А дальше я начал втирать, что многопоточное программирование — это очень плохая идея, я против него и всегда объясняю людям «Если вы можете решить вашу задачу без многопоточного программирования, пожалуйста, делайте это без него».  

В общем, мы не поняли друг друга. Скорее всего, поэтому в ту команду меня не позвали. 

Не сошлись языками

Алексей: У меня был случай еще интереснее. Я был начинающим программистом, работал в Сарове, начал искать другие возможности поработать. И меня пригласила на собеседование в Москву крупная международная компания. А от Сарова до Москвы ночь ехать на поезде.

Приехал, с утра поднялся в офис. У меня резюме С++ программиста, все дела. 

Меня начинают собеседовать — сначала HR, затем технические специалисты, и тут выясняется, что им нужен джавист!

Сергей: Они оплатили тебе дорогу?

Алексей: Нет!

Сергей: Ну, прекрасно вообще.

Павел: Это еще те времена, когда нужно было ехать в другой город. Сейчас, согласись, всё решилось бы очень просто: короткий созвон в Zoom или Skype. 

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

Павел: Не на первом этапе. Даже крупные компании делают этап прескрининга на созвоне. Так мне удавалось за 15 минут понять, что обсуждать нечего.

Прим. редактора: а вот если вы как раз джавист, вам может быть интересно «техническое интервью с Евгением Борисовым», которое пройдёт в среду на нашей конференции Joker.

Мы не ждали вас, а вы…

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

Ближе к концу локдауна нашлась одна компания недалеко. Я прошел все этапы онлайн, и эйчар пишет: «Приходите во столько-то, все технические части прошли, но осталась синхронизация с командой и всё такое». 

Я прихожу, вижу дверь во дворах. А компания довольно крупная, у нее свои производственные мощности и всё такое, в том же здании. Дверь открыта, на ней — магнитный замок, а рядом с дверью — камера. 

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

— А вы кто, почему тут сидите? Это закрытая территория. 

— Я такой-то, мне назначено.

— Да? Мне казалось, я вам через Zoom назначила собеседование. Черт, ну ладно, пойдемте. Только там сейчас совещание, никто не готов.

Оказалось, что меня никто не ждет, я никому не нужен и все недовольные: уже вечер. У меня было три технических части собеседования у разных команд, сидели три технических менеджера и 15 «просто» менеджеров. 

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

Алексей: Называется «мы не ждали вас, а вы приперлися».

Павел: Помню, Илья Шишков @ishfb сказал отличную фразу: «Очень важно у кандидата создать правильное впечатление в конце собеседования о том, какой ответ он получит». 

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

Надо избегать такого диссонанса. И эти менеджеры тебе явно намекали: «Если получишь отказ — не удивляйся, ты и так это видишь». 

Сергей: Сразу с порога :)

Павел: Надо правильно управлять ожиданиями. 

Ни слуху ни духу

Сергей: Кстати, есть ещё термин «гостинг» (ghosting) — когда эйчары после собеседования игнорируют тебя, не отвечают. Это жутко раздражает, когда ты потратил время и готовился.

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

Сергей: Проблема в том, что встречаются компании, которые гостят. Так получается. Есть даже база данных HR, где люди оставляют фидбек, как быстро компании отвечают соискателям, гостят ли и всё такое. 

У меня политика такая: мне всегда интересен результат, даже если я на самом деле не хочу устроиться в компанию. Я пишу через неделю, раз в неделю. И очень неприятно, когда твои письма уходят в /dev/null — непонятно, зачем всё это было. Можно же ответить «мы не готовы, еще думаем». 

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

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

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

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

Павел: Иногда надо потратить время и силы, чтобы сформулировать отрицательный ответ. Это тяжелее всего, хотя есть шаблоны обратной связи. Найдите за что похвалить, потом укажите конкретные конструктивные пункты, предложите дальнейшие шаги («связаться через год» или «поработать над этой стороной»).

Жизнь замечательных зверей

Павел: У меня есть стандартная задача для тестового задания (кстати, не знаю, почему многие против тестовых заданий, у меня конверсия шикарная): написать игру «Жизнь» Конвея. И указываю просто «напишите игру “Жизнь”». Естественно, предлагаю задавать дополнительные вопросы: интересно, будет ли это делать человек. 

Я видел разные решения, но одно из них меня просто удивило. Я отправил задание, получил подтверждение: «Задание получил, понравилось, вернусь с ответом». 

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

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

Алексей: Это проверка на погруженность в индустрию и знание основных наших культурных наслоений.

Павел: В том числе. Кстати, многие почти моментально возвращаются с вопросом вроде «Я погуглил: клеточные автоматы, “Жизнь” Конвея, всё верно?» — я подтверждал. Кто-то не задавал вопросов и приходил с решением. 

Кто-то начинал правильно задавать вопросы: «Что там с границами, зациклены ли они, нужна ли графика, что вообще требуется, какие условия сборки?». Это интересные люди, с ними можно пообщаться.

А иногда прилетает интересный код с котиками и собачками. Здесь как раз тестовое задание сэкономило время на дальнейшую коммуникацию. 

А можно такое же CV, только в .doc?

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

Я говорю: «О, в первый раз вижу, чтобы юридические документы оформляли в LaTeX — это так круто! У меня резюме в LaTeX!».

А он: «Знаю, мы тебя потому и позвали. У нас есть несколько фильтров по скиллам, и после них мы ещё смотрим, в чём у них резюме. Если говорят, что поддерживают опенсорс, а сами делают резюме в Microsoft Office, то мы им отвечаем ”Простите, вы не подходите по формальным требованиям”». И вот сейчас я работаю как раз на этой работе благодаря любви к LaTeX!

Павел: То есть, чтобы устроиться на работу С++ программистом, надо ещё и LaTeX знать. 

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

Павел: moderncv наше всё, у меня в нём резюме уже десятки лет.

Сергей: Мне всё-таки больше нравится в LaTeX стиль, кажется, для научных статей — он очень красивый, лаконичный, изящный. Меня несколько раз даже спрашивали, что это, и как сделать так же. Так что на резюме тоже стоит обращать внимание. 

Алексей: Частенько народ присылает просто с HeadHunter.

Сергей: Мне как-то слали в текстовых файлах. 

Алексей: В текстовом файле в целом ок, вполне может быть читабельно.

Сергей: Меня смущают люди, которые присылают информацию о себе, когда ее легко можно случайно поменять — удалить, сохранить и так далее. 

Павел: То есть ты ждешь, чтобы присылали не просто  PDF, а еще и подписанный, со ссылкой на GPG-ключ. 

Алексей: Подписанный txt можно прислать!

Сергей: Или хотя бы хеш сразу выслать с txt-файлом.

Алексей: Конечно, у тебя же при сохранении ending поменялись.

Сергей: Когда в нулевых я присылал резюме в PDF, эйчары меня просили прислать текст или .doc — это была такая боль, я такое игнорировал. «Извините, мне не настолько интересна эта работа, чтобы я переделывал резюме из своего красивого LaTeX».

Павел: Ты же можешь прислать ссылку на PDF Viewer.

Сергей: Да, но когда это ИТ-компания, которая занимается аутсорсом и твой друг работает там сисадмином, а эйчар говорит такое… 

Прости товарищ, но чем вы там таким на аутсорсе занимаетесь, что ваш эйчар не может PDF открыть? 

Павел: Мне всегда в резюме очень нравится, когда прикладывают ссылку на GitHub-профиль. Я практически всегда иду смотреть. 

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

Я полез в его GitHub и увидел, что у него лет 10 назад было решение игры «Жизнь». Отлично, уже решенное тестовое задание, 10 лет назад его сделал!

Сергей: Представляешь, я буду прикладывать ссылку на свой GitHub, а у меня самый большой contribution — PHP-сайты для конференций.

Павел: Нормально! Но все равно хоть что-то есть, понятно, чем интересуешься. У меня GitHub — жуткая помойка, кажется, там ничего нормального нельзя найти.

Сергей: Ты же программируешь на Exchange, конечно!

Павел: Да, но сейчас уже другие почтовые программы. В PowerPoint… или нет, в чем сейчас там модно? В Google Slides, да!

Старые травмы

Сергей: Однажды меня позвала компания, которая делает медицинских роботов для хирургии. 

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

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

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

Павел: Скажут ещё «Иди отлаживай, бери робота, подключайся к нему». 

Диплом — не пустой звук 

Павел: У меня случился казус при собеседовании в крупную международную компанию, когда выпало очень много снега. Я подъезжал к офису, всё пытался найти место, чтобы припарковать машину. Нашел сугроб, и залезть в него я смог, а вот вылезти уже нет.

В итоге время, когда я должен был быть в офисе, я стою, пытаюсь поймать кого-то, чтобы меня выдернуть из сугроба и уже заказываю эвакуатор. Звоню эйчару, объясняю ситуацию, что у меня практически ДТП, мол, я недалеко от вас, но сильно опоздаю на собеседование на неопределенное время и предлагаю его отменить. Мне говорят: «Нет-нет, ни в коем случае, давайте, старайтесь». 

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

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

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

Если они видят у кандидата PhD, надо обязательно пообщаться, это очень умный человек. У них это считается особым достижением. У нас тоже, но по другим причинам: «человек переборол непонимание, зачем это нужно, и просто сделал».

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

А, был еще один раз — я собеседовал на позицию С++ разработчика. И задал как раз «вопрос про NDA»: где работал. 

Он открыл «Википедию», показал ракетные установки, которые он программировал: вот, говорит, программировал блок наведения антенной части вот этой ракетной установки. 

Я говорю: «О, это же наверняка фазированные антенные решетки». Он: «Конечно, фазированные, какие же еще». А я писал диссертацию по определенным методам расчета диаграмм направленности.

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

Зато с удивлением увидел, как интересно человек готов отстаивать свою позицию с повышением голоса, кулаком стукнуть. Учитывая, что он программировал до этого ракетную установку, я понял, что это серьезно!

Сергей: Да, страшновато. Не туда стукнет — и всё.

Павел: И полетит не туда ракета. 

Код на бумажке

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

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

Задал ему одну из классических задач собеседований — распечатать односвязный список с хвоста. А он очень сильно оскорбился, спросил: «Что, мне прям сейчас на бумажке писать код?»

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

Когда было мало проекторов, и у доски приходилось писать код, рука была как набитая. Сейчас я пользуюсь этой возможностью — будет весело, это же for fun, ведь обычно я так не делаю. Это для меня элемент развлечения.

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

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

Я показывал «грамотное программирование» (literate programming) — идеологию, которую продвигал Кнут, даже компилятор был для С. И я показывал этот стиль. По-моему, шикарно подходит, чтобы что-то программировать на бумаге. 

Алексей: Ты больше пишешь документации, чем кода?

Павел: Нет, там, где нужно писать код, подставляется конструкция в угловых скобках [здесь будет код, который делает вот это]. А потом ниже начинается «код, который делает вот это, выглядит вот так».

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

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

Алексей: Получается проектирование сверху вниз.

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

Павел: А ты помнишь, что означает «патч», когда речь о перфокарте? Надо реально скотчем дырки заклеивать.

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

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

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

Что? Где? Когда?

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

Бывает, конечно, что ты должен знать несколько областей, но когда у тебя час-полтора на собеседования, а у тебя спрашивают «Сколько байтов занимает порт в TCP-пакете?» или «На какой позиции IP-адрес в IP-пакете?», а следующий вопрос: «Пожалуйста, реализуйте идиому детектирования не используя С++ 17, только С++ 11» или «Пожалуйста, напишите quick search». И всё в полутора часах свернуто в кашу — терпеть не могу. 

Павел: Обычно говорят так: нанимающий менеджер за первые пять минут собеседования знает, пригласит он специалиста или нет. А остальные 55 минут он просто пытается найти подтверждение своей первоначальной идеи. Или ее опровержение. 

Сергей: Ладно еще нанимающий менеджер, еще потом технический собес. 

Павел: Мы на C++ Russia проводим активности, где показываем, как собеседовать — в том числе, чтобы инженеры учились это делать. 

На все руки

Алексей: У меня такой вопрос: а что, собеседования менеджеры проводят?

Павел: Бывает. Я любил посидеть, помолчать, послушать.

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

Вот недавний пример про Type Erasure: тебе нужно регистрировать объекты. Ты вызываешь какую-то функцию с объектом, проверяешь, вызывалась ли она с объектом или нет. Первый раз ты должен вернуть false, потому что ее не видел, а в последующие разы — true.

Сначала пишут функцию для фиксированного int или char, потом просишь для какого-то типа в C++. Или нескольких типов. Или вызывать ее для объекта любого типа. Разворачиваешь ее раз за разом и смотришь, как человек действует. Потом совсем непонятные требования: сделать, чтобы поиск внутри этого type operation был не такой тупой, а побыстрее.

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

Сергей: Я помню, как у меня в первый раз такое в FAANG спросили. Я, наивный деревенский мальчик, приехал туда с опытом решения git-кода. Несколько интервью, несколько алгоритмических сессий я прошел так, что человек вышел, рассказал, чем занимаются, потом попросил подождать, ушел, принес мне внутреннюю документацию и говорит: «Когда тебе принесут офер, тебе можно будет тратить время на изучение, почитай и иди к нам, пожалуйста, смотри какие у нас классные штуки».

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

И тут следующий собеседующий говорит: «А напишите, пожалуйста, как бы вы подошли к решению, нам нужно в Google Maps сделать таймлайн». 

Я даже не знаю, что такое таймлайн, спрашиваю, а что это такое. Ответ: «Ну, места, где вы бывали». А я пришел сюда алгоритмические задачки решать. Я 20 минут пытался понять, что вообще от меня хотят, что это за дизайн системы и вот это всё. 

Алексей: А эту задачку можно решить чисто алгоритмически?

Сергей: Да, но для этого тебе нужно сформулировать, что на входе, что на выходе. А здесь нет, просто говорят: «Есть Google Maps, сделайте, пожалуйста, таймлайн».

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

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

Павел: «А мы просили вас сделать немножко другое».

Алексей: А потом эта фича появляется в их продукте!

Почему вы хотите у нас работать?

Сергей: Обычно программисты — боги, а эйчары бегают к ним на поклон. 

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

В какой-то момент я решил, что буду менять работу, стал принимать предложения собеседоваться, смотрел проекты. Однажды решил: мне нужно постоянно быть в тонусе, ходить потоком на собеседования. Зовут — иду!

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

Да я даже не знаю, как ваша компания называется! 

Оказалось, что она написала мне в письме, когда будет созвон, а дальше огромный блок, что я должен подготовить к разговору с эйчаром, простыня текста… И такого возмущения по телефону я никогда не слышал!

Павел: Нервная работа — общение с людьми, можно понять.

Алексей: Не с людьми, с программистами!

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

Random Coffee

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

Меня позвали знакомые эйчары, и я согласился. 

Прихожу. Открывается дверь, а там Саша: «О, привет!». 

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

Он дает первую попавшуюся задачу, для него главное — сделать отчет. Мы быстро поговорили, порешали, разобрались. Говорю ему: «Пойдем кофе пить».

И он начал рассказывать, что вообще делать надо. Я с тех пор перенял этот опыт и сам провожу собеседования так: вижу, что человек сидит сосредоточенно, типа нужно быть готовым отвечать на любые вопросы. А я говорю: «Так, ладно, пойдем кофе пить». И веду его в кофейню, рассказываю, что мы вообще делаем, будет ли это интересно или нет. Некоторым нравилось. 

Сергей: А некоторым нет?

Павел: Некоторым не нравилось, если после этого был отказ.

Алексей: Плохо кофе попил!

Тесты, тесты, тесты

Павел: Как-то раз я пришел на собеседование, и это была длинная секция на целый день.

Первая часть на пару часов — алгоритмические задачки и прочее. 

Затем следующая часть — написание настоящего кода. Мне принесли ноутбук, дали задачку — отсортировать массив, который не помещается в оперативку. Обсудили со мной, как я предполагаю ее решать. Я вспомнил какое-то многопутевое слияние из теории сортировок — окей.

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

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

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

Всем давали один и тот же ноутбук на Linux — я сразу посочувствовал тем, кто с этой ОС не сталкивался. 

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

Допрос

Алексей: Я помню другую дичь. Я приехал в Москву собеседоваться в одну компанию среднего размера.

Она находится не в самой Москве, а где-то в Зеленограде или другом сателлите. Я туда приехал весь такой из себя, думал, сейчас пособеседуюсь с людьми. 

Пришел — а там абсолютно голая переговорка, всё было покрашено масляной краской, практически застенки Гестапо.

Мне дали заполнить анкету — кто я такой и так далее. А потом выдали огромную стопку теста на бумаге на С++ — типа сиди, решай. Я прорешал, мне сказали: «Спасибо, свободен». Со мной даже никто не поговорил. Просто пришел, проставил на бумажке «да», «нет», «может быть» и всё. 

Павел: А баллы потом тебе сказали? Сдал ЕГЭ или нет?

Алексей: По-моему нет. Я не помню, ответили мне или нет, но в итоге мне офера не было.

Это, наверное, было худшее собеседование на моей памяти. Там, где я рассказывал, что был нужен джавист,  было хотя бы интересно — прошелся по офису, пообщался с людьми, что-то увидел. А тут словно на допрос пришел, заполнил анкету и всё. Максимально бесчеловечное собеседование.  

А я еще и на машинке шить умею

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

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

Я говорю: «Вы знаете, а у нас в Новгороде точно смогу собрать команду. Может мы в Новгороде офис откроем, раз меня взяли?»

И мы прямо на собеседовании договорились — а давай!

В итоге я собеседовался на программиста, а внезапно стал открывателем и руководителем офиса, а заодно программистом. Это самое забавное интервью, которое у меня было. Когда пришел, увидел и открыл офис. 

Павел: Отлично, ты оказался в нужное время, в нужном месте, с тем, что ты умеешь делать.

Сейчас вот будет тебя крупная международная компания приглашать, а ты: «Слушайте, я тут могу тысячу человек со всей России привезти, давайте в России откроем офис и сделаем меня генеральным директором». Они: «Тысячу программистов?». А ты: «Да, конечно, все в шаговой доступности».

Сергей: Боюсь я не не такой уж лидер сообщества, как ты думаешь. Пойдешь работать ко мне, Паш?

Павел: Всё, отлично!

Сергей: То есть первый наём я уже сделал, еще компании нет, а наём уже есть.

Алексей: На конференцию мы продаем входные билеты, а выходные не продаем. 

Павел: И на входе сразу подписывают всё, что нужно. Выдаем бейджик и трудовую книжку.

Сергей: Почему каждый раз тяжело людей заманивать на конференцию? Потому что все знают, чем всё это кончится.

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

Раз вы дочитали этот полный баек пост до конца, вас не на шутку интересуют то ли собеседования, то ли разработчики на С++.

Если вы неравнодушны к языку, зовём вас на конференцию C++ Russia 2021, в программном комитете которой состоят собеседники из этого поста. Она пройдет онлайн с 15 по 18 ноября.

Если вы интересующийся собеседованиями джавист — обратите внимание на Joker (с 25 по 28 октября), где Евгений Борисов проведет суровое интервью с участниками программного комитета. 

А если вас разносторонняя личность и вам интересно многое, обе этих конференции и ряд других входят в абонемент Full Pass. Из наших докладов можно узнать немало того, о чём спрашивают на собеседованиях!