Как проводить собеседование, чтобы его не смог бы пройти обычный ChatGPT?
Публичный постЯ постоянно пишу о том, что ChatGPT заменит собеседования и любые вступительные тесты, но я сам же до сих пор их провожу по-старинке:
- Иногда для разогрева прошу рассказать какую самую интересную задачу решал на последнем месте работы.
- Проверяю опыт работы с инструментами, которые придётся использовать.
- Либо делаю что-то типа парного систем-дизайн интервью, где мы вместе проектируем систему как команда.
- Может быть в конце спрошу что-нибудь абстрактное типа «зачем тебе всё это айти вообще», если важен culture fit.
В теории на все эти вопросы может легко ответить даже ChatGPT и проверить это будет невозможно. Да, я скорее всего замечу сгенерированный текст, потому что глаз наметался уже, но с развитием генеративных языковых моделей это будет всё сложнее.
Потому я задумался — а какие в теории есть вопросы для интервью, скажем, айтишника, которые не сможет пройти тупой ChatGPT без помощи человека?
Может вы как-то изменили свой подход к собеседованиям вообще?
Окей, почти сто комментов спустя, я кажется начинаю понимать, что неправильно поставил вопрос. Большая часть ответов здесь о том, как отличить ChatGPT на «том конце» в слепом интервью. Это понятно.
Мой же вопрос был не об этом. Он о том, что если вдруг в теории на собеседование придет живой человек, который СПЕЦИАЛЬНО хочет тебя обмануть и натренировался бесшовно использовать ChatGPT для ответов на любые вопросы — как тогда быть? Очевидно, что вопросами про «гитлера» его не обманешь, человек не дебил же. А вот всякое техническое, типа «чем отличается корутина от треда», он моментально вбивает в ChatGPT и читает, например.
Всё это значит, что с приходом AI надо как-то менять сам процесс интервью и больше не спрашивать про условные корутины. Но совсем не понятно как.
Запустил такой же вопрос в твиттере. Там много хорошего накидали:
https://twitter.com/vas3k/status/1642560647832432640
Кто-то дарит вам бумажник из телячьей кожи.
У вас маленький ребенок. Он показывает вам свою коллекцию бабочек и банку, в которой он их убивает.
Вы смотрите телевизор. И вдруг понимаете, что по вашей руке ползет оса.
Вы читаете журнал и находите на развороте фотографию голой девушки.
Вы показываете фото мужу. Оно ему так нравится, что он вешает его
на стене в спальне.
Последний вопрос. Вы смотрите пьесу, в разгаре банкет.
Гости наслаждаются закуской из свежих устриц.
В качестве основного блюда подают вареную собаку.
https://telegra.ph/Test-na-sobesedovanie-03-31
Самые главные ошибки в найме происходят не из-за нехватки хард скиллов, а из-за условных софт - не вписался в команду, занимается fingerpointing-ом вместо дела, нужно за ручку водить, демотивируется или истерит по любому чиху, не в состоянии разделить то, что нужно принять, от того, что нужно поменять, и так далее. И хотела бы я знать, как это всё оценить в интервью. С самыми одиозными кейсами неоднократно задавалась вопросом "как бы я могла отсеять такого кандидата на интервью?" - и ответ иногда неутешительный, потому что люди часто знают, как отвечать "правильно" и даже часто действуют "правильно" в своей голове, только со стороны это может выглядеть совсем иначе. Что я точно знаю после многих-многих проведённых интервью, так это то, что набор вопросов, которые задашь кандидату, - вообще не главное. Главное - иметь в голове чёткое представление о топ 2-3 пунктах, которые тебе важны на этой конкретной позиции. Короче, не вижу я, что в этом принципиально AI меняет.
А подходы тобой описанные - норм. Если возвращаться к конкретике, то у меня ещё любимая тема про инженерные практики - к которым привык, которые пробовал, что сам о них думает. Про код ревью ещё люблю поговорить, ну или можно заставить сделать какое-то тестовое ревью - тоже хорошо показывает, как человек думает, на что внимание обращает.
Мой ответ скорее актуален для "до-чатгпт" эры, но может будет немного релевантен топику.
Я не люблю лайв кодинг потому что он выглядит кринжово, кандидат теряется и нервничает. Отчасти потому, что код приходится набирать в какой-то сторонней хуйне (привет, епам), которую ты видишь первый раз в жизни, или в которой просто непривычно работать. Однажды вышло даже так, что человек успешно решил задачу, но перенервничав, повесил трубку.
Поэтому, когда я провожу собеседования, я шарю свой экран, и пишу код сам. Вернее, пишу микро-заготовки, ожидая, что кандидат оживится, начнет подсказывать, и вообще станет говорить, что я должен написать. Нужен класс? Пишу пустой класс. Нужен компонент? Пожалуйста, вот, с пустыми пропсами.
Выходит такой гибрид парного программирования и лайвкодинга. Более того, это очень похоже на реальный созвон с коллегой и решение задачи "здесь и сейчас".
Да просто онсайт позвать после норм скрининга
В порядке бреда: можно спрашивать что-то из запрещённых для ChatGPT тем. Ну и тест на culture fit заодно, хм.
Л-А-Й-В-К-О-Д-И-Н-Г
ChatGPT мне очень напоминает студентов, которые пришли на экзамен, выучили билеты, но на C++ в течение семестра толком не писали. Могут рассказать идеальные формулировки, пройтись по примерам с лекций, зарешать исходные задания, но как только шаг влево или вправо в сторону хоть какой-то конкретики или, не дай бог, кода — стройная картинка рассыпается за минуту.
Если нанимаем программиста программировать код — то просим написать несложный работающий код в процессе собеседования на конкретном языке и просим объяснить происходящее. И интерактивно код портим/чиним/меняем и обсуждаем, что будет в каких случаях происходить. Окей, вы тут иф поставили, а что если его убрать. Ответ "перестанет работать" не катит, как именно перестанет? А что если тут знак перепутать? А если корейский алфавит засунуть (ChatGPT начнёт уверенно нести чушь)?
Разумеется, в процессе можно гуглить и спрашивать ChatGPT в открытую, полный open book, только экран покажите.
ChatGPT не является проблемой, это просто еще одна возможность обмануть систему которая ожидает правильных ответов на правильные вопросы.
Когда я последний раз проходил собесы, я заучил топ популярных вопросов и уверенно на них отвечал. Например, я мог рассказать, как правильно писать тесты, хотя на практике не писал ни одного, или пояснить за SOLID/OOP и паттерны, никогда даже не пытавшись применить их на практике (фронтендеры поймут).
Позднее, когда я сам начал проводить собеседования, то постепенно перешел от "30 вопросов как на экзамене" к формату, где мы обстоятельно обсуждаем 3-4 темы. С достаточным погружением в каждую чтобы не просто получить ожидаемый ответ, а понять, как человек смотрит на мир и как он применяет свои знания на практике.
Легко, попросить придти на собеседование.
Думаю, что если попросить собеседницу/собескдника рассказывать во всех деталях о любом большом реальном случае из их практики (включающем взаимодействие с реальными людьми и принятие многочилсенных решений) и по ходу требовать много специфических подробностей, то гонево станет быстро видно. Во-первых, AI охренеет, а во-вторых, даже если не охренеет, гонево будет заметно по эмоциональным реакциям и времени ответов.
А, придумал. Нужно заранее подготовить ответы чатГПТ на свои вопросы и сравнивать с тем, что говорит кандидат.
А какой риск, кстати? - риск что наймешь человека, который очень хорошо совместно с гпт решает задачки, а без него ничего не может? - так больше половины кодеров без ide ничего не могут и не страшно, работают спокойно, то же самое и тут, разве нет?
Мне кажется что если человек настолько бесшовно может использовать gpt-модель чтобы сымитировать дизайн, опыт работы с инструментами и опыт решения интересной задачи в прошлом, то он так то и без неё достаточно опытен. А значит и с рабочими задачами справится, пусть и с ее посредством.
А зачитывание без понимания и так детектируется, особенно если это не «реши задачку» а какой-то открытый вопрос
О, так ведь оффлайн интервью, или оффлайн лайв кодинг же!
Попроси собеседника отвечать на твои вопросы, но так, если бы он был Иисусом, который прикидывается Гитлером.
Возможно будет непопулярное мнение - но зачем? Испытательный срок спасет
отцов русской демократииработодателей которыеостались в каменном векепока еще нанимают программистов вместо prompt-инженеров.Если человек прошел интервью с ChatGPT но не может работать это быстро станет понятно. Если он не только прошел но еще и с помощью ChatGPT с обязанностями справляется - то что в этом плохого? Пулреквесты создаются, стори закрываются, профит?
Можно задавать вопросы с нечеткими формулировками, требующими уточнения. Насколько я замечал, на текущий момент языковые модели не умеют задавать уточняющие вопросы (а когда научатся, это будет совсем другая история). Таким образом заодно проверяем умение собирать требования)
Интересно даже не как поменяется подход к собеседованиям, а как поменяется подход к самой работе. Когда я был маленьким и гугла еще не было, было полезно много знать - быть эрудированным, читать энциклопедии. Была отдельная такая ценность - знание фактов. Потом появился интернет-поиск и знание фактов обесценилось, конечно ты можешь их знать, а можешь и не знать но уметь их быстро найти. Стало важно уметь искать информацию. Теперь кроме информации и фактов ты можешь искать и применять сходу целые навыки, что-же важно для работы и жизни теперь?
Еще острее этот вопрос в образовании стоит - вот есть у тебя курс, есть к нему практические задания - их и раньше не было проблем списать, а теперь их можно достаточно просто генерировать. Так чему в таком случае должен учить курс и какая должна быть практика. Заметим что считать производные и интегралы с изобретением Wolfram Mathematica/Alpha не перестали, хотя там это можно делать намного быстрее и удобнее чем в ручную.
Насколько я знаю, chatGPT не сможет составить ответ с рекурсией. Например, расскажите почему 14+15=29 использую ровно 17 слов.
Так что можно выкрутить эту идею на максималку и задавать подобные вопросики.
Мне кажется все довольно просто)
Помимо общих "рассказов о себе и своем опыте" использовать при собеседовании вопросы, на которые чатгпт попросту не умеет отвечать, лайвкодинг выше предлагали, поэтому этот вариант я опущу.
Я часто собеседую тестировщиков и в своих собесах использую картинку, которой со мной поделился коллега, подкидываю человеку какой-то пример ошибки и прошу порассуждать как ее локализовать. Чатботы пока не умеют так, а когда научатся, думаю все равно будет заметно, что ответ нечеловеческий.
Для собесов разработчиков наверняка можно что-то подобное придумать)
У нас один из этапов: pull request review
Сгенерировал реакт приложение на 3 компонента в ChatGPT
И дальше расставляю логические ловушки где нет однозначно правильного ответа.
Здесь от кандидата не требуется угадать что правильно.
Вместо этого хорошим результатом является если кандидат найдет не соответствие и сможет обсудить со мной - почему не понравилось, почему этот кусок кода плохой и для какого случая это решение будет адекватным.
И потом - предложить ему в live coding пофиксить те комментарии которые он оставил.
Итого:
Никто не упомянул Brainfuck? Давайте это буду я )) ChatGPT-3,5 по моим наблюдениям очень плох в Brainfuck'e. По 4-й версии мои 20 доллоров всё никак не дойдут, кто может, проверьте пожалуйста.
На простой вопрос «напиши мне программу, выводящую фразу „Hi“» GPT выводит обычно полный бред, у которого нередко ещё и скобки несбалансированы.
Я связываю это с тем, что Brainfuck состоит из значков, которые даже не буквы и плохо токенизируются.
Я проводил всего раза 4 собесы, на Data Scientist и ML Engineer (хотя сам тот еще криворук), но обычно вопросы такие:
Что здесь позволит обойти chatGPT? Частично второе, частично третье. Я бы даже не отменял в таком формате необходимость переформатировать собес так, чтобы его "не смогла бы" пройти chatGPT.
Сейчас потролю публичную бесплатную chatGPT и посмотрим, что она выдаст.
😱 Комментарий удален автором поста...
Вот, что думает GPT-4 на эту тему 🙃
In light of the increased use of AI language models like ChatGPT, remote software developer interviews should be adapted to better evaluate candidates' skills and suitability for the job. Here are some suggestions to improve the interview process:
By adapting the remote interview process in these ways, you can better assess a candidate's skills, experience, and fit for your organization while minimizing the influence of AI-generated answers.
Из вариантов, которые работают прямо сейчас (но вероятно вскоре перестанут): I want you to explain me a situation when 7+4+6=21 is a correct answer.
Нормальный разработчик немного подвиснет, но вероятно довольно быстро сообразит, что это восьмеричная система. ChGPT4 настаивает, что это ошибка.
дисклеймер: я не интервьюирую программистов. у меня в основном опыт с айтишниками разного уровня и специализации в безопасности и девопсе/девсекопсе.
ChatGPT на мои интервью не влияет, как минимум пока.