А как собеседоваться?

 Публичный пост
8 июля 2022  13543
Беха Дай обниму ОХУЕННО ⨯9 Пост Года Оффер в FAANG

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

А) работал в стартапе, который двигался очень быстро со всеми изо всех щелей вытекающими
Б) собеседовался куда ни попадя: от стартапов с 17-летними CEO до галер с лучшими кепочками-пропеллерами на Диком Западе

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

Изначально я планировал разделить пост на две части: общее (в целом про подходы, как я готовлюсь к собеседованиям и людям советую) и частное (как и куда я прошел 5/5 собесов с конкретикой), но в итоге 7к слов поглотила первая часть, а на вторую меня не хватило. Может быть когда-нибудь, а пока просто в целом в общем де факто де юре как же все-таки собеседоваться уважающему себя человеку в 2к22.

P.S. в посте я обращаюсь "на ты" и, скорее всего, использую мужской род. Мне так проще, не отменяйте и не оскорбляйтесь, пожалуйста.

Исходная позиция

Для начала давай сразу проясним некоторые моменты:

  • У меня нет профильного образования (сказал бы что нет никакого, но какая-то электрическая синяя картонка где-то лежала), крутить деревья и складывать ифы в декораторы учился сам.
  • Еще у меня не случилось олимпиадного бэкграунда, всеросов, ШАДа, CSC, ВШЭ, матпраздников (но был Русский Медвежонок, по усам текло в рот не попало, так сказать) и папы-нефтянника (кстати, если ты папа-нефтянник, можешь написать мне в телеграм, еще не поздно). Это важно, а то почитаешь тут некоторых, так хоть в баньку с пауками-импосторами полезай.
  • Футболок с матпраздника и хактоберфеста даже нет, дно полное, короче.

Зато у меня есть:

  • Столько-то опыта всякой разной разработки от веб-программирования интернет-магазинов на PHP до компиляторов DSL и планировщиков биологических экспериментов в очень разных компаниях: от супер-мелкого стартапа на три круглых славянских лица, до великорусского бигтеха с внутренним двачом.
  • Какой-никакой релевантный бэкграунд для собеседований: и алгоритмы пописал, и распределенные системы подизайнил, и полидил фичи, и поменторил. Но футболку с матпраздника, увы, за это не дают.
  • Разумная наглость и огромное шило в толстой жопе.

Куда я хотел:

  • никуда

Серьезно, тактически, на уровне конкретных компаний/домейнов, никуда особо не хотелось, была идея посмотреть по сторонам.

Если смотреть стратегически, то я был в позиции "последние три года работаю синьором в стартапах, есть бэкграунд в бигтехе, хочу расти в сторону staff+ individual contributor с потенциальным шифтом в сторону VP/CTO стартапа на горизонте в 10 лет". Плюс был незакрытый гештальт с отсутствием офферов из FAANG.

Если посмотреть географически, то я всегда хотел пожить в нескольких местах:

  • Лондон (done)
  • Цюрих
  • Амстердам
  • Нью-Йорк или Бостон
  • Что-то ЮВАшное: Сингапур, Тайпей или другой китайский город (поняли? поняли, да? типо Тайпей китайский город +10 флажок желтый серп глупый Иван слабый мангуст делать приятно Великий Xi).
  • Москва, взять ипотеку в Хамовниках на 150 лет, купить пажилой Крузак и всячески уже остановиться в передвижениях по шарику, сосредоточившись на декадансе лучшего города на Земле.

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

Как понять что ПОРА

Hot take: у айтишников (да и не только у них) в целом все очень не очень с decision making'ом , особенно когда решение надо принимать не о более лучшем паттерне или фреймворке, а о чем-то расположенном в объективной реальности, данной нам в ощущениях. Начинается паника, вечные вопросы "А как какать?" и вообще ладошки потеют, свитчи от механических клавиатур отклеиваются, даже Рациональность (c) и Критическое Мышление (tm) выходят из комнаты. Да и вообще, аж метафору из Гарри Поттера нельзя привести, ну что за жизнь!

Например, такая простая штука как "Пора ли мне менять работу?" у многих вызывает экзистенциальный страх. Многие начинают натягивать рациональные численные методы и рисовать карту вместо территории:
а) ну я год-два-три уже поработал, значит ПОРА
б) ну чето я год работаю а зарплата не растет, значит ПОРА
в) у нас реакт, а там вуе, а я на хакер ньюз читал, что вуе круче реакта, значит ПОРА
г) ну мне тут так тепло и уютно я всех знаю, прирос к стулу в офисе, значит НЕ ПОРА
д) я же тупой, ну кто меня возьмет, а тут плеть только по средам и опарыши на кофе-поинте, значит НЕ ПОРА

...и так далее. Согласны? Узнали? Ставь класс, посмотрим сколько нас!

Увы, как и со всем стоящим и настоящим, никакого универсального алгоритма не существует. Все эти случайные чиселки (как по годам, так и по деньгам) ничего полезного не несут и могут как затянуть тебя в болото на пару лет, так и выгнать преждевременно из очень классного места. Короче, не везде можно написать иф-луп-из-семи-когнитивных-искажений, который расскажет как же все же какать.

Но есть и хорошая новость -- можно использовать некоторые эвристики. Одна из моих любимых -- регулярные техосмотры самого себя на предмет соответствия работы твоим идеалам, чувству прекрасного и стратегическим целям. Подробнее про такой подход можно тут. Хорошая новость в том, что раз привыкнув к такому хэппенингу и проведя некоторое количество формальных осмотров (вот прям ручкой по бумажке или маркдауном по обсидиану), дальше твоя нейросеточка обучится и все будет делаться автоматически на уровне ощущений "чето както хз не нравки", которые уже, при желании, можно отрефлексировать до нужного уровня детализации.

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

Поняв, что текущая ситуация далека от идеальной, у тебя есть две таблетки:

  1. менять ситуацию и пытаться сделать ее ближе к идеальной: менять компанию изнутри (ну это как с одиночными флажками-пропоузалами на площадь-оллхендз выходить и опционально огребать от омона-CTO)
  2. сменить ситуацию: уйти из компании (ну это как в Ереван уезжать)

Здесь, увы, тоже нет общего решения и алгоритма. На разных этапах карьеры, для разных резюме и целей, в разных конкретных ситуациях будут иметь смысл оба варианта. Мне кажется, много побегов от сложностей на определенных уровнях синьорности это звоночек. С другой стороны, когда ты джуно-миддл+, поменять что-то глобальное в компании (особенно если это не компания тебя и твоя друга-собутыльника-соседа) будет, скорее всего, донкихотской затеей.

В целом, если твоя роль IC без претензий (все до и включая синьора в большинстве компаний), то уходить это ок. Это быстрее, эффективнее и работает в 10 случаях из 10. Если роль посложнее (staff+, который должен определять вижон и двигать стратеджи), то от тебя, собственно, и ожидается изменение устоев в каком-то объеме. YMMV, короче.

Как это было у меня

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

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

Симптомы были довольно банальными для Early-Staged Silicon Valley VC-backed Start-Up (йоу):

  • фигачилка до посинения и посинение до фигачилки
  • набор разрозненных фичей вместо прочного фундамента и фича-факторинг
  • набор (иногда зачем-то конкурирующих друг с другом) команд вместо одной компании
  • и прочая, прочая, прочая

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

Все это вообще не новое, не уникальное и для многих кажется нормой и классной атмосферой. Мне же это после трех лет в стартапах немного (много) опостылило.

Если смотреть на вопрос "менять или уходить", то для меня это тоже было довольно очевидно. Мне не казалось, что я могу что-то глобально изменить, это реальность Early-Staged Silicon Valley VC-backed Start-Up с по-американски гиперпродуктивными лидерами. Ты либо вписываешься, либо борешься с ветряными мельницами, либо уходишь.

Поэтому было принято решение посмотреть по сторонам и СОБЕСЕДОВАТЬСЯ.

Домашняя работа

Когда я был молодым и глупым (сейчас я чуть менее молодой, но все такой же глупый) и работал в Яндексе, ко мне как-то раз постучались рекрутеры Амазона и Гугла одновременно. И вот тогда-то глупый я решил, что раз уже работаю в Яндексе, никакая подготовка мне, в общем-то, и не нужна. Давайте свои белые доски, маркеры и деревья, я вам все переверну. Стоит ли говорить как позорно быстро все закончилось?

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

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

Свою подготовку я разбиваю на три шага:

  • Рефлексия
  • Резюме
  • Собеседования

Рефлексия

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

Рефлексия -- это основа успешного составления резюме, прохождения behavioural секций и подбора компании по душе.

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

  • истории успеха: "тут было плохо, я это понял и сделал хорошо"
  • истории не-успеха: "я делал это, получилось не очень поэтому и поэтому, сделал такие выводы на будущее, принял сякие шаги чтобы никто этого не повторил"
  • вещи, которые нравились и не нравились: что спросить у команды/нанимающего менеджера?

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

Важную роль в рефлексии играет честность (о которой еще будет ниже). Тут надо понять, что ты не играешь в игру "написать сладкую сказку про А-плеера", это не внешний продукт, направленный на впечатление рекрутера. Рефлексия это целиком и полностью внутренняя штука и чем честнее она будет, тем легче будет понять "где я", "куда я" и "что я". Если ты медленный и ленивый, так и пиши, поможет сделать правильные выводы и искать не гиперпродуктивные команды ноулайферов, а спокойные соцсети для рыбаков с собаками в офисах.

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

Резюме

Во-первых, важность резюме критически переоценена. Никому не интересно читать три страницы твоих излияний на сворованный с resume.io шаблон. Рекрутеры мало чего поймут (но можно постараться написать понятнее), собеседующим инженерам и без этого есть чем заняться. Верхи не хотят, низы не могут, короче.

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

Поэтому писать резюме нужно придерживаясь подхода minimum ne ssytsya pod sebya product -- коротко, по-делу, с нужным количеством ключевых слов и клевых историй, который ты по сусекам наскреб проделав над собой таинство рефлексии.

Я лишь отмечу несколько штук, которых НЕ должно быть в резюме синьора+, на мой взгляд:

  1. Простыней перечисленных технологий, фреймворков, библиотек, систем сборки и прочих айтишных змеиных масел. Ты безусловно молодец, прочитал Хакер Ньюз, выучил 10 фреймворков, но это заинтересовать может лишь таких же замечательных читателей Хакер Ньюз (а их, понятное дело, лучше обходить стороной!).

  2. Пассажей типа

FishBook -- 2019-2020
Implemented features, fixed bugs, participated in code review, paid 69% taxes.

Это показывает лишь незрелость, неспособность принести ИМПАКТ, оценить его или все вместе. А импактить (или делать вид, что ипактишь) это главный смысл профессиональной жизни синьора.

Вместо этого надо писать умные пассажи, как ты нашел неэффективность и все починил. Или как взял на себя и аки Марадонна протащил бычий пузырь эпика от ворот груминга до ворот продакшена. ИМПАКТ и ВЛИЯНИЕ НА БИЗНЕС, короче.

  1. Вранья и буллшита*

Вот эти вот все "lead development of multi-threaded high-performance low-latency scalable microservices", когда в дальнейшем разговоре оказывается, что "ну там очередь в жире была, я тикеты брал и там на Джава 1.8 писал код хз так то что еще рассказать там мы Спринг использовали и Лог4Ж". Таких много, да.

  • -- есть определенное количество необходимого буллшита в резюме. Его надо аккуратно размазывать тонким слоем поверх остального.

А что должно быть? ИМПАКТ, лидершип, ВЛИЯНИЕ НА БИЗНЕС и правильные ключевые слова в правильной последовательности, понятной для типичного рекрутера.

Собеседования

Надо сказать, что у многих айтишников именно на этапе подготовки к собеседованиям начинается полный олд фешнд из бунта против отца вперемешку с синдромом самозванца (shaken, not stirred) и они начинают давить на меха нытья руками эго, а синдром самозванца на ветке сидит и яблоками кидается:

  • принципиально не буду учавствовать в таких-то и таких-то собеседованиях!"
  • "Я никогда этого не делал, там сложно, я тупой"
  • "Мне на работе это не надо"
  • "Я инженер, я код пишу, говорить не умею и потею сразу, уга-буга-ыыы, пссс"

и так далее.

Все это мне кажется малополезным поведением. Гораздо продуктивнее понять правила игры и научиться в нее играть. Кто знает, быть может получится вырваться из бесконечной сансары 65к-работ и третьесортных галер?

Вторая сложность это... а к чему готовится-то? Тут все просто, все известно, что собеседования делятся на:

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

Да, увы, вариаций собеседований в айтишечке больше, чем джаваскрипт фреймворков выходит в год, поэтому нужно прибегать к нашему любимому Рациональному (с) паттерн-матчингу и Критическим Мышлением (tm) вычленять общее из частного, обобщать и находить наибольшие общие знаменатели. К счастью, благодаря повсеместному карго-культу (глобализации), все примерно приходят к одному и тому же процессу.

Третий момент -- подготовка к собеседованиям это очень контексто- и опыто-зависимая штука. Круглолицему интроверту-олимпиаднику можно вообще не готовится к алгоритмическим секциям, зато стоит потратить все время на behavioural, чтобы не приняли за маньяка. Людям из галер, наоборот, нужно прорешать весь литкод, зато уж попиздеть с заказчиком они смогут лучше человека, десятилетиями не выходившего из кампуса Фейсбука.

Поэтому ниже я буду приводить два варианта подготовки: "как в первый раз" и "освежаем в памяти". Истина где-то посередине, YMMV.

"Интервью про Java 1.8.34.beta1 и ООП"

Мой иронично-всрато-любимый тип интервью, который до сих пор сильно распространен там, где популярна монокультура. Особенно популярно среди пропащих душ Джавистов, которых годами (да уже десятилетиями!) мучают одними и теми же вопросами:

  • А какие типы данных есть?
  • А что такое синкронайзед?
  • А как сделать синглтон?
  • А как на Спринге сделать Х?
  • А что такое CQRS?
  • Какие три принципа лежат в основе ООП?
  • Расшифруй SOLID

И прочее. Предугадать конкретный список вопросов не представляется возможным, обычно задают либо куски из спецификации, либо анекдоты из книжек Фаулера с 90х, либо то, что вчера 23-х летний тимлид на хабре прочитал и еще не сумел забыть, хотя очень старался.

Мне кажется, если ты попал на такое интервью, возможно два варианта:

  1. Ты в душной галере, где люди знают два молотка и закручивают ими гайки, чем сильно гордятся. Других (более фундаментальных) знаний нет, архитектуру архитектурят архитекторы, спрашивать больше нечего. БЕГN.
  2. Ты идешь на позицию, где знание конкретного инструмента is a must. Работа над компилятором/тулчейном (привет, Jet Brains) или любая вакансия на C++, лол. В такой позиции ты уже должен обладать определенным уровнем компетенции и сам выплывешь.

Что делать ребятам-генералистам, которые неплохо пишут на пяти языках, но понятия не имеют как внутри работает планировщик Го или GC в Джаве? Во-первых, честно об этом говорить. Во-вторых, избегать таких мест и идти в FAANG, где в 99% вакансий всем плевать на такие мелочи.

Я сам лично очень не люблю такие собеседования и обсессивно-компульсивные растройства инструментов (это когда я на джаве пишу 20 лет заменяет идентичность), но даже в таком формате иногда случается интересная беседа. Где-то год назад, например, я очень мило болтал про кишки Go и PostgreSQL, честно предупреждая каждый раз, что я точно не знаю как оно сделано, но что-то мне подсказывает, что скорее всего так, либо я бы это сделал так. Такие формулировки, обычно, очень круто воздействуют на собеседника. Ведь одно дело выучить доклад с хайлоада, а другое -- получить широкий опыт и наработать кругозор, которые позволяет догадаться, как что-то сделано под капотом.

Whiteboard/алгоритмы

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

В зависимости от душности и самомнения компании вайтборд может быть где угодно между "напиши fizz-buzz с помощью гугла" и "реши две DP-hard задачи за 20 минут". Мое любимое -- когда по всем параметрам средне-серая конторка начинает мнить себя Великогуглом и вслепую копировать их процесс, при этом интервьюеры не то чтобы этот процесс тянут. Кроме того, для любого нормального человека (без всеросов и матпраздников за плечами) огромную роль в вайтборде играет... удача. Если тебе попадется плохая задача, то шансы невелики. Как избежать попадания плохих задач? Больше собеседоваться, duh!

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

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

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

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

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

*В первый раз*

Если ты никогда до этого не сталкивался с алгоритмическими задачками на время, не решал подобного на работе и не учился (или прогуливал) универ, то пакет *В первый раз* для тебя! Сразу приготовься, что на все это уйдет какое-то время и экстренно за 48 часов подготовится не получится, если ты не скрытый гений и говорит тебе об этом не только мама и кассир в магазине у дома, когда ты дрожащими пальцами не можешь открыть пакет-маечку за 5 рублей.

Что делать:
Завтра ищешь в интернете книжку Grokking Algorithms. Пофиг если ничего не поймешь. Затем идешь на leetcode.com и изучаешь от корки до корки. Потом зубришь, именно, вызубриваешь конвенцию по написанию олимпиадного кода, чтобы от механической клавиатуры с синими свичами жир отскакивал...

Ладно, если серьезно:

  • Проходишь любой курс по алгоритмам с курсеры, я проходил от Вышки и Университета Сан Диего. Он временами душноватый, как симфонический прог-рок 70х, но свою задачу вполне выполняет.
  • Вместо или вместе с курсом можно взять книжку. Я бы рекомендовал либо классическую Grokking Algorithms, либо мою любимую Dasgupta, Vazirani. Еще много хорошего слышал про KleinbergTardos, но честно говоря не осилил.
  • Раньше всем советовали книжку Cracking the Coding Interview. Мне она кажется сильно устаревшей и водной, но кому-то может быть полезно полистать, здравые мысли там тоже есть.

После этого можно переходить к общей части.

*Не в первый раз*

Заложив (или имея заранее) какой-никакой фундамент, можно переходить к crème de la crème подготовки, элден рингу и бладборну от мира айти обеседований -- нарешиванию задач с литкода (или хакерранка, кодфорсес, кодварс, методичек Кнута из 1840х).

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

  • greedy
  • dynamic programming (без фанатизма, например в компании рептилоида DP на собеседованиях забанили и просят строчить маляву, если какой круглолицый шутник-олимпиадник задаст на собесе)
  • divide and conquer
  • backtracking
  • two pointers
  • sliding window
  • intervals
  • sorting: quick/merge/heap/radix, binary search, topological
  • traversals: DFS/BFS/in/post/pre-order
  • структуры данных: hash map, tree, heap, union-find (как часто он пригождается и удивительно как мало людей о нем знает), trie (по-русски называется БОР, прикинь?), stack, queue
  • ...и еще сотня тысяч пунктов

К счастью, ушлые айтишники уже насобирали компиляции (например, моя любимая <em>Литкод под водочку 2022 mp3</em>), цель у которых одна -- покрыть основные подходы и типы задач.

Тщательно прорешав несколько раз такую подборку вдоль и поперек, можно смело идти на собеседование. Очень велика вероятность, что попадется задача либо прямо оттуда (но помни, экстренно вспомнить решение это очень херовая затея, решения надо понимать и уметь воспроизводить), либо ее легкая модификация. Лень удачно работает в обе стороны и мало кто запаривается с особенными задачами.

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

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

Понять задачу

Какие у тебя данные? Сколько их? Какие требования по памяти и времени? Кто этой функцией гипотетически будет пользоваться (как много инсайдов иногда открывает ответ на этот вопрос)? Можно ли препроцессить данные?

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

Не молчать

Не молчать! Это вообще главная проблема грустных снгшных интровертов-домоседов, которые думают, что молча наговнокодить решение это залог успеха. Нет, решение надо изобретать на ходу (даже если помнишь наизусть), размышлять об альтернативах, трейдоффах, сложности и вообще, в идеале, объяснить интервьюеру как это решение у тебя получилось.

Не ок: "ммм тут.... ээээ... пишет 10 строк... а тут... ыгыыыыы... еще 20 строк... ой! что-то молча меняет на пятой строке, довольно пыхтит и облизывает пересохшие от алгоритмического удовольствия губы ээм ну это... вроде все тут посмотри.... типо должно работать.... ыыы....".

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

Не затыкаться

Иногда бывает, что ты ну вот вообще хзшечки как подступиться к решению задачи. Это ок. Не молчи. Задай вопросы. Рассуждай вслух, проговаривай явно в чем твой затык. Предлагай решения, которые не работают и объясняй почему они не работают. Прогони пару примеров на них.

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


Откопанный слайд из моего вебинара в Практикуме. Так оно должно быть, но редко когда бывает.


А так бывает гораздо чаще, увы.

System Design

Внук легендарного Вайтборда, популярный певец Сисдиз!

Суть в следующем -- тебе дают гипотетическую систему, а ты ее должен спроектировать.

Как это водится в айти, совы не то, чем кажутся и мало какого (хорошего, но таких мало) интервьюера сильно заинтересует прям вот конкретная архитектура на уровне "а тут у нас по джи-ар-пи-си микросервис Жопка отправляет Протобуфер в микросервис УнитазЭнтерпрайзКонтроллер2.5 и все это в Кубернетес кластере".

Вместо этого я бы рекомендовал оптимизировать следующие умения:

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

Сразу скажу: по-моему, успешное прохождение Систем Дизайна это функция от опыта. Если ты никогда в жизни не работал с распределенными системами или ну вот вообще никогда ничего не дизайнил, то придется тяжело, какие книжки не читай. Ходят слухи, что индусы умеют проходить сисдизы по книжкам, просто заучивая слова и решения типичных проблем (или липсинком!), но это путь в Amazon AWS, а там индусы в шахматы на интерес играют.

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

Помимо опыта у сисдиза полно своей специфики, к которой тоже стоит готовится.

*В первый раз*

На горизонте виднеется первый в жизни сисдиз, волнительное событие, подружки собрались в комнате невесты, что же делать?

Я бы разделил подготовку на два трека: есть полгода времени и нет полгода времени ААА ЧЕРЕЗ ДВЕ НЕДЕЛИ СОБЕС ЧЕ ДЕЛАТЬ ААА.

Если времени много:

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

Если времени немного:

  • Understanding Distributed Systems -- книжка-золото по соотношению информации и количества страниц. Фактически, это такой словарик-теоретический минимум по распределенным системам. Глубину Кабана не покрывает, но в целом дает хорошее представление о том, что же такое эти ваши раздерпеленные системы. В принципе, даже если ты проходил через протобуфные трубы сисдизов уже много раз, все равно может иметь смысл прочитать эту книгу.

Получив/освежив в памяти теорию, самое время переходить к практике!

*Не в первый раз*

Как я уже сказал выше, теория это хорошо, наше все и ОЧОБА, но у сисдиз-интервью есть и своя специфика, к которой неплохо бы подготовится:

  • Интервью обычно идет 45-55 минут, поэтому очень важен тайм-менеджмент: надо уметь уложить все свои рассказы и рисование квадратов в очень сжатые сроки
  • У сисдиза есть определенные порядок, который неплохо бы соблюдать. Если рандомно бегать о темы к теме, ничего хорошего не будет.
  • У большинства задаваемых вопросов скоуп может быть очень большой (ну спроектируй мне Гугл за 45 минут, давай!), поэтому критично важно уметь его резать и отделать важное от не очень важного.
  • Очень важно брать на себя и проявлять инициативу. Поэтому сисдиз стоит как бы посереди не между супер-техническим вайтбордом и супер-софтскилловым бихейвом.

Научиться этому можно двумя путями:

  • Почитать готовые примеры сисдиз-интервью и научиться составлять план, выделять под него время и может быть даже запомнить пару хороших готовых идей, вдруг опять попадется URL shortener? Здесь есть два источника: текстовый курс Grokking System Design Interview и небольшая книжка System Design Interview: An Insider's Guide. Оба немного всратые, но дают необходимое количество примеров и подходов.
  • Мок-интервью. Для вайтборда, как мне кажется, мок-интервью особой ценности не несут, а вот для сисдиза это практически необходимый элемент успешной подготовки. Желательно проходить мок на языке будущих собеседований (если ты идешь в фаанг, то мокать на русском смысла мало) и попросить знакомого, который уже работает в компании похожей на ту, куда ты собираешься (мокать с синьор клауд архитектором из ИП "Палкин" смысла мало).

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

Тайм менеджмент

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

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

Я пользуюсь таким планом:

  1. Требования и вопросы: говорим о задаче, пользователях, нагрузке и вот этом вот всем. 5-10 минут.
  2. Estimations: сколько нужно будет стораджа, какая нагрузка на сеть и вот это вот все. 5 минут, очень приблизительно. Иногда этот пункт я опускаю совсем и рассчитываю по ходу следующих шагов.
  3. Высокоуровневый дизайн: несколько квадратиков со стрелочками. Говорим про цели, чего хотим в итоге достичь, отмечаем потенциально узкие места и трейд-оффы. 10 минут.
  4. Глубокое погружение: берем какие-то из квадратиков и говорим про них. Обычно я беру сторадж и рассказываю, какой он должен быть. Иногда просят рассказать что-то сами интервьюеры. Обязательно через слово говорить о трейд-оффах, иначе пацаны засмеют. 20 минут.
  5. Завершаем: говорим еще раз о получившимся, где и как можно вырасти, что можно пометерить/поалертить, как это пушить в прод. 5-10 минут.

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

Инженерное мышь-ление

(да, я опять забыл принять таблетки и про это)

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

Если инженер не видит минусы в каком-то решении, он скорее всего не до конца понимает проблему, предложенное решение или все сразу.

В контексте сисдиза очень важно показать, что ты не баззворд-буллшитер-коммивояжер, а инженер. Достигается это просто: через слово говори о трейд-оффах и формулируй решения в терминах требований, а не конкретных технологий. Звучит сложно, но на самом деле нет, щас покажу!

Пример плохой: тут база нам нужна возьмем Amazon Certified Dynamo DB as a Service а тут кэш нужен мы возьмем Amazon Certified Cache as a Service мне на курсах сказали топ.

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

И только в конце пасторальных рассуждений о прекрасном можно упомянуть пару технологий. Топ-тема еще и упомянуть о своем конкретном опыте, мол, у нас было вот такое, а оно стреляло неожиданно при таких обстоятельствах, вот умора была (нет). После этого тебе сразу дадут L69, кошка-жену и релокационный пакет.

Резкость и движения тазом

Hot take: чем более ты синьор, тем меньше должно быть слышно твоего интервьюера на сисдизе. Идеальная картина -- получил задачу, уточнил вопросы и пошел рассказывать, как оно делается.

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

Постоянные does it make sense? и mhmh where should we go next? работают в минус. Лучший сисдиз (по фидбеку), который я проходил выглядел как 45-минутный монолог с посаженным голосом в результате.

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

Behavioural

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

Если вайтборд отвечает на вопрос он вообще кодить и говорить умеет, то сисдиз и бихейв вколачивают гвоздь диаметром с грейд в крышку потенциального оффера. Хороший вайтборд и так себе сисдиз/бихейв -- прыгнуть выше мидла не получится. Так себе вайтборд и отличные сисдиз/бихейв -- есть все шансы.

У бихейва две конкурирующие цели:

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

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

Не делайте так, пожалуйста. Галер много, вас мало, подходите к выбору ответственно и умейте понять, когда вам не по пути. Кукуха будет здоровее, а психотерапевты беднее. База, одним словом!

Но это лирика, а теперь как это все проходить и к чему готовиться.

Убедить менеджера

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

Допустим, есть компания X, у компании X есть LEADERSHIP PRINCIPLES (c) (tm), которые выглядят так:

  • рычит
  • двигает тазом
  • не пысает под себя

С большой долей вероятности на бихейве будет сидеть человек, цель которого поставить галочки (или оценки) напротив этих трех пунктов.

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

Плохой пример:

  • А ты рычишь вообще?
  • Да если надо могу и рычать

Или:

  • Ну у меня вот менеджер был он говорил рычать давал а я рычал обычно хорошо

Хороший пример:

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

В чем отличие? В первом случае ты рассуждаешь с дивана. Во втором ты рассказываешь о конкретно твоем опыте и чем твой опыт отличался от описанного в сферической книге Дяди Боба.

Как к этому готовиться? Довольно просто:

  • Выше мы уже прошлись по важности рефлексии. В результате ты получаешь набор классных и правдивых историй, которые уникально-твои.
  • Гуглишь матрицу компетенций или LEADERSHIP PRINCIPLES (c) (tm) компании, в которую собеседуешься. Умные компании заранее присылают их тебе на почту, чтобы ты смог подготовиться.
  • Берешь истории. Берешь компетенции. Соединяешь ниточками. Хорошо покрыть каждую компетенцию хотя бы парой историй.
  • Репетируешь. Можно перед зеркалом с таймером, но лучше сделать пару-тройку мок-интервью.
  • Ты великолепен, иди за своим оффером и кепкой с пропеллером!

Понять самому

Хорошо, вот ты составил набор историй, сматчил их на то, что ищет компания и даже прорепетировал пару мок-сессий. Что дальше?

Дальше задача сложнее -- тебе нужно прособеседовать работодателя. И сложность задачи заключается в том, что стандартных "10 минут на вопросы в конце" явно недостаточно.

Как же быть? Очень просто -- во-первых, честно отвечать на все вопросы. Спрашивают у тебя "А ты готов с 9 утра до 9 вечера работать и раз в месяц дежурить неделю?", а ты мать-одиночка с пятью детьми и тремя собаками из приюта, да и вообще за WLB, так и говоришь "Нет". Звучит просто, но сколько же людей виляют жопой, врут, копают сами себе могилу, лишь бы понравится и получить оффер. Кафкианское животное отнимает плетку у хозяина и стегает себя, чтобы стать хозяином, но оно не знает, что это – только фантазия, вызванная новым узлом на плетке хозяина в действии.

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

Во-вторых у тебя все же будут 10 минут на вопросы и их хорошо бы использовать по-максимуму. Хорошо задавать крамольные вопросы, на которых нет "правильного" ответа. Сразу понимаешь, какой там менеджмент и чем он руководствуется. У меня обычно вопросы про capacity planning, техдолг, theory of constraints, KPI/OKR, "что делаешь если разработка затормозила". Еще в клубе есть хороший тред про такое, рекомендую сходить туда.

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

69 interviews 1 Ivan

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

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

Что для этого делаю я:
0) По возможности не смешивать текущую работу и поиск новой. Увольняться, брать отпуск или делать что угодно, но только не совмещать. Я совмещал. И совмещал очень сложную работу с очень сложными собеседованиями. Иногда я брал отгулы/короткие отпуска. Но это все не то. Лучше -- не работать совсем и вообще, а если такой возможности нет, то хотя бы не работать во время собеседований. Так честнее по отношению к работодателю и, что важнее, гораздо легче для кукухи и организма.

  1. Никаких утренних собеседований. Любое собеседование должно быть после хорошего сна на разогнанную нервную систему.
  2. Никаких поздневечерних собеседований. После 18-00 я превращаюсь в рыбку и готов только шитпостить, а не разговаривать с незнакомыми тетями и дядями про айти.
  3. Максимум два собеседования в день с отдыхом хотя бы два часа между ними.
  4. Не больше трех компаний в одно время. Тут помогает sliding window -- закончил процесс с одной, можно начать с другой. Но важно правильно коммуницировать и четко выставлять свои сроки. Обычно "мне нужен месяц, чтобы закончить собеседования" воспринимается без проблем и вопросов.

Разумеется, YMMV, все разные, кто-то и 10 собесесов за секунду может пройти и не вспотеть, кому-то и 1 собес в неделю выжжет нервную систему на месяц. Смотри сам, слушай свой организм и не забывай отдыхать!

Как это было у меня

Примерно так, да. Еще и вперемешку с работой, потому что я дурачок. ПОВТОРNВШNХ СОIДUТ С YМА, не повторяйте по возможности.

Офферы и денежка

Отлично пройдя все собеседования может показаться, что Cцилла с Харибдой позади, а впереди только Рационально (с) выбранная по табличке Итака, но на самом деле самое веселое начинается в момент зачитывания оффера.

Начнем с банального -- офферов должно быть несколько. Желательно, что бы несколько было 3+, а не 2. Хорошо бы, если эти офферы конкурентны друг другу, а не HFT в Лондон на 300к фунтов и соцсеть для рыбаков в Гданьск за 40к евро.

Зачем это? Чем больше конкурентных офферов, тем проще торговаться и давить на компании. Фразы: "Я очень хочу у вас работать, но у меня есть параллельный оффер к вашим конкурентам и он финансово выгоднее, я даже хз...(((" действуют как полусладкое вино на провинциальных выпускниц (или выпускников, не отменяйте!).

Денежка

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

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

  • все остальные существуют с нами в этой комнате
  • ты действительно подписываешь оффер прямо сегодня, а не юлишь жопой по шоссе

Работало трижды как часы: один раз выбило релокационный пакет, другой раз +15% к офферу, третий раз сайн-он кэшом размером с годовую премию.

Карьера

Удивительно, но карьера и деньги не всегда идут рука об руку! Во дела!

В целом, я руководствуюсь таким ментальным фрейворком про карьеру:

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

Если короче, то _Сначала ты работаешь на зачётку, а потом зачётка работает на тебя!.

Локация (и денежка)

Тут все просто -- надо обязательно составить табличку и Рационально (c) выбрать место для жительства, руководствуясь Критическим Мышлением (tm), не мне об этом рассказывать!

Приведу только свой революционный способ подсчета достаточной зарплаты для локации:

  • беру _чистую_ среднюю по региону
  • умножаю на 2 и получаю планку, на которую я могу рассмотреть куда-то предложение и _теоретически_ согласиться поехать
  • умножаю на 3 и получают цифру, на которую готов ехать, если нравится компания и локация
  • умножение на 4 и больше работает только в Лондоне или Цуриче.

Это если без детей и без комплексов неполноценности.

Между мультипликаторами 2 и 3 и оказывается большинство интересных мне компаний, это дает возможность сразу отсечь 90% европейского айти-колхоза и концентрироваться на важном, потому что время и силы ограниченны.

Ну и легендарный тир-лист зарплат для Лондона, который, оказывается, подходит для многих европейских больших городов с минимальными изменениями:

Конец

Такие дела!

Пишите в комментариях ваши любимые лайфхаки переворачивания деревьев, подписывайтесь на мой канал с лучшими историями про собеседования (на самом деле я пока не решил, что там будет, наверняка какой-то шитпост, шутки над Берлином и британский джаз), любите Денежку и Вайтборд! Говорите открыто и четко Отличный вопрос! На прошлом месте работы у меня была похожая ситуация...

Связанные посты
77 комментариев 👇

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

Обнаружил, что прошёл литералли тот же путь подготовки, только:

  • делал это двумя месяцами позже
  • учитывал желание жить в определенных локациях (прям вот табличка, то сё)

Со всем треком подготовки согласен. Есть что добавить!

Сисдиз

В итоге у меня после третьего проваленного сисдиза появился свой читшит. С ним я уже успешно прошёл три других сисдиза.

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

Ну и конечно без достаточного опыта проходить сисдиз тяжело. На последних собесах я чётко говорил: "Вот с этим я не работал, в теории должно работать вот так и вот так, в книжках вот такие плюсы-минусы. Есть какие-то вопросы тут или к другому компоненту перейдём?" – ибо цитировать кабанчика / ютуб / сисдизпраймер выдавая это за свой опыт оооочень тяжело.

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

  • требования-вопросы-estimations: диалог
  • хай-левел дизайн: монолог + аппрув
  • дип-дайв: монолог + ответы на вопросы если они есть
  • выводы: монолог + проактивно спрашивать есть ли ещё вопросы

Бихэйв

Я считаю, что после этапа рефлексии нужно взять получившееся и вытащить оттуда 3-5-минутные истории успеха. Истории неуспеха вытаскиваем тоже, потому что иногда они важнее. Мне кажется, что все мыслимые бихэйв-интервью покрывает подготовка к амазоновским Leadership Principles: гуглим вопросы по этим принципам и составляем по одной истории на каждый принцип по STAR.

Деньги

Ещё можно идти на levels.fyi и в сотый раз перечитать про тримодальную структуру зарплат. Тоже отсекает 90% рынка

@inkoit, что такое "тримодальная структуры зарплат". Или надо на английском искать?

  Развернуть 1 комментарий

@golam, популярный пост про соотношение типов компаний и их вилок в Нидерландах и Европе.

https://blog.pragmaticengineer.com/software-engineering-salaries-in-the-netherlands-and-europe/

  Развернуть 1 комментарий

@golam, я говорил про статью, которую часто кидают в ответ на вопрос про деньги. Вот она: https://blog.pragmaticengineer.com/software-engineering-salaries-in-the-netherlands-and-europe/amp/

Там ещё видео есть, иногда кидают и его

  Развернуть 1 комментарий

@inkoit, где бы спарсить лист таких компаний по тирам. А то видишь иногда название, слышишь в первый раз, а онп оказывается платит больше всех

  Развернуть 1 комментарий

@Steelrat, если по Нидерландам, то в статье есть список этих компаний, и в Клубе есть мета-пост по Нидерландам, там перечислены они. Если не только по ним, то можно пойти на levels.fyi, там есть раздел типа «география» или как-то так, и по каждому месту top paying companies: первые 5 компаний видны хоть кому, чтобы посмотреть на остальные нужно регаться.

Ещё мой личный способ: если компания делает продукт на международный рынок или это HFT, то скорее всего это top tier. Иногда можно потыкать в линкедине и посмотреть, откуда бывшие сотрудники: некоторые, конечно, идут на понижение, но шанс наткнуться на таких ниже.

Понял, что ответил только на определение tier 3. Как различать tier 1 и tier 2 — не знаю

  Развернуть 1 комментарий

@inkoit, ну да, как бы фаанг и убер и так всем известен, но есть много других компаний, куда легче пройти и платят нормально

  Развернуть 1 комментарий

@Steelrat, по Нидерландам делали местный аналог левелс — https://techpays.eu/, там эти тиры даже в фильтрах поиска по компаниям есть. Сейчас они еще несколько стран добавили, рекомендую посмотреть, там сильно больше полезных данных по небольшим компаниям чем на левелс и глассдоре.

  Развернуть 1 комментарий

@smyachenkov, топчик, спасибо

  Развернуть 1 комментарий
Nikita Galaiko founding software engineer 8 июля 2022

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

@ngalaiko, так и есть, у самурая нет цели, только путь!

  Развернуть 1 комментарий

@ngalaiko, Черт, я без этого кукухой поехал

  Развернуть 1 комментарий
Egor Ogarkov Senior Software Engineer 8 июля 2022

Не знаю ради чего я читаю эти отличные стены текста, просто потому что классно или в надеже на коллекционный тег (которого кстати нет 😡).

  Развернуть 1 комментарий

@Windrushfarer, Добавили :)

  Развернуть 1 комментарий
Roman Pavlov System Development Engineer 8 июля 2022

Не молчать! Это вообще главная проблема грустных снгшных интровертов-домоседов

Проблема - это когда молучны по ту сторону интервью.

Так что я перешёл на следующий уровень и прошу не ставить мне рашн-спикин интервьюеров.

  Развернуть 1 комментарий

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

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

YMMV, но я был рад что негативные стереотипы это не стопроцентная гарантия.

  Развернуть 1 комментарий

так как собеседоваться-то, я не понял?

  Развернуть 1 комментарий

@Kirk, отличный вопрос! На прошлом месте работы у меня была похожая ситуация, был B-player, который никак не мог понять, как собеседоваться...

  Развернуть 1 комментарий

@Kirk,

  1. будь программистом
  2. будь сеньором
  3. будь дохера крутым
  4. ??????
  5. PROFIT!
  Развернуть 1 комментарий
Misha Chinkov a boy in the better land 8 июля 2022

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

ИМПАКТ и ВЛИЯНИЕ НА БИЗНЕС

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

В каком случае я буду пиздеть? А в каком не буду? Как в таких случаях лучше описывать импакт и влияние на бизнес?

  Развернуть 1 комментарий

@kraiz, важны бизнес метрики, если прямо сейчас дыра в бюджете, а ты вместо решения проблем заботишься о стратегии на 10 лет - думай сам.
И наоборот, ты прямо сейчас сгенерировал говнокод, но вы вышли на доходность с этой фичой и теперь есть время и деньги на рефакторинг - ну и отлично.

И чем ты синьористее, тем важнее понимание связи твоей работы с метриками. Это хорошее и полезное упражнение: зачем мы это делаем с позиции бизнеса? Мы ускорили перекладку жсона в 10 раз чтобы что?

  Развернуть 1 комментарий

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

С другой стороны — это, как написал автор, это наверно часть. рефлексии. Я осознаю, что мне в кайф заботиться не о том, что горит и нужно прямщас. А о том, что будет важно и через полгода, и через года. В чём можно надолго закопаться, но выйти с решением. К сожалению я так и не научился понимать на этапе собеседования — придется мге заниматься "хуяк-хуяк-и-в-продакшн" или длительными задачами :)

  Развернуть 1 комментарий

Как работник соцсети для рыбаков - одобряю:) (откуда столько отсылок?)

  Развернуть 1 комментарий

@Stenopolz, я просто помню какой-то очередной срач в Тракторе, в котором прозвучало выражение "соцсеть для рыбаков" и мне показалось это лучшим описанием айти в Европе (лучше только "немецкие симуляторы фермера"), вот и форсю потихоньку (без негатива!).

  Развернуть 1 комментарий

@begor, вот ты шутки шутишь, а шведы уже такое замутили!
https://fishbrain.com

  Развернуть 1 комментарий

@dwdraugr, у меня друг там работал!

  Развернуть 1 комментарий

@mixbez, Абалдеть) И как оно? Я им апплаился в апреле, но они уже стопнули найм не из ЕС :(

  Развернуть 1 комментарий

@dwdraugr, ему нравилось, тимбилдинги у них были про рыбную ловлю частенько :D
Но вот пару месяцев назад у них произошло сокращение, под которое он попал :(
(но он уже нашёл новую работу)

  Развернуть 1 комментарий
Ilya Nikokoshev нейросетки, NLP, все такое 8 июля 2022

типо Тайпей китайский город

Вполне китайский, там же даже политическое образование с официальным названием Republic of China. Говорят на китайском, этнические группы:

The ROC government reports that over 95 per cent of the population is Han Chinese, including descendants of those who arrived in large numbers starting in the 18th century, 2 per cent indigenous Malayo-Polynesian peoples, and 2 per cent new immigrants primarily from China and Southeast Asia.

  Развернуть 1 комментарий

@ilya-n, вы порадовали Гоминь дан и подбургерный лаовай. Получайте экскурсию на завод TSMC и значок против красный орда

  Развернуть 1 комментарий

Очень хорошо, прям таки прекрасно! 👏

  Развернуть 1 комментарий
Igor Kustov Java & Go Developer in Search 8 июля 2022

Очень хорошо, да!

По поводу Java-интервью - про Дядю Боба уже не спрашивают на Java, спрашивают про внутреннее устройство Spring, от этого совсем не легче.

Вообще на галерах и в целом в ентерпрайзе цикл жизни разработчика 5-7 лет, потом либо убежал в менеджмент, либо (если аутист) стал специалистом по производительности (тут знание внутреннего устройства реально помогает).

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

Ох, Егор, где ж ты раньше был со своим гайдом!

  Развернуть 1 комментарий

@IgorKustov, спрашивают и про SOLID и про паттерны проектирования) непонятно нафига)

  Развернуть 1 комментарий

Часто еще по алгоритмам Рафгардена советуют, но мне в прошлом году не помог)

Жду уже книгу grokking everything everywhere all at once.

p.s. Текст охупросто прекрасен, читал и наслаждался

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

@ganqqwerty, у меня будет отдельная просьба: ты только никому из Партии Зелёных, пожалуйста, про мейнфреймы ничего не рассказывай, ничего-ничего, ладно? :///

  Развернуть 1 комментарий

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

  • "Генерализма" в мобильной разработке особо нет, поэтому платформенный этап в том или ином виде точно будет. Знание конкретного инструмента там все-таки важно - контроля над платформой у разработчика мало.

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

  • Секция про сисдиз вообще не подходит для таковой для мобилок (только формат совпадает). Никаких распределённых систем там быть не может, и по сути разговор можно вести только про архитектуру одного монолитного по своей сути клиентского приложения. Ресурсы для подготовки к мобильному сисдизайну в результате крайне скудны, но это конечно же разговор больше за опыт.

  Развернуть 1 комментарий

А импактить (или делать вид, что ипактишь) это главный смысл профессиональной жизни синьора.

Непопулярное мнение: импакт переоценён.

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

Куда лучше, по-моему, было бы стремиться к вовлечённости (не смейтесь). Лучшие места работы, где я был, были со слабым или несуществующим импактом, зато именно вовлечённость помогала мне расти и развивать продукт так, что менять я их особо и не хотел.
Циферки импакта (или как их меряете, KPI/OKR) - это одно, но когда тебе нравится продукт, команда, зарплата и технологии, и ты сам хочешь все это развивать и драйвить - совсем другое (это я и называю вовлечённостью).

Другое дело, что честно посчитать и оценить вовлечённость нельзя, поэтому весь мир оптимизирует по импакту.

  Развернуть 1 комментарий

@daemon100, и я даже согласен.

Но тут опять про правила игры: все понимают, что говно и сломано, но продолжают играть, ставить галочки напротив компетенций и искать импактных чуваков. Но game was rigged from the start, да.

  Развернуть 1 комментарий

@begor, не все понимают, многие люди в этой цепочке реально не догоняют, или не умеют включать голову. Для них «как в гугле» это знак качества, а дальше можно не думать.

  Развернуть 1 комментарий
Maximus Электрический инженер 8 июля 2022

Самый главный вопрос:

Што в канале будет за Эрланген?!

  Развернуть 1 комментарий

Отличные рекомендации.

Интересный опыт в выборе офера по мультипликаторам 2х, 3x из последней части.

Совпадает с моими ощущениями

  Развернуть 1 комментарий

@chebur, так, а вот это

беру чистую среднюю по региону

в какой табличке брадиса смотреть?

  Развернуть 1 комментарий

@l0ki, google average salary in countryname

  Развернуть 1 комментарий

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

Я сейчас каждую неделю собеседую кого-нибудь на уровень Staff+, и количество разнообразных чуваков уровня вплоть до Principal Engineer из гуглов, яндексов, thoughtworks'ов которые не прошли именно потому что не было понятно это они не подготовились или реально не шарят, измеряется уже пальцами на серьёзном количестве конечностей.

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

  Развернуть 1 комментарий

@danik, Может, просто ваша система собеседования недостаточно хороша, что к вашему собесу надо готовиться и без этого непонятно шарит ли он или нет?
Просто очень старанно, что человек прошедший довольно формализованный отбор гугла/яндекса не может пройти ваш отбор.

  Развернуть 1 комментарий

@musuk

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

  2. Бывает так, что чел в принципе интуитивно или с осколочными знаниями умеет на практике дизайнить такие системы (это нередкий случай), тогда подготовка нужна именно для того чтобы знать термины (чтобы просто сказать, скажем," write-through cache" вместо траты времени на объяснения на пальцах как оно работает) и в принципе понимать, что на таком типе интервью требует акцента, а что оставляется за скобками.

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

  Развернуть 1 комментарий

@danik, ну если они они не проходили формализованный отбор, то тогда другое дело. Кстати да, гуглы и яндексы иногда покупают другие компании, тогда сотрудников могут не пересобеседовать.

  Развернуть 1 комментарий
Оля Кунявская Блокчейн инженер 8 июля 2022

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

  Развернуть 1 комментарий

@olga24912, рыдаю в голос. Какая же жиза!

Мой первый гугловый рекрутер неиронично обрадовался слову "рекурсия", я ещё тогда подумала, что наверное как-то плохо выгляжу сегодня

  Развернуть 1 комментарий

@olga24912, а потом ты оказываешься по ту сторону стола и видишь бездну :,)

  Развернуть 1 комментарий

Котлован? Дань уважения Платонову?

  Развернуть 1 комментарий

Я читаю все твои посты и комментарии, чувак. Ты мой любимый юзер! Жажду развиртуализироваться!

  Развернуть 1 комментарий

Большое спасибо за рассказ про классный опыт и уйму крутых ссылок!

Сгорел в книге грокаем интервью с поинтов про то, что на собеседовании нужно сделать из себя вид того, чего от тебя ждут)

Это похоже реальность айти и честные люди, которые говорят правду не нужны, а нужны альфа плееры с ЧСВ выше Парижской башни, которые даже про оптимизированный SQL запрос в базу на 2к строк расскажут так, будто проектировали Спейс Шаттл в одиночку :))

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий
Кристина Волосюк Разработчик интерфейсов 9 июля 2022

Привет! Подскажите, пожалуйста, неопытному фронтендеру, как подготовиться к секции сисдиза по фронту? Что-то постоянно натыкаюсь на всякие штуки про кабанов для уважаемых бэкендеров, а про фронт на такие классные ресурсы не натыкалась) Буду очень благодарна за любую инфу)

  Развернуть 1 комментарий

@chrstnv, начать можно вот отсюда https://t.me/FaangFrontend

  Развернуть 1 комментарий

@Aiaz, спасибо большое! :)

  Развернуть 1 комментарий

Лойс! Отдельный лайк за рефлексию и осознания себя в фуд чейн инженерии. Не стоит стесняться работать в сети для рыбаков. Если подготовка очень сложна и вызывает боли в различных частях тела, то не с нулевой вероятностью работа будет сопровождаться теми же симптомами. Кто-то вывозит, а кто-то страдает PTSD после этого. Со стороны это тоже очень больно наблюдать.

  Развернуть 1 комментарий

По зарплатам В Берлине примерно также, поддерживаю поинт.

  Развернуть 1 комментарий
Maksim Brigadirenko разработка неповоротливой бизнес системы 9 июля 2022

Спасибо за классификацию Борхеса, первый раз встретил :)

  Развернуть 1 комментарий

Ставь лайк если во время прочтения тоже рычал и двигал тазом!

  Развернуть 1 комментарий

Вот у вас проблемы первого мира, не удивительно, что вы так горите.

Последний раз собес проходил лет 20 назад, когда первый раз на работу устраивался.

Сейчас просто на конфе подходят, спрашивают, не засиделся ли я в Х?

Все друг друга не в первом, так во втором рукопожатии знают.

Минус точно такой же, програмистским рейтам молча завидуем и рыдаем, когда нужны программисты. )

  Развернуть 1 комментарий

@VBodrov, [отдаёт пиво назад]

  Развернуть 1 комментарий
Филипп Федюк уламывает кремний работать 10 июля 2022

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

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

  • работа с сетью: REST, gRPC, sockets, polling, etc с обсуждением трейд оффов;
  • кеширование: надо ли оно вообще, сохранять в память или на диск, если на диск то использовать ли БД или просто в файлы писать, итд;
  • работа с плохим соединением и слабыми девайсами (это конечно же только для андроид секций) чтобы в Руанде ваще приложение нормально работало. Но для iOS-господ тоже неплохо понимать базовые штуки про нагрузку на сеть и прочее;
  • архитектура: та которая про определение бизнес-логики и разбиение на слои. А не про MVC/MVP/MVVM/VIPER и другие аббревиатуры, это как по мне вообще не нужно для сениор+ позиций, хотя многие из кандидатов при слове "Архитектура" и "Сисдиз" бросаются рассказывать про эти паттерны;
  • немного про платформу (можно блеснуть своими знаниями про андроид 4.2) и про выбор инструментов: какие библиотеки использовать (если надо) и трейд-оффы естественно;

P.S.  Жду вторую часть

  Развернуть 1 комментарий

Очень весело! На второй половине чуть не сикнул от смеха. Читайте обязательно, но с осторожностью.

  Развернуть 1 комментарий

@spetrov,

Рычит ✅
Двигает тазом ✅
Не пысает под себя ❌

  Развернуть 1 комментарий

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

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

  Развернуть 1 комментарий

Спасибо за пост!
Интуитивно, но я шла таким же путём, поддерживаю!
В прошлом году у меня был такой марафон собеседований, натренировалась хорошо, но вот что всегда вызывало у меня сложность - определить, подходит ли мне компания и выбить оффер получше. Ну с оффером то ещё такое, а вот с выбором компании - я вроде и вопросы правильные задаю, и на разные факторы обращаю внимание, но в итоге оказывается, что то, что мне казалось достоинством на практике может стать причиной ухода в будущем. Возможно просто с опытом или со временем натренируюсь выбирать правильных :)

  Развернуть 1 комментарий

@begor а почему нет цифр-то? Сколько тебе в итоге дали и в какой компании?

  Развернуть 1 комментарий

@juriasan, это планировалось во второй части про конкретные собеседования, но мне очень лень и я пока не стал это оформлять в пост.

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

  Развернуть 1 комментарий

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

Что значит IC? Обьесните я с деревни

  Развернуть 1 комментарий

@girl, individual contributor

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий
Maxon Vodkin Компьютерный режиссёр по версии careers.kaspersky 8 марта в 10:09

Шалом! А как оценишь курс «Алгоритмы и структуры данных» от Я.Практикума? Вижу ты тоже руку к нему приложил.

  Развернуть 1 комментарий

@MaxonVodkin, привет!

Его с того времени уже переписали, вроде. Когда я там был, курс был очень сырой и автогрейдер постоянно спотыкался об лимиты. Сейчас, наверное, уже получше.

  Развернуть 1 комментарий

@MaxonVodkin, проходил в том году, понравилась подача теории: кратко с интерактивом. Задач для меня было много, с середины успевал решать только половину в каждом блоке, за курс обещают порядка 100, в финале есть возможность пройти тестовый собес с куратором. Все обсуждения в чатах, кураторы активно направляют к верному решению, после каждого блока разборы задач.

  Развернуть 1 комментарий

Наверное тут есть здравые мысли, но я не смог их найти в этом потоке графомании

  Развернуть 1 комментарий

😎

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

Что вообще здесь происходит?


Войти  или  Вступить в Клуб