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

Кирилл Розов @kirich1409, известный многим Android-разработчикам, на нашей конференции Mobius выступал с докладом «Как пройти архитектурную секцию собеседования». А заодно на той же конференции ответил Анне Жарковой @anioutka на более общие вопросы о собеседованиях в целом, не обязательно связанные с мобильной разработкой.

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

NDA

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

А вот про описание проекта нужно понимать, что NDA обычно не распространяется на технологический стек. Если вы работали в аутсорс-компании над проектом крупной компании, вам может быть запрещено называть заказчика или раскрывать детали имплементации, но можно рассказать, что вы работали с web-сокетами или делали сложный UI на Jetpack Compose. То есть описать, какого рода вы задачи решали, а не что конкретно делалось в рамках этих задач. 

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

Расслабиться

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

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

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

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

Беспристрастность

Ещё один важный аспект для собеседующих: не собеседуйте людей, которых вы уже знаете. Просто потому что с ними уже складываются какие-то отношения. Хорошие, плохие — не важно. Интервьюеру очень важно быть объективным и не привязываться ни к чему.

Приведу пример стремления к объективности: я стараюсь не отсматривать резюме кандидатов и их результаты на предыдущих этапах. Если кандидаты дошли до меня — значит, они нормальные. Почему так? Потому что увидев в резюме, что человек ранее поработал в Google, Spotify, Lyft или Яндекс, можно начать завышать ожидания от человека или думать «он уже знает, о чем я его спрошу».

Либо, наоборот, может быть ситуация, когда не видишь ничего солидного: «Блин, у него три года опыта — какой он Senior? Как этого сеньора могли на предыдущем этапе оценить? Как он за три года до сеньора дотянулся?».

Интервьюеру очень важно иметь этот скилл — не привязываться к результату и оценивать человека в изоляции за час-два собеседования. Чем меньше факторов на вас влияет, тем более объективным  вы можете быть и дать честную, независимую оценку. 

Грейды

Весёлая эпопея нашей индустрии в том, что уровни вроде «джуниор» или «миддл» очень субъективны и зафиксированы только в рамках одной компании. То, что в одной компании вы считаетесь senior, ещё ничего не значит. Если вы сумеете найти похожую компанию, там тоже будете сеньором, но в других у вас окажется другой уровень. 

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

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

Если мне нужен сеньор, но выбор из «живого мидла» и «ленивого сеньора», я лучше возьму мидла. У него будет высокая мотивация, а сеньор все знает, но ему особо ничего не нужно: «У меня тут пять офферов, че мне ваш этот оффер?» Он не будет ценить возможность. 

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

«Философы»

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

Свой GitHub-аккаунт

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

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

Алгоритмы

Многие ругаются на «в компаниях вроде Google требуют алгоритмы».

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

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

Архитектурная часть собеседования

Идея доклада «Как пройти архитектурную секцию собеседования» возникла так. Я провёл немало собеседований в довольно практико-ориентированном формате, не требуя каких-то сверхъестественных вещей вроде идеального знания алгоритмов, структур данных или какого-то сферического коня в вакууме. И получилось так, что зачастую кандидаты не могут нормально пройти архитектурную секцию.

Не потому, что они ничего не знают. Что-то могут что-то нарисовать и рассказать. Но мы довольно легко можем закодить какой-нибудь Android-фрагмент, взять Compose в качестве UI, ViewModel, сделать слои и все прочее. А вот грамотно и красиво это отобразить не все могут: когда нужно показать не то, что ты умеешь закодить, а то, что ты умеешь отобразить и понимаешь связи. И возник такой крик души: «Всё, мне надоело на это смотреть, пора выйти и рассказать, как надо сделать».

Минутка рекламы напоследок

Если в этом посте вас заинтересовало, как пройти архитектурную секцию собеседования по мобильной разработке — вероятно, вам будет интересна и наша весенняя конференция Mobius, которая пройдёт в мае.

А если мобильная разработка для вас нерелевантна, так что вы дочитали из-за собеседований в целом — посмотрите на весь наш весенний сезон, в него входят и бесплатный онлайн-фестиваль TechTrain, и конференции по Java/JS/C++/тестированию.

Комментарии (13)


  1. valery1707
    00.00.0000 00:00
    +8

    я стараюсь не отсматривать резюме кандидатов и их результаты на предыдущих этапах.

    А потом кандидаты удивляются вопросам так как "я же это уже описал в резюме!".


    1. phillennium Автор
      00.00.0000 00:00

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

      И в описываемом сценарии получается, что на самом деле читают и резюме имеет значение, просто на другом этапе.

      Но да, наверное, есть смысл объяснять это кандидату, чтобы таких вопросов не возникало)


    1. mirwide
      00.00.0000 00:00
      +2

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

      Не читать резюме и требовать что бы кандидат это всё еще раз рассказал, имхо моветон.


    1. FinnParnish
      00.00.0000 00:00

      Боюсь что это немного разные группы людей.


    1. acsent1
      00.00.0000 00:00

      Нет, сначала просят анкету заполнить на 5 листов, а потом все тоже самое только словами рассказать


  1. yakimchuk-ry
    00.00.0000 00:00
    +4

    А вот про описание проекта нужно понимать, что NDA обычно не распространяется на технологический стек. Если вы работали в аутсорс-компании над проектом крупной компании, вам может быть запрещено называть заказчика или раскрывать детали имплементации, но можно рассказать, что вы работали с web-сокетами или делали сложный UI на Jetpack Compose. То есть описать, какого рода вы задачи решали, а не что конкретно делалось в рамках этих задач. 

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

    С чего вдруг? Любая информация может нанести вред работодателю, включая стек, и информация о внутренних продуктах.

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

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

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


    1. KivApple
      00.00.0000 00:00

      Любая информация может нанести вред работодателю, включая стек, и информация о внутренних продуктах.

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


      1. yakimchuk-ry
        00.00.0000 00:00

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

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


  1. zergon321
    00.00.0000 00:00
    +7

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

    Это плохо ещё и тем, что распространение таких задач попросту обесценивает всё это LeetCode-задротство. Я думаю, FAANG перестал давать на собеседованиях задачи про канализационные люки не по той причине, что они ничего не показывают, а из-за того, что уже буквально каждый знал на них ответы. Они разошлись по индустрии и стали притчей во языцех. Ибо карго-культ. Все делают, как Google, не задумываясь, почему Google делает именно так.

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


  1. piton_nsk
    00.00.0000 00:00
    +10

    Если мне нужен сеньор, но выбор из «живого мидла» и «ленивого сеньора», я лучше возьму мидла. У него будет высокая мотивация, а сеньор все знает, но ему особо ничего не нужно: «У меня тут пять офферов, че мне ваш этот оффер?» Он не будет ценить возможность. 

    Работать в нашем банке - большая честь!


  1. waterically
    00.00.0000 00:00
    +1

    самое главное для собеседующего, имхо, это быть из той команды куда ищут кандидата. желательно лид. иногда бывает такое, что на собеседовании очень сильно чувствуется, что человека выдернули с работы, ему этот кандидат вообще не уперся, еще собеседовать его блин, короче человек вообще не заинтересован в этом всем и задает вопросы "на отвали", масштаба "чем отличаются let, const и var" (джаваскрипт)

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


  1. RomanKryvolapov
    00.00.0000 00:00
    +2

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


  1. Leha_B
    00.00.0000 00:00

    Статья называется "Как взломать собеседование". А в итоге говорится о том, как его проводить. Так как его взломать всё-таки?