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

Типичное собеседование в отдел бэкенд-разработки ЮMoney выглядит так:

  • 5-10 минут мы общаемся с кандидатом на отвлечённые темы, обсуждаем опыт соискателя, разогреваем его.

  • 25 минут длится практическая секция I — кандидат шарит свой экран и пишет код в редакторе в режиме реального времени.

  • 35 минут занимает практическая секция II — даём кандидату задание посложнее.

  • 15 минут обсуждаем практическую секцию.

  • 30 минут длится теоретическая секция.

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

Во время собеседования мы оцениваем:

  • То, как кандидат работает с требованиями.

  • Как он формулирует алгоритм решения задачи.

  • Способен ли он реализовать алгоритм за то время, которое мы на это отвели.

Какой кандидат может пройти собеседование в ЮMoney

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

  • Тот, кто уложился в тайминг.

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

А теперь десерт: рассказываем, как справился с тестовым ChatGPT-4

Тестовых задания было три. В первом мы попросили ChatGPT рассчитать величину кэшбэка — фиксированный процент от суммы всей покупки. 

Пример: 

  • Общая сумма заказа — 100 рублей.

  • Процент кэшбэка — 2%.

  • Сумма кэшбэка составит 2 рубля (100*0,02).

Это было суперпростое задание, не боевое. Обычно мы не даём подобные тестовые реальным кандидатам.

Итог первого тестового: СhatGPT-4 справился хорошо

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

  • Нейросеть выполнила тестовое корректно.

  • Использовала актуальные вызовы функций.

  • В целом результат работы нам понравился.

Второе задание для ChatGPT было посложнее

Нужно было написать юнит-тест: это программа, которая проверяет, насколько корректен готовый код. Мы попросили искусственный интеллект проверить его собственный код.

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

Зафиналить решили настоящим боевым заданием для кандидатов

Мы попросили ChatGPT рассчитать «прогрессивный» кэшбэк, который зависит от общей суммы заказа. 

Хотелось бы отметить, что это же задание мы давали реальному кандидату — Java-программисту (назовём его Юрий). По словам Юрия, у него было три года опыта работы, два из которых он факультативно увлекался разработкой на Java. Так вот, нейросеть справилась с заданием лучше, чем Юрий, и быстрее на 25 минут. ChatGPT-4 выполнил задание на уровне мидла, а Юрий с  трёхлетним опытом — на уровне стажёра.

Но и это ещё не всё: мы скормили ChatGPT задачу по цензурированию кода

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

Но на этом ChatGPT сдулся — ошибся с указанием API. Для хранения сумм использовался объектный класс, с которым нейросеть производила действия, как будто бы это примитивный тип. Естественно, код из-за этого не компилировался.

Вывод

  • ChatGPT-4 прошёл собеседование как минимум на джуна

  • Иногда нейросеть ошибается, но в целом может быть неплохим помощником

  • Мы не приняли ChatGPT-4 на работу, потому что не можем делиться с ним кусками боевого кода. ;)

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

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


Поделитесь, если тоже собеседовали ChatGPT — какие результаты получили? Взяли бы на работу такого сотрудника?

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


  1. s207883
    09.08.2023 10:29
    +1

    Мы не приняли ChatGPT-4 на работу, потому что не можем делиться с ним кусками боевого кода. ;)

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


    1. f0y
      09.08.2023 10:29
      -3

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

      Лучше не принимать на себя излишние риски без явной на то причины.


      1. amazingname
        09.08.2023 10:29

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

        И того, вы вообще о чем?


        1. f0y
          09.08.2023 10:29
          +1

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


  1. onets
    09.08.2023 10:29
    +1

    А как звучит реальное задание и почему 90% не могут его выполнить?


    1. funselivan
      09.08.2023 10:29
      -5

      Приходите на интервью, покажем)


    1. f0y
      09.08.2023 10:29
      +1

      Реальное задание не могу показать, но в нём есть класс, парочка методов без реализации и javadoc c описанием что эти методы должны делать.

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


      1. ruomserg
        09.08.2023 10:29

        Вы больные? С какого момента скорость (скорость, карл!) написания кода стала отличать хорошего программиста от плохого? Вы же не филиал олимпиады по программированию, е-мое… За 20 лет в отрасли мои личные наблюдения (втч за собой же) показывают что с опытом скорость написания кода падает. Но что еще важнее — падает TCO этого кода. Потому что код — это не asset, а liability. Соответственно, устраивая соревнование "кто быстрее пишет код" — вы играете в игру "кто быстрее тратит деньги компании". Перейдете на следующий уровень организационной зрелости — поймете...


        1. f0y
          09.08.2023 10:29

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

          P.S. Оскорблять было не обязательно.


          1. ruomserg
            09.08.2023 10:29

            Но вы же не просто делаете противоестественную чушь — вы это выставляете напоказ на техническом ресурсе, и смущаете неосторожные умы следовать вашему примеру!


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


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


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


            1. f0y
              09.08.2023 10:29

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


        1. Leetc0deMonkey
          09.08.2023 10:29
          +1

          Вы больные? С какого момента скорость (скорость, карл!) написания кода стала отличать хорошего программиста от плохого? Вы же не филиал олимпиады по программированию, е-мое…

          Коллега, вы посмотрите на название компании. Да, это типичный филиал олимпиады по программированию.


  1. KivApple
    09.08.2023 10:29
    +3

    Без реальных ответов нейросети не интересно.


  1. itmind
    09.08.2023 10:29
    +1

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

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


  1. kozlov_de
    09.08.2023 10:29

    Дал ему задачку, которую придумал сам:

    Найти минимальное простое число, сумма цифр которого равна 99

    Ответы еретические от 499 до трёх экранов девяток

    Правильный ответ простой, справится 7 классник. Устно

    А если 100, то 8 классник


  1. mini_nightingale
    09.08.2023 10:29

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

    Очень плохо.
    Тем более что там обычно история чатов есть, копипасть и всё.
    Тут уже автор на уровне даже не джуна а школьника-двоешника.


  1. mini_nightingale
    09.08.2023 10:29

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


  1. Leetc0deMonkey
    09.08.2023 10:29

    • ChatGPT-4 прошёл собеседование как минимум на джуна

    Это только лишний раз доказывает что современные практики собеседований не имеют ничего общего с реальной разработкой.


  1. XTBZ
    09.08.2023 10:29

    Хм, тогда уж надо условие ставить, если не успеваешь подумать и писать код быстрей chatgpt, то не проходишь собес. Слишком слабый, межленный, ему не место в компании.

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