Илья Шишков: код, собесы, IT @imhired Channel on Telegram

Илья Шишков: код, собесы, IT

@imhired


Обо мне: C++ эксперт, ex-Яндекс, создатель курсов «Пояса по С++», спикер.

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

По всем вопросам: t.me/ishfb

Илья Шишков: код, собесы, IT (Russian)

Добро пожаловать на канал "Илья Шишков: код, собесы, IT" (@"imhired"). Здесь вы найдете самые актуальные и полезные посты от Ильи Шишкова, опытного эксперта по C++, бывшего сотрудника Яндекса и создателя курсов "Пояса по C++". Илья также выступает как спикер и делится своим богатым опытом в IT-сфере. Переходите в закрепленную ссылку и читайте лучшие материалы о внутренних процессах технических собеседований в крупных IT-компаниях. Узнайте о секретах успешного прохождения собеседований и как подготовиться к ним. Если у вас есть вопросы, обращайтесь к Илье по ссылке t.me/ishfb. Присоединяйтесь к каналу "Илья Шишков: код, собесы, IT" и станьте экспертом в мире IT-технологий вместе с профессионалом своего дела!

Илья Шишков: код, собесы, IT

01 Dec, 09:21


Не софтами едиными

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

Он размещён на платформе Stepik, и там сейчас идёт распродажа в честь «чёрной пятницы». На «Фундамент» можно попасть со скидкой 25%.

Напомню основные преимущества курса:
— это онлайн-курс, который вы проходите в удобное для вас время
— на протяжении курса вы решите 100 задач по программированию — после такого объёма практики просто невозможно не стать лучше в программировании
— в курсе нет ничего лишнего — только темы, которые я реально встречал на coding interview

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

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

Илья Шишков: код, собесы, IT

24 Nov, 08:48


Если не говоришь "нет", твоё "да" ничего не стоит

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

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

После того разговора я и Паша Филонов (мы вместе делаем "Выше вилки") стали собирать материал для тренинга по отказам. Я прочитал "Сперва скажите нет" Джима Кемпа, прошерстил конспекты курсов по коммуникации, которые проходил в Яндексе, посмотрел кучу лекций Ильи Мутовина.

С отказами есть две проблемы:
👉 это морально тяжело, поэтому мы можем избегать их совершать
👉 мы можем отказывать нечётко, из-за чего собеседник думает, что мы согласились ("может быть, смогу через неделю")

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

Отработке этих формул и посвящён наш новый тренинг "Нет".

У нас будет 2 созвона в зуме по 3 часа каждый - 25 ноября и 2 декабря
Разбираем 4 ситуации, в которых оказывается каждый из нас на работе:
    1⃣ отказ от проекта, в котором вы не видите пользы
    2⃣ отказ от сомнительной задачи, которую вам спустило руководство
    3⃣ как не испортить отношения с коллегами, не соглашаясь на их предложения
    4⃣ мне предлагают проект мечты, а я весь в делах. Что делать?
Каждую из этих ситуаций мы разбираем по схеме
    1⃣ Участники в парах ведут переговоры на тренировочном кейсе
    2⃣ Мы с Пашей даём теорию, как следует вести разговор в этой ситуации
    3⃣ Участники в парах отрабатывают полученный материал. Итого каждый участник за время тренинга отрабатывает 16 переговорных кейсов
Между встречами даём неделю перерыва, чтобы усвоить материал и попробовать его в жизни.

Тренинг "Нет" нужен, чтобы уметь освобождать время для важного, быть довольным своим календарём и, в конце концов, самим собой. Если чувствуете, что вам это актуально, присоединяйтесь!

Илья Шишков: код, собесы, IT

22 Nov, 09:08


Моё рабочее место

В комментариях к одному из постов меня попросили рассказать о своём рабочем месте. Что ж, месяц работы R&D разработчиком в Sbertech позади — есть чем поделиться. Давайте расскажу, какими инструментами пользуюсь на рабочем ноутбуке.

Операционная система — Windows

Здесь, наверное, в меня полетят первые помидоры и насмешки 🍅 Но мне правда удобна Windows — я почти всегда пользовался ею. Все равно вся разработка происходит на удалённых Linux-виртуалках, поэтому ОС ноутбука — всего лишь тонкий клиент. Я никогда не использовал MacOS — мы с ней всё никак не встретимся. А Windows я всегда предпочитал по двум причинам.

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

Вторая причина — это Punto Switcher (я не нашёл аналогов для Ubuntu)

Выделяю его в отдельный пункт, потому что для меня это must have инструмент. Очень жаль, что Сбере служба ИБ его запретила. Я подсел на него, когда мы делали «Пояса по С++». Тогда приходилось очень много писать текстов, где русский язык перемежался с кодом, и переключать раскладку туда-сюда жутко бесило. Когда я освоил Punto Switcher и заточил его под себя, мир разделился на до и после 😆 У меня "ёё" автоматом превращается в "``", чтобы легко форматировать куски кода, «ПРивет» сам превращается в «Привет» и много других удобных штук.

Типографская раскладка Ильи Бирмана

На неё меня подсадил Антон Полднев тоже во времена «Поясов по С++». Она позволяет легко набирать «вот такие кавычки», длинное — тире, [квадратные скобки], знак рубля ₽ и кучу всего другого, но пользуюсь я в основном тем, что перечислил.

IDE — VS Code с плагином GigaCode

Тут без сюрпризов. Я года 3 уже ни у кого не видел ничего кроме VS Code. Я много лет был преданным пользователем CLion, но в погоне за фичами они полностью растеряли быстродействие, что сделало CLion абсолютно неприменимым даже на не самой большой кодовой базе Яндекс Еды образца 2021 года. С тех пор я пересел на VS Code и пользуюсь им. Да — фичей меньше, но работает быстро и умеет необходимый минимум.

GigaCode пока скорее разочаровывает и сильно уступает GitHub Copilot, я рассчитывал, что он мне поможет писать тесты на Perl (которого я не знаю), но он оказался бесполезен.

И, наконец, Obsidian

Инструмент для заметок и формирования базы знаний. Киллер фича по сравнению с Notion, Evernote, Confluence, wiki и прочими web-based штуками в том, что Obsidian — это просто браузер Markdown-файлов, которые хранятся у вас на диске и всегда доступны offline. А это значит:
— быстрый поиск по всей базе
— Markdown — легко запоминаемые возможности оформления файлов (меня в Notion бесит, что парой неаккуратных нажатий можно разнести оформление заметки в пух и прах)
— если Obsidian решит, что больше не работает в России, вся ваша база знаний останется с вами

Это то, чем я пользуюсь каждый день. А как у вас?

Илья Шишков: код, собесы, IT

19 Nov, 08:07


Сперва скажите нет

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

Подходит тем,
— кого разрывают 100500 одновременных задач
— кто помогает коллегам не потому что может, а потому что неловко отказать
— кто стабильно выручает компанию и стабильно выгорает 😢
— кто чувствует, что говорить "нет" сложно, стыдно, нехорошо

Время — 20:00 мск
Где — в чат-боте «Выше вилки»

Приходите!

Илья Шишков: код, собесы, IT

14 Nov, 08:15


Доклады, нетворкинг и ничего лишнего

IT конференции сильно изменились за прошедшие 10 лет.

Я помню самую первую конференцию C++ Russia в 2015 году. Билет на неё стоил, кажется, 1000 рублей. Было много сильных докладов, пара-тройка компаний пришли со стендами, на которых разработчики делились техническими особенностями своих решений.

Билет на Highload++ в Москве сейчас стоит 90 000₽, там наверняка будет 100500 стендов самых разных компаний, на которых специально обученные люди проводят бесконечные розыгрыши мерча и собирают лиды̀ для дальнейших контактов со стороны рекрутмента. Сейчас конференции — это бизнес, который участникам продаёт нетворкинг с выдающимися представителями индустрии, а компаниям — собственно участников (поправьте меня, если я не прав).

Интересно наблюдать за людьми, которые в этом течении идут против тренда. Золотой голос российского IT Андрей Смирнов сделал свою конференцию Soft Weekend в том виде, какой была первая C++ Russia: доступные билеты, крутые спикеры, нетворкинг и больше ничего. Софтовые доклады давно собирают полные залы, ведь все понимают, что для роста в карьере и зарплате одних хардов недостаточно. Андрей сделал эту конференцию, чтобы дать возможность прокачать универсальные для любого направления и стека скиллы, требуемые почти в любой рабочей ситуации.

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

Когда — 23 ноября 2024, 10:00-18:00
Где — Москва, Пространство Весна, Спартаковский п., 2с1
Подробности — на сайте

P.S. По промокоду IAMHIRED действует скидка.

Илья Шишков: код, собесы, IT

01 Nov, 09:23


Каково работать с кодом на C в 2024 году

Итак, я уже неделю плотно работаю с кодовой базовой СУБД Pangolin, которую СберТех разрабатывает как для Сбера, так и для внешних клиентов.

Pangolin основан на опенсорсном PostgreSQL, поэтому подавляющее большинство кодовой базы написано на чистом C. Я знал, что так будет и осознанно пошёл в этот проект. Сейчас хочу подвести первые итоги, каково это после 16 лет разработки преимущественно на С++ столкнуться с С 😳

Боль
🤕 Простота кода — вернее её отсутствие 😉 Открываешь функцию на 1000 строк, которая вызывает функцию на 600 строк, которая вызывает ещё 5 функций по 300 строк каждая
🤕 RAII, я по тебе скучаю. Я рыдал, когда читал код вот этой функции. В строке 2482 она получает char* passwd, аллоцированный другой функцией. Ниже есть 10 мест, где вызывается return, и в каждом из них надо не забыть вызывать pfree(passwd), а то же память утечёт 🤦

Кайф
😎 Компилируется космически быстро, несмотря на исполинские размеры кодовой базы 🚀
😎Пошаговая отладка дебаггером как на университетских лабораторках — быстро, легко, понятно и просто работает из коробки. Я сейчас очень много этим пользуюсь, чтобы освоиться в кодовой базе и изучить, какая функция откуда вызывается.
😎 Сберовский GigaChat неплохо знает исходники PostgreSQL и со второго-третьего вопроса неплохо объясняет, в какое место кода надо смотреть, чтобы найти, как работает нужная мне функциональность. Сильно ускоряет погружение в кодобазу.
😎 VS Code индексирует весь код из коробки, и навигация работает... просто работает 👍

А кто из вас работает на чистом С? Как вам?

Илья Шишков: код, собесы, IT

30 Oct, 18:42


Как отказывают в IT. Часть 2 — молчание ягнят

Ссылка на первую часть

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

Если вы нанимаете к себе разработчиков, не делайте так 👇, пожалуйста!

3️⃣ Компания 3 (сквозная нумерация с первой частью) — большая и известная корпорация.

Меня собеседовали на Go-разработчика при том, что я пока не написал ни одной строчки на этом языке 😂 Меня заверили, что нанимают по принципу «был бы человек хороший, а языку Go обучим».

Шли мы очень бодро. Первый собес — классические leetcode-like задачи плюс теоретические вопросы про многопоточку, структуры данных, сети и внутренности C++. Быстрый фидбек: «Всё хорошо, идём дальше». Второй собес — задача на написание кода, очень сильно приближенная к реальной практике backend-разработки. Про это надо будет сделать отдельный пост, потому что это новый для меня формат собесов, который, кажется, начинает набирать популярность. Пару дней была тишина, потом сказали: «Идём дальше».

Третий собес — system design с положительным итогом. Через несколько дней звонит рекрутер и сообщает об отказе без фидбека. По его словам, он впервые в своей практике видел, чтобы эта контора отказала молча.

Три успешно пройденные секции из трёх — и никаких объяснений 🤷‍♂️

4️⃣ Компания 4 — ещё один HFT

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

Присылают отказ со словами «Сейчас не нанимаем Senior — только Middle. Как появятся позиции на Senior, обязательно с вами свяжемся». Наверняка причины другие, потому что странно, что HFT закрывает найм Senior позиций. Но открыто сказать кандидату, что именно не устроило, не смогли.

Мораль

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

К счастью, есть те, кто действует иначе, но об этом я расскажу в третьей части.

А с вами бывали подобные ситуации? Поделитесь в комментариях.

Илья Шишков: код, собесы, IT

23 Oct, 07:12


Попытка №2

2024-й год у меня получается удивительным — у меня в нём было 2 первых рабочих дня 😃 А когда этот год закончится, у меня за плечами будет 2 испытательных срока 😆

Выше я уже писал, что у меня были собеседования в 11 компаний — можете видеть на фото, с какой из них мы договорились ❤️ Вот уже неделю я работаю в СберТехе разработчиком в R&D команде СУБД Pangolin. Это реляционная СУБД на основе PostgreSQL, которая применяется как в Сбере, так и продаётся наружу.

Должность у меня здесь — ведущий эксперт по технологиям 😎 Надо отдать Сберу должное — очень крутые названия должностей они дают сотрудникам: «ведущий эксперт по технологиям» прямо греет душу 😆

Никогда не работал в R&D — вот и узнаю, насколько мне это подходит. Во время собеса мне дали безумно интересное тестовое задание, которое я выполнял с огромным удовольствием. Если рабочие задачи будут такими же — это место точно для меня 👍

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

В общем, пожелайте мне удачи...

Ну и невозможно избежать сравнений СберТеха с Яндексом, в котором я провёл 11 лет:
— в СберТехе на кофепоинтах нет еды... Никакой... Вообще... Только вода, чай и кофе. Это прям неожиданно — я думал все бигтехи вкладываются в подкормку сотрудников
— когда приходишь в Яндекс, встречаешь кучу непонятных слов: хурал, Этушка, Стафф, Стартрек и т.д. Но Сбер встречает тебя жёстче: СУДИР, АС, ПФ, КТС 😆
— Сбер на каком-то космическом уровне вкладывается в корпоративный спорт 🚀 Я сходил на одну тренировку для сотрудников, и у меня просто челюсть упала на пол, когда я увидел, как у них у нас оснащён спортзал в офисе! Не каждый фитнес-клуб может похвастаться таким количеством и качеством инвентаря. В общем вместо печенек в Сбере закупают гантельки 💪

Илья Шишков: код, собесы, IT

18 Oct, 18:46


Нужна ваша помощь 🆘 Что мне делать с приглашением на скриншоте? Никак не могу выбрать 😱

P.S. Скриншот из русской web-версии сервиса Todoist

Илья Шишков: код, собесы, IT

07 Oct, 16:07


Как отказывают в IT. Часть 1

За прошедшие 3 месяца я прошёл очень много собеседований. Разных компаний было 11, а с подсчёта количества секций я уже сбился 🤯 Естественно, были офферы, отказы и отказы с моей стороны. И сегодня хочу рассказать о паре полученных мною отказов. Чтобы вы знали, что так бывает, и сами никогда так не делали 🛑

1️⃣ Компания 1

Первого собеседование — развернуть односвязный список, аккуратно расставить мьютексы в готовом коде. Второго собеседования — FizzBuzz (FizzBuzz, Карл!), аккуратно написать многопоточный код с мьютексами и conditional variables.

Третье собеседование — team fit в команду, где я полчаса рассказывал о прошлом опыте, 15 минут отвечал на вопросы, 15 минут задавал вопросы сам.

В итоге приходит фидбек: «Коллеги пришли к выводу, что их формат продуктовой разработки несколько отличается от твоих ожиданий и опыта, и они сейчас не готовы предложить позицию». ШТА? Как этот фидбек коррелирует с задачами выше? 🤯

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

Иду к рекрутеру за подробностями, и тут выясняется, что они вместо меня выбрали другого кандидата, с более релевантными навыками — у них там много embedded, а я — бекендер. Ну и почему сразу было нельзя сказать, что просто нашёлся более подходящий человек?! 😡

2️⃣ Компания 2 — HFT

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

Приходит фидбек: «Пока не сможем предложить позицию под опыт, к сожалению(» И я снова: «ШТА?» Ну то есть даже на второй собес не позвали 🤯 Иду выяснять, чего же в моём опыте не хватило, и получаю ответ: «Временно остановили поиск на данную позицию и переключились на поиск Python-разработчиков. Я к вам вернусь, когда возобновим поиски» 🤔

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

Мораль

Мораль сей басни такова:
Когда в ответ про опыт речь,
Не думай сразу — твой тут грех.
Рекрутер мог уклончиво ответить,
Так смело уточни, чтоб правду встретить.
ChatGPT, 2024 😆

Илья Шишков: код, собесы, IT

05 Oct, 12:54


Почему ты хочешь быть тимлидом?

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

Естественно, нашим первым вопросом было — «А почему ты хочешь стать тимлидом?» 🧐 Участник выдал только одну причину — больше денег 💰 Дальше мы с ним ушли в разговор о том, что помимо «из сильного разработчика превратиться в так себе менеджера» есть другие способы получить больше денег, при этом оставаясь в зоне своих компетенций.

Это напомнило мне мой доклад 2022 года «Зачем мне быть CTO?» на конференции SouthHub. В IT и правда бытует мнение, что с определённого момента быть «просто сеньором» уже как-то некруто, и надо обязательно идти в тимлиды и дальше по менеджерской ветке.

Всё же, когда вы идёте в тимлиды, важно, чтобы на вопрос «зачем?» звучали слова «больше ответственности», «вносить больший вклад», «реализовать больше своих идей», «помочь развиваться другим» и т.д. Тогда в этом есть смысл. Состояние «больше денег» 🤑 или «стать круче» 💪 точно можно достичь, оставаясь не простым, а крутым сеньором. Об этом я и рассказывал на SouthHub, и за 2 года доклад не потерял актуальности.

Приглашаю вас к просмотру 😉

Илья Шишков: код, собесы, IT

24 Sep, 09:47


Думал, C++ — всё, что нужно. Ошибался!

В последний год я очень много сил вкладываю в проект «Выше вилки». Это тренинг по переговорам о зарплате для айтишников.

Расскажу, почему я, разработчик, занялся soft skill'ами и ради чего развиваю этот проект.

Какие переговоры за деньги, Илья? Просто качай hard'ы

Многие годы я думал именно так 👆 Я был уверен, что достаточно расти как разработчику: изучать технологии, глубже постигать C++ и т.д. А об остальном позаботится компания: вовремя даст мне проект на вырост, повысит зарплату, чтобы я не нуждался в деньгах, укажет, что мне надо изучить для следующего шага вперёд. И знаете... Лет 5 у меня так и работало 😉 Но потом это розовое представление о карьере перестало совпадать с реальностью.

И что у тебя пошло не так?

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

Как-то раз на объявлении результатов performance review руководитель сказал мне: «Илья, в этом полугодии ты прям много наперформил, поэтому у тебя повышенная оценка». А я оборачиваюсь назад и понимаю, что работал так же как и в предыдущем полугодии, и не понимаю, почему сейчас больше, а тогда было меньше. И руководитель, конечно, не может внятно объяснить разницу.

Илья, ты разобрался, в чём дело?

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

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

И что дальше?

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

Следуя советам для начинающих предпринимателей, я начал с очень узкой темы — переговоров о зарплате. Я на своём опыте знаю, как тяжело многим айтишникам обсуждать деньги. Сразу всплывает много стыда, вины, тревоги 😱 В комнату врывается самозванец со своим «Ты ещё не знаешь досконально C++23! За что тебе больше платить-то?»

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

И что у вас есть сейчас?

Проекту «Выше вилки» уже больше года. За это время мы провели 14 тренингов. Мы начинали с однодневного 4-часового тренинга. Сейчас — это 10 дней, на протяжении которых мы проводим 4 зум-созвона: 2 посвящены переговорам за оффер, 2 — переговорам с руководством о повышении зарплаты без смены работы. Между созвонами даём домашние задания, а также время на отдых.

За год через тренинг прошло более 40 человек: разработчики, аналитики, лиды, дизайнеры, data scientists и т.д. Многие по итогам получили желаемые повышения.

Что ещё планируешь делать?

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

А как узнать побольше?

Всё про тренинг «Выше вилки» можно узнать на его сайте. Ещё в среду в специальном телеграм канале я проведу эфир «Как зарабатывать больше без переработок». Буду рассказывать в том числе и про тренинг. Приходите ✌️

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

Илья Шишков: код, собесы, IT

19 Sep, 14:35


C++20: The Good Parts

Готовлю сейчас материал о возможностях С++20, которые уже применяются для создания production кода. Хочу сверить свои ощущения с общественным мнением.

Поделитесь, пожалуйста, в комментариях, что из С++20 вы применяете в своём production коде.

Илья Шишков: код, собесы, IT

18 Sep, 07:48


А как это на самом деле?

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

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

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

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

Посмотрите наше интервью и пишите в комментариях, что ценного для себя вынесли
😉 YouTube
😄 ВКонтакте

Илья Шишков: код, собесы, IT

12 Sep, 15:47


А сегодня важный праздник, друзья! С ним я вас и поздравляю 😉

Черканите строчку кода-другую после работы в честь него 🎉🧑‍💻

Илья Шишков: код, собесы, IT

09 Sep, 11:02


GitHub Copilot поможет тебе пройти собеседование

Как и обещал в прошлый раз, расскажу ещё одну историю про неожиданную выгоду от использования Copilot'а. Я проходил необычное собеседование, которое называется «production code». Смысл такой — тебе описывают задачу, которая у людей реально возникла на практике, и описывают в какой инфре и каком окружении будет выполняться твой код. А ещё говорят: «Пиши код так, как ты это делаешь на работе. В удобной IDE. Надо гуглить — гугли, надо спросить ChatGPT — спрашивай. И пошарь весь экран, пожалуйста».

Ну я включил VPN, запустил VS Code с GitHub Copilot, открыл chat.openai.com. А ещё скопировал описание задачи в комментарии в исходник, чтобы не переключаться постоянно между IDE и браузером. Важно: заметная часть описания задачи — это весьма детальное описание алгоритма обработки данных.

Стал писать код: объявил структуры данных, проинициализировал их... И тут вижу — а Copilot за меня пишет алгоритм их обработки точь-в-точь как описано в задаче! 🤯 Мне оставалось только читать этот код и убеждаться, что там нет багов (а их не было).

То есть он "прочитал" описание задачи в комментариях, понял, как её выполнить с помощью объявленных структур данных, и просто написал код! Волшебство 🪄

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

Надеюсь, я добавил вам мотивации использовать AI-ассистент написания кода, если вы ещё этого не делаете 😉

Илья Шишков: код, собесы, IT

05 Sep, 17:20


GitHub Copilot исправит баги в твоём API

Продолжаю исследовать возможности AI-ассистентов написания кода. Ранее на эту тему были
— пост про ожидания и реальность от использования Codeium в реальной кодовой базе
— видео с добавлением новой фичи с помощью GitHub Copilot в большую кодовую базу (😉 YouTube, 😄 ВКонтакте)

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

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

class RingBufferAllocator {
public:
explicit RingBufferAllocator(std::span<char> arena);

struct Iterator { ... }; // Абстрагирует переход через край буфера

std::optional<Range<Iterator>> Allocate(size_t bytes);
void Deallocate(Range<Iterator> range);
};


Метод Allocate возвращает пару итераторов либо std::nullopt, если в буфере недостаточно места. И мне показалось логичным в Deallocate передавать тот Range, который вернулся из Allocate.

После этого я стал писать тесты на RingBufferAllocator и попросил Copilot сделать это за меня. Первый же его тест выявил ошибку в моём API:

TEST(RingBufferAllocatorTest, AllocateAndDeallocate) {
std::array<char, 16> arena; // Example arena with 16 bytes
RingBufferAllocator allocator(arena);

// Allocate 8 bytes
auto range1 = allocator.Allocate(8);
ASSERT_TRUE(range1.has_value());
EXPECT_EQ(range1.value().size(), 8);

// Allocate 4 bytes, total 12 bytes allocated
auto range2 = allocator.Allocate(4);
ASSERT_TRUE(range2.has_value());
EXPECT_EQ(range2.value().size(), 4);

allocator.Deallocate(*range2); // <--- OOPS. THE BUG IS HERE

auto range3 = allocator.Allocate(8);
ASSERT_TRUE(range3.has_value());
EXPECT_EQ(range3.value().size(), 8);
}


Ошибка в том, что мой API позволял освобождать память не только с "начала" буфера, но и внутри. А это противоречит идее кольцевого буфера. Заметив это, я поменял API вот так:

class RingBufferAllocator {
public:
explicit RingBufferAllocator(std::span<char> arena);

struct Iterator { ... };

// Tries to allocate from the end of the ring buffer
std::optional<Range<Iterator>> Allocate(size_t bytes);
// Deallocates the first `bytes` bytes from the beginning of the ring buffer
void Deallocate(size_t bytes);
};


Теперь Deallocate тоже принимает количество байт и освобождает их только с "начала" буфера.

Прелесть этой истории в том, что Copilot помог мне найти ошибку почти сразу после её допущения и не дать плохому API расползтись по коду 💪

В следующем посте расскажу ещё одну историю, как мне неожиданно помог Copilot. А сейчас поделитесь, какую пользу от AI-ассистентов написания кода извлекаете вы.

Илья Шишков: код, собесы, IT

28 Aug, 12:06


Почему вы дали мне оффер?

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

С одной компанией дошёл до оффера 🎉 Приятно 🤗 В то же время я засучил рукава, чтобы как следует разобраться, насколько мы друг другу подходим. Если собеседование — это такое первое свидание, где мы просто присматриваемся друг к другу, то оффер — это предложение жениться 😆 Во всех местах, откуда я уходил по собственному желанию, я проработал минимум 3 года, так что на этапе оффера я стараюсь поговорить с потенциальными коллегами максимально открыто и на довольно острые темы.

Я попросил поставить мне встречу с потенциальным руководителем и непосредственными коллегами и принёс на неё список вопросов. Мне кажется, они весьма дерзкие — интересно, какое мнение у вас.

— Почему вы дали мне оффер?
Какой результат на моей позиции позволяет претендовать на высокую оценку на performance review?
Какими качествами нужно обладать, чтобы преуспеть в вашей команде?
Расскажите, за что в прошлый раз уволили человека в вашем отделе и как это происходило?
Если со мной обращаться так-то и так-то, я буду идеальным сотрудником, а если так-то и так-то — то жутко неудобным и бесполезным. Вам такое подходит?

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

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

Понятно, что это не панацея — с дубайской компанией я тоже проводил такую встречу, но это не уберегло от mismatch'а, но все равно укрепляет фундамент для принятия решения.

Как вам вопросы? Что вы обычно делаете, получив оффер?