Стажеры

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

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

    В начале сентября было открыто 2 вакансии: стажер-исследователь и стажер-разработчик.



    Кто нам был нужен


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

    Для стажера-разработчика, соответственно, на первом месте были такие навыки, как владение языками программирования (Python и C++), плюсом был опыт в области исследований, анализа данных и трафика.

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

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

    Пример хорошего, годного резюме стажера (с разрешения автора).

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

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

    Всем, кто скажет, что кандидат в ИТ не обязан писать красивое резюме, я могу сказать:

    1. Об опытном разработчике говорят его проекты, у стажера их нет (пока).
    2. Резюме помогает сэкономить время руководителя. Нужно посчитать стоимость часа работы ведущего разработчика, который будет собеседовать всех подряд.
    3. Первоначально я рассылала тестовое задание почти всем, невзирая на степень лаконичности резюме, но откликались именно авторы «красивых».

    Тестовые задания


    Начинающим исследователям предлагался вот такой достаточно простой вопрос:



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

    Тестовое задание
    Ориентировочное время выполнения — 1,5 — 2 часа.
    Вам необходимо создать докер образ для проведения соревнования типа CTF(https://en.wikipedia.org/wiki/Capture_the_flag) на тему IPC в системах UNIX. Образ должен содержать в себе приложение(-я) реализующие следующие задания:

    1) Серверное приложение, слушает UDP порт 7777 и при любом запросе выдает ФЛАГ №1 и текстовую информацию где искать второй флаг (shmkey).

    2) Приложение использует IPC Shared memory и записывает по адресу shmkey ФЛАГ №2 и инструкции по поиску флага №3.

    3) Приложение использует IPC Signals, при поступлении сигнала SIGUSR2 выдает ФЛАГ3.
    Результатом выполнения тестового задания является Docker/docker-compose файл и образ с проброшеным 7777 портом + исходные коды задач.

    Можете использовать любой язык программирования.

    Из 64 стажеров, которым было выслано тестовое задание, выполненное (полностью или частично) прислали 15 человек.

    Знакомимся с кандидатами


    Первое собеседование проводила я, менеджер по персоналу. В мою задачу входило:

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

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

    Далее на собеседование приглашались руководитель отдела и будущий руководитель стажера.
    Небольшая ремарка: почти каждый будущий стажер начинал рассказ о своем в опыта в ИБ с описания попытки подбора пароля от вай-фая соседа при помощи одной из утилит kali linux :)



    Эта картинка никогда не бывает лишней.

    А теперь я хочу предоставить слово старшему разработчику Алексею tugric.

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

    Абстрактно беседа состояла из следующих стадий:

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

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

    3) Каверзные вопросы или попытка оценить глубину реальных знаний и умение решать проблемы. Самая интересная часть) Спрашивал у кандидата об опыте решения сложных, на его взгляд, проблем и как он их решал. Иногда задавал какой-нибудь вопрос, по типу «Вы разрабатываете какой-либо продукт на вашем любимом языке и встречает ошибку Error 342345. Какие ваши дальнейшие действия?» И смотрю как человек рассуждает.

    4) Разбор тестового задания. Задавал следующие вопросы: Какие сложности возникли при выполнении? Что нового узнали? Как вы оцениваете качество своего кода и что могли бы улучшить? и похожие… Иногда просил запустить, скомпилировать, и объяснить некоторые моменты в тестовом задании. Просил сравнить 2 примера ТЗ и описать сильные и слабые стороны каждого.


    Константин руководит направлением исследования компьютерных атак. Он проводил собеседования со стажерами на должность исследователя.

    Константин считает, что:

    Нужна золотая середина между уровнем технических знаний и мотивацией, я бы сказал, что соотношение 60/40 мотивации к техническим знаниям будет идеальным. Мотивация будет отвечать за стремление соискателя развиваться и совершенствоваться в компании, а технические знания определят, какой уровень задач он начнет решать сразу после поступления на работу. Как хороший плюс расцениваю умение решать сложную проблему: сложная задача покажет и сообразительность человека, и ход его мыслей. Конечно, желательно чтобы соискатель рассказывал, как он приходит к своим выводам во время решения тестовых задач, быстрый ответ без объяснений на сложную задачу наводит на мысль что человек ее уже знает.

    Как оценить стажера, у которого почти нет практического опыта? Например, предложить ему решить недавний практический кейс из вашей практики. Узнать, как часто ему приходилось работать в команде. Попросить рассказать самые стрессовые ситуации в учебе/работе и как он подходил к их решению.


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

    Оба они единодушны в таком вопросе: чтобы к 4-му — 5-му курсу найти интересную стажировку в перспективной компании, начинать программировать и пробовать ходить по собеседованиям надо как можно раньше. Вот что говорит Константин:

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

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

    А теперь предоставим слово самим стажерам, Александру и Михаилу mikeademchenko. После 2-х недель работы в компании мы задали им следующие вопросы:

    1. Как готовились к собеседованию?
    2. Страшно было?
    3. Ожидания от работы?
    4. Что повлияло на решение выбрать нашу компанию?
    5. Какой вопрос был самым сложным?
    6. Оправдались ли ожидания?
    7. Какие задачи/работы были интересными.

    Александр:

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

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

    3. Мне кажется, легче особо не выстраивать ожидания, чтобы потом не перенастраиваться на что-то другое. Я только знал, что это должно быть интересно. Ну, надеялся. Таки оказалось.

    4. Тут много факторов. Наверное, кроме субъективного (иногда смотришь на сайты компаний и не хочется туда подавать резюме, глючно и нелогично) самое важное это известность компании. Если ты, условно говоря, знаешь, что круто это Cisco, Microsoft, Group-IB, InfoTeCS, Positive Technologies и Касперский, когда тебя туда зовут, “КОНЕЧНО!” это практически автоматический ответ, рефлекторный. Откуда я их знаю? Я слышу о них, натыкаюсь на информацию о них случайно, вижу их на конференциях, знаю об их программах для студентов, читаю их Хабр и т.д. Ну и очевидное типа наличия интересной вакансии, я вот не люблю какое-то направление, а крутой компании нужно только оно. Ну что поделать, значит, нет. А конкретно ПМ исключительно хорошо подходит под то, что мне очень нравится. Это уже субъективная часть, естественно.

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

    6. Ну… пока не уверен, что уже могу говорить об этом, т.к. присоединился даже не относительно недавно, а ОЧЕНЬ недавно, но пока скорее да. Корректнее будет так – мои страхи НЕ сбылись. Похоже, всего того, чего я боялся, здесь нет. Всё, что могло пойти не так, пошло как надо.

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

    Михаил mikeademchenko:

    1. Повторил материал по темам, указанным в описании вакансии, и по предполагаемым мной направлениям деятельности.
    2. Да немного, если говорить об уровне стресса, то я бы описал его как чуть выше ожидаемого.
    3. Ожидания оправдались в течении первой недели, я занимался тем, чем и рассчитывал заниматься.
    4. Для молодых специалистов в моей области деятельности доступно не много вакансий, так что упускать шанс было не простительно. Также интерес подстегнуло наличие предварительного задания. Оно позволило со всей серьёзностью отнестись к подготовке и сильно увеличило вовлеченность. Задание хорошо отразило характер предстоящей работы, так сказать «триальная» версия будущей деятельности на рабочем месте.
    5. Общий уровень стресса в течении собеседования не позволял оперативно оценить сложность вопроса.
    6. Да, абсолютно.
    7. Интересна вся рабочая деятельность.

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


    Ильинский Игорь Александрович

    Он поставил Юру перед собой, отступил на шаг и спросил страшным голосом: — Водку пьешь? — Нет, — испуганно ответил Юра. — В бога веруешь? — Нет. — Истинно межпланетная душа! — удовлетворенно сказал Жилин. — Когда прибудем на «Тахмасиб», дам тебе поцеловать ключ от стартера.
    Поделиться публикацией
    Комментарии 26
    • +4
      Ответ на картинку для таких, как я (да-да, можно догадаться и всё такое)
      regex101.com/r/3JmERc/1
      • +1


        То есть Александр и Михаил были запасными кандидатами?
        backup

        • 0
          Кандидат на позицию «разработчик» отказался почти сразу. Написал, что он хорошо подумал и совмещать не сможет. Обязательно будем его пинговать при следующих открытых вакансиях, замечательный кандидат. 2-ой отказался в процессе.
        • –1
          А в итоге что было, как выбирали и кого-то выбрали?
          • +3
            Вот целая статья об этом, кого и как выбирали :)
          • +10
            «Вы разрабатываете какой-либо продукт на вашем любимом языке и встречает ошибку Error 342345. Какие ваши дальнейшие действия?»

            Иду в гугл, конечно же)

            • +15

              Парсить HTML регулярками — это отличный план. Часто этим занимаетесь?

            • +5
              У меня вопрос — не слишком ли круто от стажера требовать владение докером? Или это такой фильтр на любознательность?
              • –1
                Требовались поверхностные знания и опыт работы с докером, который при желании можно приобрести за полчаса.
              • +7
                Будущим разработчикам мы отправляли следующее тестовое задание

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

                • 0
                  Исследователю регулярка, разработчику докер.
                  • +3

                    Я имел в виду вот этот опус:


                    Заголовок спойлера

                    Ориентировочное время выполнения — 1,5 — 2 часа.
                    Вам необходимо создать докер образ для проведения соревнования типа CTF(https://en.wikipedia.org/wiki/Capture_the_flag) на тему IPC в системах UNIX. Образ должен содержать в себе приложение(-я) реализующие следующие задания:


                    1) Серверное приложение, слушает UDP порт 7777 и при любом запросе выдает ФЛАГ №1 и текстовую информацию где искать второй флаг (shmkey).


                    2) Приложение использует IPC Shared memory и записывает по адресу shmkey ФЛАГ №2 и инструкции по поиску флага №3.


                    3) Приложение использует IPC Signals, при поступлении сигнала SIGUSR2 выдает ФЛАГ3.
                    Результатом выполнения тестового задания является Docker/docker-compose файл и образ с проброшеным 7777 портом + исходные коды задач.


                    Можете использовать любой язык программирования.


                    Это похоже на техзадание? Спецификацию? Объяснение на пальцах? Нет, это похоже на поток сознания.


                    Серверное приложение, слушает UDP порт 7777 и при любом запросе выдает ФЛАГ №1 и текстовую информацию где искать второй флаг (shmkey).

                    Что значит «приложение выдаёт ФЛАГ №1»? Что за сущность такая, «ФЛАГ №1»? В каком формате приложение выдаёт его клиенту? Как вообще в CTF может быть более одного флага? Что за «текстовая информация, где искать второй флаг»? Каким образом удалённый клиент найдёт «shmkey», если он находится в разделяемой памяти?


                    Я тут посмотрел в википедии — этот порт биндится неким «Unreal Tournament series default server». Соискателю предлагается реализовать серверный протокол UT?


                    Приложение использует IPC Shared memory и записывает по адресу shmkey ФЛАГ №2 и инструкции по поиску флага №3.

                    Речь идёт о сервере, или нужно написать отдельное приложение? Что за безграмотная формулировка «IPC Shared memory»? Что такое «ФЛАГ №2» и чем он отличается от флага №1? Какое отношение ко всему этому имеет клиент, подключившийся по UDP? Какие «инструкции по поиску флага»? Что вообще значит, «найти флаг»?


                    Приложение использует IPC Signals, при поступлении сигнала SIGUSR2 выдает ФЛАГ3.

                    Ещё одна безграмотная формулировка «IPC Signals», написали бы хотя бы «POSIX signals», раз простое слово «сигналы» недостаточно профессионально выглядит. Как именно удалённый клиент должен отправить на сервер SIGUSR2? Куда приложение должно «выдать» флаг 3 — в логи, stdout/stderr, отправить кому-то (кому?) по сети?


                    Что вообще за кафкианский бред?

                    • +2
                      Попутно проверяется реакция претендента на неадекватные ТЗ.
                      • 0
                        Видимо, в первую очередь проверяется то, что кандидат участвовал в CTF и понимает, что такое флаги, кто и кому их выдаёт… Увы, это отсеит часть нормальных кандидатов, которые, вполне возможно, могли быть лучше на данной позиции…
                        • 0
                          Ребята, которые к нам приходят, практически все или участвовали в CTF или читали об этом, в общем что такое флаг, понимают. Еще такой момент — мы проговаривали, что если что-то непонятно, спрашивайте.
                        • 0
                          Типичное задание, которое отбирает «своих», то есть только тех, кто способен понять, о чем тут написано. Оно автоматически отсеет:
                          — всех, кто не работал с докером
                          — всех, кто не знает, что такое CTF
                          — всех, кто знает, но никогда в них не участвовал
                          Другой вопрос, что среди этих «кто не работал… не знает...» могли бы оказаться достойные кандидаты.
                    • 0
                      ну что же. кодим госпада
                      • 0
                        Обратите внимание на тот факт, что налоговая инспекция может признать договор стажировки трудовым договором со всеми вытекающими из этого проблемами. Я с этим сталкивался. :(
                        • 0

                          Не может, а признает: договор стажировка и есть срочный трудовой договор. Какие ещё могут быть варианты-то?

                          • 0
                            еще договор гражданско-правового характера
                            • 0

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

                        • 0
                          Ответ на 5 вопрос у 1 стажера настолько хорош и отражает лично мое состояние, что я его сохранил. Спасибо.
                          • 0
                            Мы заключали ученический договор.

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

                            Самое читаемое