Окей, сейчас будет стыд.
Мне исполняется 33 и у меня в жизни было только 5 собеседований.
Вступление
Вспоминаю я о своих первых собеседованиях, когда речь заходит о XML или ассемблере. Сейчас будет история, в которой я расскажу о своих собесах и их ключевых моментах, которые даже спустя 10 лет не дают мне покоя.
Но начну я со своих мечт. Мечталось мне тогда сделать что-нибудь облачное или банковское. В основном меня клонило в такую специфику из-за ощущения, что компании из этих сфер используют интересные технологии, ведь обычые технологии навевали на меня скуку.
Первое
Первое собеседование прошло быстро. Это было небольшое здание, в котором по какой-то случайности находился офис. Снаружи здание выглядело хорошо, в этом здании находился банк или что-то такое, но мне нужен был соседний вход. Встретил меня деловой человек в костюме, возможно он был и директором и тянул свой бизнес один, а искал он человека, который мог бы ему написать заказное решение по каким-то бизнес проблемам. Офис состоял из кабинета директора и какой-то кладовки. Я представил, что меня посадят в эту кладовку, где я буду пилить бизнес продукт.
Один. Кладовка навевала тоску, но после одинокого времени, проведенного за написанием кода для диссертации, я решил, что мне нужно ощутить, как выглядит работа в команде: как люди пишут код, как ставят себе задачи, как оценивают время.
Я честно сказал, что мне такая работа неинтересна. А на вопрос, что интересного я прочитал из бизнес журнала, который я полистал до собеседования ожидая в коридоре, я ответил, что там приведены какие-то отчетные данные, а было бы намного познавательнее, если бы там рассказали конструктивно как решались задачи, какие решения принимались и почему. Я понял, что эта сфера не моя.
Второе
В Навителе после технического интервью пришел тим лид и рассказывал, как компилятор gcc собирается за две стадии и как это прекрасно. Еще он спросил, что за опыт с ассемблером у меня был, но я не был готов ответить развернуто на этот вопрос. Мне казалось, что сам факт должен был впечатлять без всяких дополнительных пояснений.
И получилось, что с одной стороны сидит опытный тим лид, который может оптимизировать C++ код с помощью флага O3, а с другой стороны я стал сомневаться в себе и вместо того, чтобы рассказать о том, как сначала наша C++ программа формирует данные юзера в бинарном формате, который оптимизирован для ассемблерной функции, которая очень тоскливо над этими данными страдает, порядка O(n^n) или O(n!), где каждый операнд этой функции продуман до мелочей и заточен под процессор, настолько насколько это возможно студентом, и все сделано чтобы моментально реагировать на каждое изменение биржевого стакана и вызывать эту функцию снова и снова для новых данных, потому что мы выходили на нано транзакции с алгоритмом, который показывал отличные результаты на обычных интервалах, вместо этого я сказал, что мы оптимизировали функцию, которая работала медленно. И все. Я так обычно делаю, чтобы не утомлять гуманитариев терминами, но здесь явно был другой случай.
Третье
В Сбербанке мне понравилось большое здание, как само по себе так и открытое рабочее пространство на высоком этаже. В большие окна проникал серый свет обычного осеннего дня нашего города, отчего небольшие столы отделенные перегородками не казались такими маленькими.
Там меня напугали, что они практикуют экстремальное программирование. На что я ответил, что я не знаю, что это значит, но я бы хотел попробовать. Мне ответили, что в целом это означает, что каждый день от начальства приходит новое задание, которое нужно срочно решить, а если не справляешься до конца рабочего дня, то... сидишь пока не сделаешь и это не оплачивается. В этот момент мне почему-то померещился звук хлыста и как будто программисты, которые слышали этот разговор, очень горько и буззвучно вздохнули.
Примером таких еженедельных задач может быть обработка данных приходящих в XML и представление их в виде таблиц, графиков и диаграмм. Из всего сказанного я смог зацепиться за XML формат, и спросил почему не используется JSON вместо него, ведь он компактнее?
Как только я задал этот вопрос, слева от меня из-за стеклянной перегородки отклоняется на стуле один программист и с налетом испуга смотрит на меня и вроде как тоже хочет узнать ответ на этот вопрос.
Ох, этот момент! Эта немая сцена все так же живо прокручиваетя у меня в голове, как и тогда. Женщина, которая меня собеседовала, посмотрела на меня укоризненно, и тот программист снова спрятался за своей перегородкой. Ответа на мой вопрос не последовало.
Четвертое
И, наконец, банк и облачные хранилища в одном месте, в одной компании. Я сказал, что хочу знать что такое облачная файловая система, а мне ответили, что такого не существует и дали решать задачку про бочки. Их то ли надо было упорядочить, то ли наполнить, но я чувствовал, что лишь хожу рядом с ответом, хотя и нагенерировал тогда много разных подходов. Если б задача хоть как-то относилась к программированию, то собеседователя бы это впечатлило, но мне попался любитель головоломок и его не удовлетворило, что я не нашел ответа.
Мне это, конечно, напоминает, как на первом курсе университета я завалил курс программирования и сдал его на 3. Все потому, что мне попалась задача с входными данными на бесконечной ленте, которые нужно было обработать. И я подошел к ее решению так, как нас учили - прочитать весь вход и сохранить его в памяти. Для меня тогда было открытием, что в память можно загружать только часть данных, только то, что нужно на текущем шаге, а программа может быть бесконечной.
Есть какие-то вещи, которые открываются для программиста не сразу, а приходят при решении задач и при общении с более опытными коллегами. Так и с этим собеседованием, я полагал, что им нужны обычные джуниоры.
Пятое
На последнем собеседовании нужно было продемонстриовать полиморфизм на примере коровы и посчитать вероятность выиграть в казино.