Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Техническое интервью без балансировки скобок (moscow python conf 2023)

Техническое интервью без балансировки скобок (moscow python conf 2023)

Привет всем! Меня зовут Денис и мой доклад на суперострую тему. Шучу! Я просто хочу поговорить о найме программистов. Эту тему обсуждали уже тысячу раз и, кажется, едва ли тут можно сказать что-то новое. И вот теперь, когда все закрыли страницу, поговорим о важных вещах.

Если ты нанимающий, задавай алгоритмические задачи, и всё будет хорошо. Или нет? Хорошо. Возьмем задачи с литдкода! Тоже плохо? Попробуем заставить программистов писать стандартные сортировки? Это уже не тренд?! Chat gpt считает иначе! Ладно, может быть, будем давать программистам простые задачки, которые любой решит за «пять минут» (наши специальные фирменные пять минут)? Вот это огонь! И добавим ещё system design interview? Прошел — значит сеньор. Просто суперотбор!

А если ты нанимающийся? Да тут тоже нечего думать: всего какая-то 1000 задач на литкоде устроит каждого нанимающего. И на закуску стоит почитать system design primer, как раз на один вечер. Кто из нас не сможет на ходу спроектировать наколеночный аналог twitter! Это же совсем просто, немного round-robin и балансировщиков, cqrs, пару кэшей, немного размышлений на тему CAP, Paxos и RAFT — и мы в дамках!

Крабовые палочки! Узнали? Согласны? Подписыва... Давайте серьезно. Я давно в IT, видел много «поколений» найма, участвовал урывками в собеседованиях, ещё начиная с 2008 года, а сейчас практикую без остановки технические собеседования как минимум последние 4 года, а также подготавливаю технических интервьюеров. И мне, наконец, есть что сказать — я не согласен с текущими практиками отбора. Кроме того, я хочу стать адвокатом тех людей, которые не любят алгоритмические задачи, литкод, вайтбординг, лайвкодинг, переворот деревьев, O(N), домашние задания и, простите меня за это, возможно, даже священный system design interview. Этих людей никто никогда не защищает и консенсус всегда на «другой» стороне. Даже chat gpt — тот ещё любитель алгоритмов, хотя и все его ответы идеально складываются в собес-буллшит-бинго. Будет субъективно, возможно, загорится пару стульев в зале, но я постараюсь представить общий вид текущей ситуации, мои мысли, почему мы к этому пришли, рассказать пару баек из жизни и изложить мое видение и подход.

А ещё я очень постараюсь избегать летучих выражений вроде «наём сломан».

Дополнительные ссылки:
https://xfenix.ru/
https://github.com/xfenix
https://www.youtube.com/watch?v=HLas3IcCTwY (видео этого доклада)

Denis Anikin

May 22, 2023
Tweet

More Decks by Denis Anikin

Other Decks in Programming

Transcript

  1. https://xfenix.ru
    Техническое интервью без
    балансировки скобок
    Денис Аникин

    View full-size slide

  2. Текущая ситуация
    Структура доклада
    1 Критика алгоритмических
    собеседований
    5
    Ретроспектива
    2 Критика system design
    6
    Алгоритмические
    собеседования
    3 Общие проблемы
    7
    System design
    4 Что делать?
    8

    View full-size slide

  3. Денис Аникин
    3
    Что я делаю
    — работаю в Райффайзен банке
    — teamlead в 3 командах
    — community lead в Python Community
    — fullstack: разрабатываю back на python и front на
    typescript, занимаюсь devops
    https://xfenix.ru

    View full-size slide

  4. Отдельно про мой опыт интервью
    4
    Мой опыт не ограничен техническими интервью, но здесь только про них
    — Первый раз участвовал в интервью в 2008 году
    — Интервьюировал php-, frontend-, python-разработчиков, devops-инженеров
    — Сейчас лидирую группу интервьюеров в банке (6 человек)
    — Провел около 150 технических собеседований за последние несколько лет
    — Подготавливаю интервьюеров, занимаюсь онбордингом и farewell-активностями
    — Как разработчик был на сотнях интервью и многие успешно провалил 😏 😏 😏

    View full-size slide

  5. В общем, как с сырниками не должно быть
    5
    Или как с помидорами

    View full-size slide

  6. Одна из моих целей —
    показать многочисленные
    противоречия в текущей
    практике
    6

    View full-size slide

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

    View full-size slide

  8. Опишу текущую ситуацию
    так, как вижу её я

    View full-size slide

  9. Я решил 1000 задач за 3
    года, потратил 7 лет на
    собесы и наконец попал в
    «рожки и копытца» и
    пишу на джанге ручки уже
    10 год
    У мбня цыкл не рамботает,
    мбне нубжен ретрит на 3
    недели, а потом саббатикал

    View full-size slide

  10. И где тут проблема?
    10
    Не умеешь, так научись! У нас тут серьезный бизнес (тм)

    View full-size slide

  11. И где тут проблема?
    11
    Не умеешь, так научись! У нас тут серьезный бизнес (тм)
    — Никакой прозрачности процесса ❌

    View full-size slide

  12. И где тут проблема?
    12
    Не умеешь, так научись! У нас тут серьезный бизнес (тм)
    — Никакой прозрачности процесса ❌ — Разве я многого прошу?

    View full-size slide

  13. И где тут проблема?
    14
    Не умеешь, так научись! У нас тут серьезный бизнес (тм)
    — Никакой прозрачности процесса ❌
    — Похоже на олимпиаду ❌
    — Разве я многого прошу?

    View full-size slide

  14. И где тут проблема?
    15
    Не умеешь, так научись! У нас тут серьезный бизнес (тм)
    — Никакой прозрачности процесса ❌
    — Похоже на олимпиаду ❌
    — Разве я многого прошу?
    — Я не олимпиец, я
    пришел делать работу
    (хаха, класть json’ы)

    View full-size slide

  15. И где тут проблема?
    16
    Не умеешь, так научись! У нас тут серьезный бизнес (тм)
    — Никакой прозрачности процесса ❌
    — Похоже на олимпиаду ❌
    — Низкая культура взаимодействия ❌
    — Разве я многого прошу?
    — Я не олимпиец, я
    пришел делать работу
    (хаха, класть json’ы)

    View full-size slide

  16. И где тут проблема?
    17
    Не умеешь, так научись! У нас тут серьезный бизнес (тм)
    — Никакой прозрачности процесса ❌
    — Похоже на олимпиаду ❌
    — Низкая культура взаимодействия ❌
    — Разве я многого прошу?
    — Я не олимпиец, я
    пришел делать работу
    (хаха, класть json’ы)
    — Хотелось бы приходить
    не очереднярой, а кем-то,
    в ком видят человека

    View full-size slide

  17. И где тут проблема?
    18
    Не умеешь, так научись! У нас тут серьезный бизнес (тм)
    — Никакой прозрачности процесса ❌
    — Похоже на олимпиаду ❌
    — Низкая культура взаимодействия ❌
    — Субъективно ❌
    — Разве я многого прошу?
    — Я не олимпиец, я
    пришел делать работу
    (хаха, класть json’ы)
    — Хотелось бы приходить
    не очереднярой, а кем-то,
    в ком видят человека

    View full-size slide

  18. И где тут проблема?
    19
    Не умеешь, так научись! У нас тут серьезный бизнес (тм)
    — Никакой прозрачности процесса ❌
    — Похоже на олимпиаду ❌
    — Низкая культура взаимодействия ❌
    — Субъективно ❌
    — Разве я многого прошу?
    — Я не олимпиец, я
    пришел делать работу
    (хаха, класть json’ы)
    — Хотелось бы приходить
    не очереднярой, а кем-то,
    в ком видят человека
    — Про субъективность мы
    еще поговорим!

    View full-size slide

  19. Как развивалась культура
    технических интервью

    View full-size slide

  20. До 1998 года
    22
    Записи почти утеряны, но…
    — Просили кодить много сотен строчек кода
    — Давали кошмарные тестовые (на недели)
    — Вопросы из серии «если вы упали в блендер», «три лампочки, один заход»,
    «почему люки круглые», «утки в пруду»
    — А иногда просто общались

    View full-size slide

  21. После 1998 года
    23

    View full-size slide

  22. В дверь заходит FAANG*-стиль
    24
    — Алгоритмические задачи! Наши любимые! От easy- до hard-уровня 🫠
    — От 1 до 5-6 и более секций
    — Божественный system design
    — Culture fit, behavioral interview. Если не повезет, то и leadership principles,
    STAR-методология и т.д.
    — Особый свод правил поведения и особенный язык (арго)
    * вообще, уже MAANG или ещё что-то там, кому какое дело, это читать вообще никто не будет

    View full-size slide

  23. Крупная
    социальная сеть

    View full-size slide

  24. Как так вышло?
    26
    — Культура закрытого клуба: соревнование за место среди «лучших»
    Это мои рассуждения

    View full-size slide

  25. Как так вышло?
    28
    — Культура закрытого клуба: соревнование за место среди «лучших»
    — Большой успех важной компании
    Это мои рассуждения

    View full-size slide

  26. Как так вышло?
    29
    — Культура закрытого клуба: соревнование за место среди «лучших»
    — Большой успех важной компании
    — Все стали копировать: мы тоже хотим такого успеха!
    Это мои рассуждения

    View full-size slide

  27. Как так вышло?
    30
    — Культура закрытого клуба: соревнование за место среди «лучших»
    — Большой успех важной компании
    — Все стали копировать: мы тоже хотим такого успеха!
    — Дошло до абсурда: маленькие компании и компании среднего размера стали строить
    интервью по таким же принципам
    Это мои рассуждения

    View full-size slide

  28. >>> some_fancy_array = [1, 1, 2, 2, 3, 3, 4, 5, 5]
    >>> future_result = 0
    >>> for one_element in some_fancy_array:
    ... future_result ^= one_element
    >>> print(future_result)
    4

    View full-size slide

  29. Обсудим
    алгоритмические
    собеседования

    View full-size slide

  30. Ты выглядишь как соискатель

    View full-size slide

  31. Из чего состоит алгоритмический блок?
    34
    — От одной до бесконечности секций
    — Задачи «сделай за O(N)», которым часто требуется оригинальный способ решения
    — Или задачи ближе к бытовому уровню, если повезет (скорее нет, ведь «бытовой уровень»
    может сильно варьироваться)
    — Группы алгоритмов: рекурсивные, разделяй и властвуй, динамическое программирование,
    жадные алгоритмы, прямой перебор (его не любят как раз, он ведет к N^2 и далее), поиск с
    возвратом, вероятностные алгоритмы
    Он же лайвкодинг или вайтбординг

    View full-size slide

  32. Что думают
    интервьюеры об алгоритмах?
    36
    Отличный объективный способ, чтобы
    проверить, как человек:
    — Решает задачи
    — Задает вопросы
    — Разбирается в проблемах
    Кроме того:
    — Можно посмотреть, как человек себя ведет
    в стрессовой ситуации
    — А ещё, разработчики в основном одобряют
    эту практику

    View full-size slide

  33. Обсудим
    system design
    собеседования

    View full-size slide

  34. Из чего состоит system design?
    40
    — Нужно спроектировать (устно/а может и нет) распределенную систему
    — Типовые задачи: twitter, youtube, shortener, chatting service, e-commerce, web crawler, etc.
    — Разработчикам эти интервью нравятся

    View full-size slide

  35. Что думают нейросети?
    41
    🪄
    — Можно оценить скилы проектирования архитектуры
    — Показывает, как человек решает сложные проблемы
    — Отражает реальные задачи
    — Позволяет сравнивать кандидатов
    — Проверяет ваше умение взаимодействовать

    View full-size slide

  36. Алгоритмические
    собеседования — не очень
    хороший критерий отбора

    View full-size slide

  37. Сейчас я постараюсь
    показать много
    абсурдных вещей
    45

    View full-size slide

  38. Сначала вспомним про O(n)
    46
    Этот способ очень плох, если мы говорим об алгоритмическом
    интервью, ведь там мы имеем небольшие наборы данных. В реальном
    времени квадратичный алгоритм может быть лучше линейного

    View full-size slide

  39. Что такое алгоритмические задачи?
    48
    Бесконечный холивар
    — Несколько сотен стандартных?

    View full-size slide

  40. Список алгоритмов
    49
    Один из вариантов
    Arrays: Kadane's Algorithm, Floyd's Cycle Detection Algorithm, Knuth-Morris-Pratt Algorithm (KMP),
    Quick Select Algorithm, Boyer - More Majority Vote Algorithm
    Tree: AA Tree, Binary Indexed Tree or Fenwick Tree, Quadtree, Cartesian Tree, Fibonacci heap, Interval
    Tree, Finger Tree, Crit-bit Trees, Scapegoat Tree, Splay Tree, Suffix Tree, Counted B-Trees, Binary
    Space Partitioning, Van Emde Boas Tree
    Others: Huffman Coding Compression Algorithm, Euclid's Algorithm, Union Find Algorithm, Manacher's
    Algorithm, Eukerian Path (Hierholzer's Algorithm), Convex Hull | Set 1 (Jarvis’s Algorithm or Wrapping),
    Convex Hull | Set 2 (Graham Scan), Convex Hull using Divide and Conquer Algorithm, Quickhull
    Algorithm for Convex Hull, Distinct elements in subarray using Mo’s Algorithm, Line Sweep Algorithm,
    MO’s Algorithm (Query square root decomposition), Disjoint-set Data Structure, Ackermann Function,
    Zobrist Hashing, FM-index, Circular buffer, Hungarian Algorithm / Kuhn–Munkres Algorithm / Munkres
    Assignment Algorithm, Dekker's Algorithm, Winged Edge, Burrows–Wheeler Transform, Zipper, Five
    Balltree Construction Algorithms, Cuckoo Hashing, Rope (Data Structure), Binary Decision Diagram,
    Disjoint-set Data Structure, Bloom Filter

    View full-size slide

  41. Что такое алгоритмические задачи?
    50
    Бесконечный холивар
    — Несколько сотен стандартных?
    — Несколько из каждой группы?

    View full-size slide

  42. Что такое алгоритмические задачи?
    51
    Бесконечный холивар
    — Несколько сотен стандартных?
    — Несколько из каждой группы?
    — Какие задачи хорошие? Балансировка скобок? BFS по островам? Строковый
    калькулятор? Поиск уникального в массиве дублей?

    View full-size slide

  43. Что такое алгоритмы?
    52
    Алгоритм — последовательность шагов
    — Алгоритмы и структуры данных —
    настолько устоявшаяся фраза, что в
    общественном сознании эти вещи
    начинают путаться
    — Давайте поищем в интернете и
    спросим chatgpt, какие алгоритмы
    правильные

    View full-size slide

  44. Почему мы решили,
    что алгоритмы на
    собеседованиях —
    это правильно?
    56

    View full-size slide

  45. Я пытался найти
    первоисточник
    57

    View full-size slide

  46. Не смог! Это просто
    мнение, с которым
    почему-то все
    согласны
    58

    View full-size slide

  47. Но ведь…
    59
    — А где же обоснование, данные, доказательства?
    — Каждый год пишется несколько статей на тему «как же хороши мои
    алгоритмы» и каждый раз всё больше голосов, которые с этим не
    согласны

    View full-size slide

  48. Мое мнение
    60
    — Это эмпатия
    — Апелляция к авторитету: «там умные ребята, лучше знают»/«руководители
    сказали»/«мой тимлид лучше знает»
    — Рационализация: «меня ведь не просто так истязали!»
    — Стокгольмский синдром?

    View full-size slide

  49. А как часто вы пишете
    «алгоритмы»
    на работе?
    61

    View full-size slide

  50. Несколько реальных историй
    63
    А сколько задач — достаточно, чтобы понять, что «ну норм, берем»
    — Коллега написал 3 из 4 решений. Ему отказали

    View full-size slide

  51. Несколько реальных историй
    64
    А сколько задач — достаточно, чтобы понять, что «ну норм, берем»
    — Коллега написал 3 из 4 решений. Ему отказали
    — Завалил задачу, написал другую, взяли из-за неё

    View full-size slide

  52. Несколько реальных историй
    65
    А сколько задач — достаточно, чтобы понять, что «ну норм, берем»
    — Коллега написал 3 из 4 решений. Ему отказали
    — Завалил задачу, написал другую, взяли из-за неё
    — Снизили баллы и не взяли, т.к. очень сеньорный человек не
    вспомнил кусочек стандартной библиотеки из itertools. В фидбэке
    сказали: «не знаешь itertools»

    View full-size slide

  53. Нейросеть считает, что решение
    задач на скорость — это
    дискредитация алгоритмического
    подхода к интервью
    67

    View full-size slide

  54. Абсурдные цифры из реальности
    69
    — Люди выяснили, что вероятность быть нанятым на 5 собеседовании в
    FAANG увеличивается до 60-80 процентов

    View full-size slide

  55. https://habr.com/ru/companies/getmatch/articles/538114/

    View full-size slide

  56. Абсурдные цифры из реальности
    71
    — Люди выяснили, что вероятность быть нанятым на 5 собеседовании в
    FAANG увеличивается до 60-80 процентов
    — Между собеседованиями «кулдаун» в 6 месяцев (где-то 12)

    View full-size slide

  57. Абсурдные цифры из реальности
    72
    — Люди выяснили, что вероятность быть нанятым на 5 собеседовании в
    FAANG увеличивается до 60-80 процентов
    — Между собеседованиями «кулдаун» в 6 месяцев (где-то 12)
    — Я регулярно в LI читаю посты «наконец решил 1000 задач на литкоде,
    всего 3 года потратил
    😅
    » 😳 😳 😳

    View full-size slide

  58. Абсурдные цифры из реальности
    73
    — Люди выяснили, что вероятность быть нанятым на 5 собеседовании в
    FAANG увеличивается до 60-80 процентов
    — Между собеседованиями «кулдаун» в 6 месяцев (где-то 12)
    — Я регулярно в LI читаю посты «наконец решил 1000 задач на литкоде,
    всего 3 года потратил
    😅
    » 😳 😳 😳
    — Существует несколько известных мне компаний по подготовке к FAANG-
    style-интервью и множество отдельных менторов, а также много чатов на
    тысячи людей

    View full-size slide

  59. Наш таймлайн
    проклят!1!11111
    74

    View full-size slide

  60. Есть несколько случаев, когда
    люди проваливали алгортмические
    задачи и были наняты
    И по сей день приносят уйму
    пользы
    76

    View full-size slide

  61. Как обычно говорят про
    собеседования в faang-стиле:
    «нам надо сужать поток, слишком
    много желающих»
    78

    View full-size slide

  62. Наша задача — не
    «резать» поток, а с
    минимальными
    затратами найти коллегу
    79

    View full-size slide

  63. «Мы не пустим плохих
    программистов ценой
    отказа нескольким
    хорошим»
    81

    View full-size slide

  64. Как вы поняли, что
    отказали плохим, а
    пустили хороших?
    82

    View full-size slide

  65. Это бесчеловечное
    суждение о будущих
    коллегах!
    84

    View full-size slide

  66. Какие проблемы с самим подходом?
    85
    — Мы не программируем на виду у незнакомых людей

    View full-size slide

  67. Какие проблемы с самим подходом?
    86
    — Мы не программируем на виду у незнакомых людей
    — Это тренируемый навык, для которого существует целая индустрия и
    масса книг по подготовке. Он показывает только то, что вы долго
    тренировались проходить эти интервью

    View full-size slide

  68. Какие проблемы с самим подходом?
    87
    — Мы не программируем на виду у незнакомых людей
    — Это тренируемый навык, для которого существует целая индустрия и
    масса книг по подготовке. Он показывает только то, что вы долго
    тренировались проходить эти интервью
    — Наша задача — проверять уже существующие навыки у людей, а не
    заставлять их приобретать новые (к тому же те, которые не влияют
    напрямую на работу)

    View full-size slide

  69. Какие проблемы с самим подходом?
    88
    — Мы не программируем на виду у незнакомых людей
    — Это тренируемый навык, для которого существует целая индустрия и
    масса книг по подготовке. Он показывает только то, что вы долго
    тренировались проходить эти интервью
    — Наша задача — проверять уже существующие навыки у людей, а не
    заставлять их приобретать новые (к тому же те, которые не влияют
    напрямую на работу)
    — Бонус: иногда в качестве задач на 20 минут дают такие сложные
    проблемы, о которых не так давно ещё писали целые дисертации

    View full-size slide

  70. Какие проблемы с самим подходом?
    89
    — Мы не программируем на виду у незнакомых людей
    — Это тренируемый навык, для которого существует целая индустрия и
    масса книг по подготовке. Он показывает только то, что вы долго
    тренировались проходить эти интервью
    — Наша задача — проверять уже существующие навыки у людей, а не
    заставлять их приобретать новые (к тому же те, которые не влияют
    напрямую на работу)
    — Бонус: иногда в качестве задач на 20 минут дают такие сложные
    проблемы, о которых не так давно ещё писали целые дисертации
    — Бонус 2: если к вашему интервью надо готовиться, то это не очень
    хороший сигнал

    View full-size slide

  71. А может ли chatgpt покритиковать
    алгоритмы?
    Да! Некоторые аргументы у нас схожи
    91

    View full-size slide

  72. System design — неидеален?

    View full-size slide

  73. Здесь много схожего с алгоритмами
    93
    — Нет правильного ответа. Интерпретация зависит от настроения и взгляда
    интервьюера полностью. А «продают» нам это как объективную оценку

    View full-size slide

  74. Здесь много схожего с алгоритмами
    95
    — Нет правильного ответа. Интерпретация зависит от настроения и взгляда
    интервьюера полностью. А «продают» нам это как объективную оценку
    — Та же нетипичная ситуация. Единицы проектируют архитектуру с
    незнакомыми и, возможно, недружелюбными людьми

    View full-size slide

  75. Здесь много схожего с алгоритмами
    96
    — Нет правильного ответа. Интерпретация зависит от настроения и взгляда
    интервьюера полностью. А «продают» нам это как объективную оценку
    — Та же нетипичная ситуация. Единицы проектируют архитектуру с
    незнакомыми и, возможно, недружелюбными людьми
    — Стандартный набор, который формулируется в system design primer и
    cracking system design interview

    View full-size slide

  76. Здесь много схожего с алгоритмами
    97
    — Нет правильного ответа. Интерпретация зависит от настроения и взгляда
    интервьюера полностью. А «продают» нам это как объективную оценку
    — Та же нетипичная ситуация. Единицы проектируют архитектуру с
    незнакомыми и, возможно, недружелюбными людьми
    — Стандартный набор, который формулируется в system design primer и
    cracking system design interview
    — Компании уже поняли, что все расписано в деталях и усложняют этот
    процесс. А где же действие «остановиться и подумать»?

    View full-size slide

  77. Здесь много схожего с алгоритмами
    98
    — Нет правильного ответа. Интерпретация зависит от настроения и взгляда
    интервьюера полностью. А «продают» нам это как объективную оценку
    — Та же нетипичная ситуация. Единицы проектируют архитектуру с
    незнакомыми и, возможно, недружелюбными людьми
    — Стандартный набор, который формулируется в system design primer и
    cracking system design interview
    — Компании уже поняли, что все расписано в деталях и усложняют этот
    процесс. А где же действие «остановиться и подумать»?
    — Вы правда верите в масштабируемый твиттер за полчаса на коленке?

    View full-size slide

  78. Общие проблемы

    View full-size slide

  79. Почему подходы дают искажённую картину
    100
    — Умение проходить system design и алгоритмические секции — это очень специальный,
    вырабатываемый навык, наличие которого говорит только о вашем умении проходить system
    design и алгоритмические секции, а не о том как вы программируете в обычной ситуации
    — Обычные навыки программиста: усидчивость, упорство, умение работать в команде
    — Не вдаваясь в левую повестку, мы сужаем разнообразие, замыкаемся в своем
    «правильном» (тм) мнении
    — Посмотрите на тех, кто проходил такие интервью: они всегда за них или как минимум не
    против

    View full-size slide

  80. Ещё больше проблем

    View full-size slide

  81. Коротко
    103
    — Годы опыта

    View full-size slide

  82. Коротко
    105
    — Годы опыта
    — Тестовые задания

    View full-size slide

  83. Коротко
    107
    — Годы опыта
    — Тестовые задания
    — Низкая эффективность огромных конвейеров отбора

    View full-size slide

  84. Коротко
    108
    — Годы опыта
    — Тестовые задания
    — Низкая эффективность огромных конвейеров отбора
    — Цена ошибки найма не так велика, как это показывают

    View full-size slide

  85. Коротко
    109
    — Годы опыта
    — Тестовые задания
    — Низкая эффективность огромных конвейеров отбора
    — Цена ошибки найма не так велика как это показывают
    — Многие люди получают психологический урон

    View full-size slide

  86. Что делать?

    View full-size slide

  87. Все мои рецепты будут
    очень банальными и
    очень субъективными
    112

    View full-size slide

  88. Просто поговорить с
    кандидатами
    114

    View full-size slide

  89. Субъективность — страшно?
    115
    Я так не думаю
    — Мы люди, мы всегда субъективны
    — Если мы боимся субъективности, стараемся сделать процесс
    «бесчеловечным» и от этого он делает людям больно, и субъективность
    только увеличивается

    View full-size slide

  90. Как исправить?
    116
    Принять субъективность и извлечь пользу
    — Принять свою субъективность. В бонус можно извлекать пользу индивидуальным
    подходом, харизмой нанимающих
    — Создать общий скелет интервью
    — Делать артефакты
    — Искать совместимых с нами людей. Если мы совместимы с организацией, то
    совместимые с нами люди совместимы с организацией тоже

    View full-size slide

  91. Чем заменить
    алгоритмы?
    117

    View full-size slide

  92. Чем заменить алгоритмы?
    118
    — Одним вдумчивым интервью
    Я вижу это так, но вам я бы предложил подумать что бы хотели спрашивать людей именно вы

    View full-size slide

  93. Чем заменить алгоритмы?
    119
    — Одним вдумчивым интервью
    — Спрашивать не quiz-вопросы и не стандартные вопросы из «100 лучших
    вопросов по python», а действительно просить людей думать
    Я вижу это так, но вам я бы предложил подумать что бы хотели спрашивать людей именно вы

    View full-size slide

  94. Чем заменить алгоритмы?
    120
    — Одним вдумчивым интервью
    — Спрашивать не quiz-вопросы и не стандартные вопросы из «100 лучших
    вопросов по python», а действительно просить людей думать
    — Например: вместо mutable vs. immutable можно поговорить о типизации
    Я вижу это так, но вам я бы предложил подумать что бы хотели спрашивать людей именно вы

    View full-size slide

  95. Чем заменить алгоритмы?
    121
    — Одним вдумчивым интервью
    — Спрашивать не quiz-вопросы и не стандартные вопросы из «100 лучших
    вопросов по python», а действительно просить людей думать
    — Например: вместо mutable vs. immutable можно поговорить о типизации
    — Например: вместо «что такое итератор?» спросить iterable vs iterator и
    покопаться в протоколе
    Я вижу это так, но вам я бы предложил подумать что бы хотели спрашивать людей именно вы

    View full-size slide

  96. Чем заменить алгоритмы?
    122
    — Одним вдумчивым интервью
    — Спрашивать не quiz-вопросы и не стандартные вопросы из «100 лучших
    вопросов по python», а действительно просить людей думать
    — Например: вместо mutable vs. immutable можно поговорить о типизации
    — Например: вместо «что такое итератор?» спросить iterable vs iterator и
    покопаться в протоколе
    — Важная мысль: иметь свое уникальное интервью, с важными именно для
    вас и вашей компании вопросами
    Я вижу это так, но вам я бы предложил подумать что бы хотели спрашивать людей именно вы

    View full-size slide

  97. Чем заменить алгоритмы?
    123
    — Одним вдумчивым интервью
    — Спрашивать не quiz-вопросы и не стандартные вопросы из «100 лучших
    вопросов по python», а действительно просить людей думать
    — Например: вместо mutable vs. immutable можно поговорить о типизации
    — Например: вместо «что такое итератор?» спросить iterable vs iterator и
    покопаться в протоколе
    — Важная мысль: иметь свое уникальное интервью, с важными именно для
    вас и вашей компании вопросами
    — А ещё можно попросить поревьюить PR и послушать аргументы. Эта
    практика может быть полезна и для понимания архитектурного бэкграунда
    Я вижу это так, но вам я бы предложил подумать что бы хотели спрашивать людей именно вы

    View full-size slide

  98. Чем заменить
    system design?
    124

    View full-size slide

  99. Чем заменить system design?
    125
    — Поговорить о проблемах распределенных систем: CAP, консенсус, split brain, транзакции,
    гонки, локи, дедлоки
    — Поговорить о типовых паттернах распределенных систем: db per service, event driven,
    saga, cqrs и т.п.
    — Обсудить архитектурные проблемы, возникающие в процессе долгой жизни вашей
    системы. Например, как поддерживать и развивать целостную архитектуру?
    — Поговорить о типовых проблемах messaging driven, event driven систем, послушать
    кандидата, как он решает такие проблемы
    — Обсудить reactive manifest
    — Обсудить масштабирование
    Например:

    View full-size slide

  100. Чем заменить
    тестовые? 🤷
    126

    View full-size slide

  101. Ничем!
    128

    View full-size slide

  102. Как сравнивать
    кандидатов?
    129

    View full-size slide

  103. А это точно помогает вам и бизнесу?
    130
    — Сравнение кандидатов действительно цель?
    — У вас есть хороший кандидат, который вам подходит, что вам ещё нужно?
    — Описанные способы все субъективны или суперсубъективны. Значит, ни о каком
    объективном сравнении мы не можем говорить изначально!
    — Вы нанимаете первого кандитата, который вас устраивает и всё

    View full-size slide

  104. А это точно помогает вам и бизнесу?
    131
    — Сравнение кандидатов действительно цель?
    — У вас есть хороший кандидат, который вам подходит, что вам ещё нужно?
    — Описанные способы все субъективны или суперсубъективны. Значит, ни о каком
    объективном сравнении мы не можем говорить изначально!
    — Вы нанимаете первого кандитата, который вас устраивает и всё
    Или
    — Вспоминаете задачу о разборчивой невесте

    View full-size slide

  105. Неплохая практика для
    выравнивания —
    записывать ваши
    впечатления
    132

    View full-size slide

  106. Исходник «интервьюилки»
    134
    https://github.com/xfenix/interview-engine

    View full-size slide

  107. Что, если я найму
    «плохого» кандидата?
    135

    View full-size slide

  108. Ничего страшного
    Ответ на почти все вопросы
    даёт ТК:
    испытательный срок!
    137

    View full-size slide

  109. Что если наняли
    мидла, а он
    притворяющийся
    джуниор?
    138

    View full-size slide

  110. Если он делает задачи мидла —
    он мидл.
    Если не делает, есть
    испытательный срок
    Все так же, как и со всеми
    сотрудниками
    139

    View full-size slide

  111. «Наняли тяп-ляпателя на
    фреймворках, джанго-программиста,
    теперь алгоритмам не научить»
    А вот наняли бы алго-ниндзя, он бы
    любую технологию осилил!
    141

    View full-size slide

  112. Так ли это на самом деле?
    Где доказательства?
    142

    View full-size slide

  113. Как нам понять, что
    _candidate_name
    качественно и быстро
    программирует?
    143

    View full-size slide

  114. Внимательно изучите
    резюме, посмотрите гитхаб
    (при наличии), поговорите с
    человеком
    145

    View full-size slide

  115. Скоринг, баллы, веса —
    вот ответ!
    146

    View full-size slide

  116. Точно так же субъективно:
    сколько баллов стоит
    хороший сеньор, а сколько
    плохой мидл?
    147

    View full-size slide

  117. Что ещё хочется отметить важного
    148
    — Перед нами опытный специалист, и мы с ним равны

    View full-size slide

  118. Что ещё хочется отметить важного
    149
    — Перед нами опытный специалист, и мы с ним равны
    — Наше интервью — диалог, а не допрос

    View full-size slide

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

    View full-size slide

  120. Что ещё хочется отметить важного
    151
    — Перед нами опытный специалист, и мы с ним равны
    — Наше интервью — диалог, а не допрос
    — В идеале, если человек уходит от нас с восклицанием «спасибо,
    это было полезно/интересно», а не с психологической травмой
    — Не стоит стесняться принимать обратную связь от кандидатов и
    менять что-то, исходя из неё

    View full-size slide

  121. Что ещё хочется отметить важного
    152
    — Перед нами опытный специалист, и мы с ним равны
    — Наше интервью — диалог, а не допрос
    — В идеале, если человек уходит от нас с восклицанием «спасибо,
    это было полезно/интересно», а не с психологической травмой
    — Не стоит стесняться принимать обратную связь от кандидатов и
    менять что-то, исходя из неё
    — Лучше всего не пытаться оценить человека, а ответить на вопрос:
    сможем ли мы работать с этим человеком?

    View full-size slide

  122. Полезные ссылки
    • https://www.techinterviewhandbook.org/ выдающийся материал для подготовки
    • https://github.com/donnemartin/system-design-primer
    • https://github.com/poteto/hiring-without-whiteboards

    View full-size slide

  123. Спасибо
    https://xfenix.ru
    https://github.com/xfenix
    https://www.linkedin.com/in/xfenix/

    View full-size slide