Илья Шишков: код, собесы, IT
3.2K subscribers
79 photos
6 videos
4 files
215 links
Обо мне: C++ эксперт, ex-Яндекс, создатель курсов «Пояса по С++», спикер.

Переходи в закреп и читай лучшие посты о внутрянке технических собеседований в крупные IT-компании — https://t.me/imhired/251

По всем вопросам: t.me/ishfb
Download Telegram
🎄 С Новым годом!

В 2024 году я вам желаю:
1️⃣ Каждый день жить полной жизнью, наслаждаться тем, что с вами происходит
2️⃣ Встретить 2025-й в полном здравии
3️⃣ ... кажется, это главное 👆
Пост хейта к Яндекс Лавке

В программировании и в IT в целом есть такое явление как "протекающие абстракции". О них хорошо написано в статье 20-летней давности.

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

👉 Классическим примером протекающей абстракции является SQL. Это декларативный язык, на котором программист описывает, какие данные он хочет извлечь. Процесс извлечения данных и способ их хранения перекладывается на СУБД. Всё работает хорошо до тех пор, пока база не станет слишком большой и запросы к ней не начнут тормозить. И вот тогда абстракция протекает: нам приходится добавлять индексы и переписывать запрос, чтобы он выполнялся быстрее.

Есть ещё одно абстрактное утверждение: "Интернет-бизнесы существуют, чтобы решать проблему пользователя и зарабатывать деньги". Сегодня эта абстракция у меня протекла на примере Яндекс Лавки.

Я был проездом в Москве, и у меня было несколько часов между поездом и самолётом. Ещё находясь в метро, я сделал заказ в Лавке. Ехать мне оставалось 20 минут, а заказ пообещали привезти через 25 минут — идеально.

Когда мне оставалось ехать 2 станции, мне позвонил курьер и спросил, почему я не открываю ему дверь 🤷‍♂️. Из-за шума я не стал ему отвечать, а тут же написал в поддержку, что меня надо подождать. Мне подтвердили, что курьер подождёт 👍

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

Дальше, кажется, всё должно быть просто: он отдает мне заказ, я его благодарю, и мы расходимся. Но не тут-то было 🥴 Он говорит, что заказ уже отменили, поэтому он мне его не отдаст, а отнесет обратно. Я достаю свой телефон и вижу, что пока я шёл от метро, мне звонила Лавка. Из-за того, что я не ответил, они отменили мой заказ 🛑

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

С точки зрения цикла обработки заказа, всё сработало чётко. С точки зрения здравого смысла, это просто комедия: курьер минут 15 шёл до меня по 20-градусному московскому морозу, он принес мне продукты, он стоял рядом со мной. Но он не отдал мне заказ, потому что он не может доставить отменённый заказ. И он ушёл обратно.

В итоге моя задача не решена — я голодный и злой 🤬, — и Лавка не заработала денег — мне вернули деньги за отменённый заказ 🤦

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

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

А у вас бывали подобные истории?

P.S. Вообще Яндекс Лавка клёвая...
Простой разраб

Я учился в вузе на специальности «Программное обеспечение вычислительной техники и автоматизированных систем». Если по-простому, то на программиста. Многие преподаватели говорили, что мы — "элитная специальность" 🤟На старших курсах университета я устроился на свою первую работу программистом в game dev и получал в 3 раза больше моих знакомых-сверстников 🤑 Когда я устроился в Яндекс, знакомые смотрели на меня как на голливудскую звезду 🕺 Наконец, когда я впервые выступил с докладом на конференции как спикер от Яндекса, я был на вершине гордости за себя.

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

Но с годами tone of voice вокруг меня стал меняться. То в очередном IT-подкасте, то в коридоре офиса каком-то Zoom-звонке я стал слышать фразы типа «он ведь простой разраб 😵». Звучало это всегда слегка свысока и немного презрительно. Знакомые говорили: «Ого! Ты уже так много лет в Яндексе! Чем ты там руководишь?» И я, смутившись, отвечал: «Не, я разработчик»

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

Мы на прошлой неделе закончили очередной тренинг «Выше вилки» (следующий стартует 13 февраля 😉), и там участники, игравшие роль руководителя, использовали эту фразу, отказывая поднять зарплату. И я тогда почувствовал — они тоже регулярно слышат это обесценивающее дерьмо в свой адрес 🤮

В своё время от всего этого я сильно приуныл. Мне казалось, что я в жизни где-то свернул не туда: многие из тех, кто пришёл в Яндекс позже меня, уже руководители служб/отделов/направлений, а я всё так же простой разраб 😔

Но знаете что?! «Простой разраб» — это всего лишь чьё-то оценочное мнение. Я думаю о десятках тысяч людей, которые каждый день работают над собой, чтобы «войти в IT» и стать, наконец, «простым разрабом». Я думаю о том, что за 23 года, которые прошли с моей первой строчки кода, я вложил в себя-разработчика так много сил и времени, что могу «просто делаю свою работу» так, что потом за неё не стыдно. Я хочу сказать, что быть разработчиком — ох🤬енно! (Тимлидом — тоже, но это совсем другая работа).

Разработчики, которые подписаны на этот канал! Когда в следующий раз услышите в свой адрес что-либо, обесценивающее ваши навыки и достижения, вспомните этот пост, а вместе с ним — всё, что умеете, и объём проделанной работы. Распрямите плечи, поднимите голову, посмотрите в глаза своему собеседнику и скажите ... что посчитаете нужным.
Воскресный #юмор

Программист на приёме у глазного врача
— Прочтите эту строку таблицы (показывает "КНШМЫБИ")
— Доктор, у Вас неправильно настроена кодировка!
Собес без единой строчки кода

#реалити

Давненько у нас не было историй про прохождение собеседований.

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

👉 В ноябре прошлого года я был гостем на митапе компании Ядро. Как только мы договорились о моём участии, мне написала их рекрутер (говорят, что это совпадение 😉). Мы пообщались, и я согласился пройти техническое собеседование.

Ядро гордится тем, что в отличие от Яндекса их процесс найма состоит максимум из 3 секций: технической, менеджерской и общения с основателями. Это правда круто — можно быстро понять, насколько мы друг другу подходим 👍

Техническое собеседование проходило в формате «двое на одного»: два интервьюера связались со мной по видео из переговорки. Прям как в до-COVID'ные времена. Из-за того, что это был не Zoom, а именно ВКС из переговорки, я очень плохо запомнил, как их зовут и как они выглядят 😔

Для начала меня попросили рассказать о своём карьерном пути, и я выдал годами отработанную историю о своих пяти больших этапах в Яндексе и ключевых достижениях каждого из них 😎 Дальше меня застали врасплох вопросом, какое своё достижение в Яндексе я считаю самым значительным. «Врасплох», потому что по уровню влияния на окружающий мир «Пояса по С++»🥋, безусловно, сильно опережают всё остальное. Но мне показалось странно рассказывать именно о них, проходя собеседование на разработчика 🤔.

Так что я рассказал о проекте, который делал в Поиске Яндекса в далёком 2015 году и на котором очень сильно вырос как разработчик. Это было моё первое знакомство с миром распределённых систем. Чтобы подтянуть матчасть, я взял в библиотеке книгу Таненбаума «Распределённые системы» и читал её в метро по пути на/с работы. К слову, это огромная книга весом в 1 кг. С нею было очень неуютно в метро 😆

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

Дальше был блок, на котором интервьюеры рассказали о своих проектах, и на этом отведённый час подошёл к концу. Когда у меня спросили, какие есть вопросы, я сказал: «А код мы сегодня будем писать?». Мне ответили: «Иногда в написании кода нет никакой необходимости» — считаю это комплиментом 😉

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

А у вас бывали тех. собесы без написания кода?
Воскресный #юмор

Программист не стал креативить и назвал детей "Новый сын" и "Новый сын (1)"
О чём спрашивать на собеседовании основателей компании?

#реалити

🤔 В некоторых компаниях основатели проводят собеседование с большинством кандидатов, чтобы проверить их на совпадение по ценностям. И не всегда понятно, как себя на таких секциях вести.

Я считаю, что нужно делать то же, что и основатели — проверять, что их ценности совпадают с вашими. Далее расскажу, как это делаю я.

Недавно я рассказывал, как у меня была секция без единой строчки кода в компанию Ядро. После неё меня пригласили как раз на встречу с то̀пами компании. Это снова было общение с переговоркой по ВКС, и снова я не запомнил имена своих собеседников 😕

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

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

Ну ладно, вернёмся к моему собесу. Я стал выяснять ценности компании через неудобные вопросы:
— Расскажите, пожалуйста, за что в вашей компании увольняют?
— Что происходит с людьми, которые допустили инцидент на проде?

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

Ответ ребят из Ядра был классным. Если коротко — в случае факапа разбираются в причинах и предпринимают действия по их устранению; увольняют, если человек проявил безответственное отношение к результату своей работы 👍

А важны ли вам ценности компании, в которую вы собеседуетесь? Как вы их для себя выясняете?
Главная ошибка на coding interview 💦

По моему опыту, эта штука чаще всего приводит к провалу на алгоритмической секции.

Вернёмся к теме coding interview, которой изначально был посвящён этот канал.
➡️ За время работы в Яндексе я в качестве интервьюера провёл более 200 секций с написанием кода.
➡️ Как кандидат я прошёл порядка 50 таких секций, завалив 3-4 из них.
➡️ Сейчас я индивидуально работаю с несколькими людьми, и в рамках этой работы мы регулярно проводим mock-interview.

❗️Во всех этих случаях я вижу, что самая частая причина неудачи на интервью — это преждевременная имплементация 😉

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

Человек начинает писать код и ... минут через 5-10 вязнет, понимая, что не придумал, как он обработает крайние случаи. Или просто раз за разом переписывает условие главного цикла в своём решении 🥵 Или вдруг осознаёт, что не «всё тут понятно» и просто впадает в ступор.

Что происходит дальше? Человек так и остаётся в этом ступоре, пытаясь локальными правками и костыльными if'ами исправить все ошибки 🩼 Такие исправления обычно приводят к новым багам, и это затягивается до конца секции.

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

Как же избежать преждевременной имплементации? 💦

Очень просто — перед написанием кода продумать структуру всей вашей программы. Какие входные данные будут у главной функции? Что вы с ними сделаете сначала, что потом? Как сформируете ответ? И т.д.

Лучше всего прямо вслух проговорить что-то вроде: «Сначала я отсортирую входной массив, потом поставлю один указатель в его начало, а другой — в конец. Буду двигать первый, пока ... Потом сдвину второй на ... Этот процесс завершится, когда первый станет больше второго. Затем, чтобы получить ответ я ...»

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

А с вами случалась преждевременная имплементация? Как справляетесь с нею? 😃
Воскресный #юмор

Земля
2050 год
Генетический программер разбирает очередной кусок генной последовательности и видит следующий комментарий
/* A eti geny nado by ubrat nahren. Archangel Gavriil */
Чем закончилось собеседование в Ядро?

#реалити

Завершение истории моего собеседования в компанию Ядро. Предыдущие посты:
Собес без единой строчки кода
О чём спрашивать на собеседовании основателей компании?

После технической секции и встречи с топами меня пригласили на секцию с потенциальным руководителем. После знакомства и рассказов о себе разговор перешёл к деньгам 🤑 Мы пустились в танец "Сколько хочешь? А сколько дадите?". Видно было, что Алексей (мой собеседник) очень опытен в таких разговорах и готов долго рассказывать, как широка их вилка и как важно, чтобы компенсация соответствовала компетенциям 😉

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

В ответ услышал что-то вроде: «Ну это нормально, про это можно говорить», и вскоре наша встреча закончилась 🤝

Через полчаса рекрутер написала, что мне не готовы ничего предложить 😢😞🤔

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

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

Мои итоги и выводы после этой истории.
👉 Первый в моей жизни процесс собеседования, на котором я не решал никакие задачи
👉 Знакомства, рассказы о себе и разговоры за жизнь заняли примерно 70% времени общения. Вот почему так важно уметь делать качественную самопрезентацию.
👉 Очень важно иметь твёрдо рассчитанный низ своей личной зарплатной вилки, чтобы вас нельзя было уболтать на меньшие деньги
👉 Все сотрудники Ядра, с которыми я общался, производят очень приятное впечатление 🤗

А как вы чувствуете себя, когда вам отказывают из-за финансовых несовпадений?
Еду в отпуск в США. Раньше там ни разу не был. Буду в Сан-Франциско и Лос-Анджелесе. Рассказывать здесь, как проходит поездка?
Anonymous Poll
76%
Да, мне интересно
2%
Нет, добавлю t.me/ishfb в контакты и буду смотреть сториз
13%
Нет, хочу читать только про IT
10%
Посмотреть результаты
Как вы управляете своим вниманием?

Всё чаще слышу, что при всей важности тайм-менеджмента сейчас важнее управлять своим вниманием 🔦

Для меня это очень актуально, потому что стало всё сложнее долго концентрироваться на чём-то одном. Начинаю заниматься глубокой вдумчивой работой, и в голову тут же приходят мысли "а что там в ТГ мне пишут? 😜" или тут же вспоминаю про что-то маленькое, что давно хотел сделать. Ну и ютубчик, конечно 🙈

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

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

Мне стало интересно, а что ещё можно делать в этой сфере? Расскажите, пожалуйста, что делаете вы, чтобы фокусироваться на важном?
Илья Шишков: код, собесы, IT
Еду в отпуск в США. Раньше там ни разу не был. Буду в Сан-Франциско и Лос-Анджелесе. Рассказывать здесь, как проходит поездка?
One night stand

77% проголосовали за рассказы про поездку, так что вот первый пост о ней.

Стамбул

Мы в Сан-Франциско летели из Стамбула. Прилетели туда за день до вылета в SF, чтобы точно успеть на самолёт. Сняли отель в посёлке рядом с аэропортом. До отеля добирались на обычном рейсовом автобусе вместе с простыми горожанами. Удивило, что в автобусе никто не уступил место моей пятилетней дочери — видимо, местная особенность. Она в итоге ехала сидя на наших двух чемоданах 😆

Отель вполне подходит для одной ночёвки, очень близко к нему кебабная, где никто не понимает ни русский, ни английский, а просто тыкают пальцем в меню и говорят: "Гут!" Всё, что они нам посоветовали, оказалось просто "супер-гут".

Наутро сразу поехали обратно в аэропорт. Специально для этой поездки я сделал себе Tinkoff Premium, чтобы иметь страховки для путешественников и бесплатные проходы в бизнес-залы.

Перелёт

Насладившись бизнес-залом, пошли на посадку. И тут начались приключения... В самолёте объявили, что возникла «little technical problem», которая задерживает наш вылет 😕 Через полчаса сказали, что надо прикатить самолёт обратно на parking position, чтобы исправить эту «little technical problem» 😨. Потом сказали, что понадобится ещё 35-40 минут, чтобы устранить «little technical problem» 😰

За это время у меня дочка успела заснуть и проснуться. Просыпается и спрашивает: «Это что за остановка: Бологое иль Поповка уже Сан-Франциско?»

В итоге сам сказали, что technical problem не такая уж и little и надо пересесть в другой самолёт ✈️ Смена самолёта заняла ещё около часа...

В итоге с задержкой в 4 часа наш 14-часовой перелёт в Сан-Франциско всё-таки начался.

Прибытие

Перелёт прошёл без особых проблем и пролетел довольно быстро. В Сан-Франциско прилетели примерно в 19:00 по местному. Подошли на паспортный контроль... Офицер задал дежурные вопросы про цель визита и сколько времени собираемся провести в США. А потом говорит: «OK, guys. Just one more stop. Follow me», выходит и ведёт нас в какой-то кабинет 🤔😨 Заходим — там полицейских в 2 раза больше, чем пассажиров. К нам подошла приветливая policewoman и начала расспрос, держа наши паспорта в руках:
— Цель визита? Сколько собираетесь быть в США?
— Где живёте в России? А как пишется "Сочи"? А это как близко к Москве? А Украина рядом? 😳
— Чем занимаетесь? Как это self employed — в вашем visa application указана компания на букву Y?
— А как называется ваша компания? В чём состоит её деятельность?
— Родственники в США есть? Они все в России?

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

И вот она задаёт финальный вопрос: "В каких странах вы были в последние 5 лет?" Я перечисляю и завершаю словами «and finally we had one night stand in Istanbul, Turkey before coming here». Policewoman рассмеялась, сказала: "Here these words have another meaning" и отдала нам наши паспорта ☺️. Я выдохнул, понял, что надо было сказать "one night stay", сам внутренне поржал и пошёл получать багаж.

Welcome to the USA!
Оказавшись в Калифорнии, грех не заехать 😄
Воскресный #юмор

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

Подходит к концу моё пребывание в США. После нескольких дней в Сан-Франциско мы уехали в Лос-Анджелес. Сегодня вернулись обратно в СФ и заселились в тот же отель, где жили в первый раз.

Он находится на Sutter street. И мне кажется это очень занятным совпадением... 😆🤣

Пояснительная бригада:

Herb Sutter - член комитета по стандартизации C++ и известнейший популяризатор этого языка программирования. И мои главные достижения в разработке тоже неразрывно связаны с C++
Воскресный #юмор

Умер айтишник. Попал на страшный суд. Там его спрашивают:
— Куда сам-то хочешь: в ад или в рай?
— А посмотреть можно?

Привели его в громаднейший датацентр. Кругом машин всевозможных, сеток — видимо-невидимо.
— Вот это — рай, будешь здесь юзером.
— А ад?
— А ад здесь же — только сисадмином
Сегодня, в 19:00 мск буду участвовать в эфире на канале Доки. Дока — это проект для фронтенд-разработчиков, и во время эфира мы поговорим, насколько фронтендерам нужно владеть алгоритмами.

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

Ведущие эфира — Полина Гуртовая и Егор Левченко. Приходите, будет интересно!