Доброго утречка. Прогреемся?
Мое мнение не отражает позицию какой бы то ни было компании. Все совпадения с вашими нанимающими менеджерами случайны. Мой бывший Director Title в одном из топ-трех русскоговорящих бигтехов никакого отношения к высказанному не имеет и совпадения с ним тоже случайны. Кто захочет — при желании найдет, где и чем я занимался последние 10 лет и почему мое мнение имеет ценность.
Если вы не знали, откуда на собесах для джейсоноукладчиков взялась сортировка пузырьком, сегодня узнаете. Поехали!
Зачем вы пишете сортировку пузырьком?
Итак, почему многие интервью — такое непроходимое говно? Зачем вы пишете сортировку пузырьком, после которой будете перекладывать джейсоны? Для чего делаете поиск по префиксу, если потом верстаете дебильные SPA?
Короткий ответ: бигтеховское интервью — это простая проверка сообразительности и ничего более. Аналог теста на IQ для разработчиков со всеми плюсами и минусами теста на IQ. Никакого другого глубокого смысла в него не заложено. Это просто лучшее, что мы придумали 10-20 лет назад, вот и всё. Ни одной разумной причины применять этот подход, если компания не является бигтехом (несколько тысяч разработчиков), нет — это просто необдуманное копирование не самых квалифицированных людей. Исключение: компании, создающие реально алгоритмически-сложные технологии, например, свои СУБД.
Почему бигтехи придумали именно это
Представь, у тебя в управлении огромная структура. Десятки бизнес-юнитов, тысячи инженеров, сотни команд. Они все немного разные. Они придумывают свои фреймворки и технологии, потому что на масштабе готовые трескаются. Они все используют немного разные методологии разработки (где-то — продуктовые команды, где-то — колодцы, где-то скрам, где-то канбан, где-то есть продакты, где-то нет). Они даже таск-трекеры иногда разные используют.
И тебе также важно, чтобы в разных частях компании работали «примерно одинаковые» по способности решать задачи люди. Примерно одинаково им платить, чтобы одни части твоей империи не перетаскивали деньгами хлебопашцев из других.
Получается, тебе нужен не слишком замудренный, более-менее простой способ ЕДИНООБРАЗНО оценивать людей, которые дальше будут заниматься супер-разной работой. «Если человек хороший и быстро соображает — глядишь, научится нашему зоопарку».
Как это сделать? Начать всех более-менее единообразно собеседовать. Можно было бы давать задачки на логику (как у менеджеров раньше было, «сколько мячиков для гольфа поместится в задний проход медведю Гриззли»), но..блин, разработчиков же все-таки хочется. Давайте выберем какой-то аналог «задачек на логику и базовую эрудицию» для разрабов. Ну и — да, неплохо, если они какое-нибудь образование получали (да-да-да, Стив Джобс справился без него, но на больших числах и больших массах статистика есть статистика. Мы все же не одного самородка ищем, а 500 человек в год нанять собираемся. Самородок там уж как-нибудь попадётся).
Что приходит на ум? Ну да, базовые алгоритмы, которые на первом курсе читают. Кое-какая эрудиция, кое-какая логика (чтобы уложить сортировку пузырьком в голове, логически подумать придется). Если ты учился в универе — оно у тебя есть. Если ты не учился, но хочешь разобраться — ты за пару месяцев разберешься. Если брать людей, которые учатся — они примерно все через это проходят, и будущие бэкендеры, и фронтендеры, и системные аналитики. Ну и отлично — чем не новый тест IQ? Давайте по нему и оценим.
Замечу: я не защищаю идею, что это хорошо. Я просто показываю вам, как до сих пор рассуждают люди, строящие общие механизмы для оценки больших масс других людей.
Кстати, бигтехи не сами это придумали. Формат «дадим абстрактную задачу и посмотрим, как думает» пришёл из McKinsey 1960-х — там давали такие же абстрактные бизнес-кейсы. Google в 2000-х заменил бизнес-кейсы на алгоритмы, но логика интервью поменялась мало, просто задачки сделали «для кодеров». Laszlo Bock, VP People Operations Google, позже признал что brainteasers «не предсказывают вообще ничего о производительности сотрудника» и предложил structured behavioral interviews (книга «Work Rules!», 2015). Но алгоритмические секции никуда не делись — по причинам, которые я описал выше.
И самое страшное — для бигтеха работает
Нормально работает, если ты большой.
Люди, легко рассуждающие о сортировках, префиксах и графах, действительно без проблем разбираются, как перекладывать джейсоны и писать запросы в постгрес. Тратят на это до полугода (приемлемый срок “вкатывания” в бигтехе, у корпорации есть это время), но разбираются.
За последние 3-4 года, кстати, кастомные скиллы тоже начали проверять. Я не везде, но встречаю в больших компаниях секции по «платформе», например, поглубже поговорить про golang и postgresql, или про flutter и особенности кроссплатформенной архитектуры. И это хорошо, это правильно и должно расти. Гораздо разумнее «общий интеллект» мобильного разработчика проверять в разговоре про архитектуру флаттера (там тоже можно задать каверзных вопросов и посмотреть, быстро ли он соображает), а не в абстрактных материях.
Почему бигтехи, несмотря на появление платформенных секций, не убирают «общий кодинг»? Потому что никуда не делось ограничение: в разных частях империи нужны более-менее похожие работники за более-менее одинаковую зарплату. Как сравнить «более-менее похожесть» продуктового разработчика на питоне и системного инженера на голанге? Да никак блин, разве что через прокси типа тестов на общую смекалку. Вот это они и есть.
Никакого другого сакрального смысла в этих интервью нет и давно не было. Ребята, переживающие за то, как этично вести себя на секции с алгоритмами и можно ли иногда подсмотреть — еще раз: единственная задача этой секции — через искусственные задачи проверить общий уровень вашей смекалки. Его надо продемонстрировать, вот и всё. Ваши реальные боевые знания должны проверять на специализированном интервью. Если нанимающий менеджер с вами специализированного интервью позже не проводит — это его проблемы. Вот и всё.
А исключения есть?
Как и во всём, есть. Из… наверное, 40-50 команд, которыми мне в общей сложности довелось поуправлять из разных позиций, у меня было примерно 3-4 команды, делающих реально хардкорные вещи. Например, крутящих венгерский алгоритм, шардированный по гео, под нагрузкой, и обернутый какими-то сложными данными. Или строящих какой-то супер-нагруженный пользовательский экран с хитрой логикой, перемазанной кэшами. А еще сто лет назад я писал руками движок репликации данных в одном большом банке. Вот там реально было нужно. С человеком, входящим в такую команду, я мог долго говорить про оптимизации, алгоритмы, лоу-левел код и прочее.
Но честно — таких вакансий и команд 10%, не больше. Во всех остальных случаях это мало влияет на работу.
Или вот есть компания Databricks, делает платформу для управления большими данными и любит понажимать на алгосы. Там тоже понятно, реально много оптимизаций, всяких индексов, кэшей и прочего, реально нужно.
А в контору на 300 человек меня-то почему так собеседовали?
Я не знаю. Наверное, карго-культ и индейцы, прыгающие вокруг соломенного самолёта. Если в компании не слишком много команд и нанимают человека не «куда-то в огромную компанию (точно узнаешь после секций)», а в конкретную команду — нет ни одной разумной причины, по которой руководителю не стоило бы интервьюировать тебя ровно на те навыки, что нужны в команде. Например, предлагать закодить небольшую задачку, похожую на ту, что лежит в бэклоге. Или обсудить реально существующую сейчас проблему. Если руководитель так не делает — это низкая квалификация и слабое понимание работы компании.
Если кандидат на такую позицию «списал» алгоритм сортировки пузырьком и нанимающий этого не понял — это вина нанимающего, и никого больше. Ты даешь человеку задачу, никак не связанную ни с тем, что он делал до сих пор, ни с тем, что он будет делать у тебя. Вероятно, и сам в материал погружен не до такой степени, чтобы задав серию быстрых вопросов поймать его на буллшите или слишком долгом тупняке. И какой смысл в таком нанимающем менеджере? Вот и я так думаю.
Что с этим делать нанимающим менеджерам
Если ты работаешь не-в-бигтехе и тебе КАЖЕТСЯ, что нанимаете вы как-то не очень хорошо, долго и не всегда лучших людей за свои деньги для целей бизнеса — подумай о задачах, которые нужно решать. Для «общего случая» человек с огромной теоретической базой может и поудобнее, но если тебе нужно конкретно в трех сервисах джейсоны на питоне перекладывать — ты вполне можешь находить людей, умеющих отлично делать эту работу, если пересмотришь требования и решаемые задачи. Не стоит прям до конкретного фреймворка сужать рамку, но «похожий стэк + похожие задачи» — вполне можно и искать, и проверять на интервью.
Если работаешь в бигтехе на сегодня — ничего. Я долгосрочно вижу только один выход:
Чтобы нанимающие смогли давать кандидатам максимально релевантные задачи и оценивать их на свое усмотрение (ну даже не на свое личное, а на усмотрение CTO бизнес-юнита, с которым они это согласуют), корпе понадобится разрешить свободную конкуренцию между юнитами. Если разные «башни» могут строить процессы найма по-разному — уже через год окажется, что одни намного эффективнее других. Случится внутренняя конкуренция, часть людей перетечет, часть бизнес-юнитов, проиграв эту конкуренцию, в итоге закроется или дойдет до состояния близкого к провалу перед тем, как начнет перестраиваться и тоже нанимать максимально релевантных людей на подходящие задачи.
На сегодня ни один известный мне СЕО группы компаний на такое не пойдет. Слишком рискованно, неочевидно, больше ли суммарно денег в компании от этого станет (неэффективные компании, как мы знаем, могут иметь высокую стоимость как актив, если их правильно упаковать). Что ты можешь делать — это находить способы хотя бы вместо части интервью или после них успевать общаться про то, что тебе реально важно, с теми, кто «прошел тест на IQ». Ну или, если у тебя есть знакомый СЕО — поделись с ним этой идеей 🙂
Вместо заключения
Если ищешь работу: ты не избежишь этих секций. Нет никакого «элементарного лайфхака, как сдавать все алгосы». Есть разные пути, более и менее легальные, самый очевидный. из которых -— потратить месяц на подготовку и прорешать сотню тасок. Это неприятно, это скучно, но это работает. Другие пути найдешь сам. Главное помни, в чем смысл этого интервью. А дальше — всегда выбирай руководителей, которые проверят не только алгосы. Это показывает их уровень осознанности.
Если нанимаешь: найди способ проверять то, что реально нужно в твоей команде. Ты, во многих случаях, не можешь избежать стандартных секций, но никто обычно не запрещает тебе «немного» подкрутить задачу, или дополнительно поговорить с кандидатом хотя бы 15 минут. Или, в конце концов, отдельно пообщаться по делу на финальной встрече.
Всем эффективности и не переживайте из-за ерунды, фокусируйтесь на главном!
—
Если понравился материал – отреагируй лайком или комментом. Это даст мне сигнал, что контент менеджеров вроде меня здесь интересен.
Кое-что об адекватном менеджменте и своем опыте я также пишу здесь (только с vpn).
ссылка на оригинал статьи https://habr.com/ru/articles/1055116/