Как вы можете сказать, действительно ли кто-то, кто утверждает, что он программист, является или на самом деле самозванцем, который посмотрел несколько ваших видео и приобрел некоторые из жаргонизмов, не понимая по-настоящему концепций.
Любой, кто подал заявку на профессиональную работу в области программирования, знает, что процесс найма проходит несколько этапов и может длиться неделями или месяцами. Но что делать, если вы ищете программиста в менее формальном или менее хорошо финансируемом. контекст? Вы просто должны верить, что человек может кодировать только потому, что он говорит, что может?
Один из контекстов, который может побудить непрограммистов претендовать на то, чтобы быть программистами,-это участие в опросах или исследованиях, где участникам платят за их вклад. Исследователи из Боннского университета, которые написали статью «Вы действительно кодируете? Разработка и оценка скрининговых вопросов для онлайн-опросов с программистами» было предложено изучить, как отличить добросовестных программистов от мошенников на основе их собственного предыдущего опыта проведения исследований в области хранения паролей и безопасности. Для одного из них одна и та же команда смогла получить только 40 из 1600 студентов-информатиков для участия в исследовании, где компенсация составляла 100 евро. Нанять опытных профессиональных программистов еще сложнее, поскольку у них, как правило, слишком много требований к своему времени, чтобы рассматривать любое такое участие.
Чтобы привлечь достаточное количество участников, исследователи набирают сотрудников с таких платформ, как GitHub, Stack Overflow, группы встреч и публикации в социальных сетях, и, как они заявляют в статье, проблема заключается в том, что:
поскольку исследователи часто предлагают значительно более высокую компенсацию, чем за исследования конечных пользователей, у участников может быть стимул принять участие в исследовании, несмотря на отсутствие навыков программирования.
Они также полагаются, как и это исследование. об использовании онлайн-агентства Clickworker.
Есть много других контекстов, где возможность быстро идентифицировать «настоящих программистов» была бы преимуществом, поэтому вопросы, которые они придумали, представляют более широкий интерес, чем просто академические исследования.
В ходе исследования был разработан набор вопросов, отвечающих следующим требованиям:
• Эффективность: способность различать программистов и непрограммистов-вопросы должны опираться на знания предметной области и быть достаточно сложными, чтобы только программисты могли ответить в разумные сроки и не оставляли места для простых догадок.
• Эффективность: Потребляйте как можно меньше времени — цель состоит в том, чтобы сформулировать вопросы, на которые программисты могут быстро ответить, а также позволить участникам без навыков программирования быстро решить, что они не могут на них ответить.,
• Устойчивость к мошенничеству: инструмент должен быть разработан таким образом, чтобы участникам без навыков программирования было трудно найти ответы, например, с помощью онлайн-поисковых систем или форумов.
• Языковая независимость: должна работать независимо от языка программирования, в котором владеют участники.
Первоначально было предложено шестнадцать вопросов, которые первоначально были заданы 50 людям, известным как программисты — либо профессионально, либо студентам, и 100 непрограммистам, из которых 35 претендовали на некоторые навыки программирования. Тест начался с вопроса о знакомстве с хорошо известными языками программирования, а затем последовал:
Вопрос 1: С каким из этих менее известных языков программирования вы работали раньше?
Все варианты были вымышленными, и все, кроме одного из программистов, дали правильный ответ: «Ни один из вышеперечисленных». Однако этот вопрос не был хорошим дискриминатором, так как 91% группы, не занимающейся программированием, дали тот же ответ.
Следующий вопрос, напротив, сортировал программистов от непрограммистов. Он спросил:
Q2 Какие из этих веб-сайтов вы чаще всего используете в качестве помощи при программировании?
далее следует список, включающий переполнение стека, Википедию, LinkedIn и Memory Alpha, которая является источником для Star Trek. Все программисты выбрали Переполнение стека, и никакой другой вариант не был выбран. Среди группы, не занимающейся программированием, 60% признались, что не программировали, 15% сказали, что не использовали ни один из перечисленных сайтов, 9% выбрали Memory Alpha, 8% Википедию, 2% подключились и только 6% выбрали Переполнение стека.
Следующие пять вопросов проверяли базовые знания с помощью ответов с множественным выбором, и те, которые лучше всего помогали различать программистов и непрограммистов, были:
Q3 Выберите ответ, который лучше всего соответствует описанию функции компилятора.
Q4 Выберите ответ, который наилучшим образом соответствует определению рекурсивной функции.
Q6 Какое из этих значений было бы наиболее подходящим для логического значения?
Все программисты ответили на эти вопросы правильно по сравнению с четвертью-третью не программистов.
Два вопроса с множественным выбором были менее хороши, так как большая доля непрограммистов ответила правильно, а некоторые программисты выбрали неправильно:
Q5 Выберите ответ, который лучше всего соответствует описанию алгоритма
Q7 Пожалуйста, выберите все степени 2.
Эти вопросы были отброшены на том основании, что они не достигли уровня правильных ответов не менее 98% от группы программистов или что более 40% группы не программистов дали правильный ответ.
Вопрос, который имел худшую производительность, был:
Q10 Пожалуйста, выберите все допустимые шестнадцатеричные числа.
Только 70% программистов и 6% непрограммистов ответили правильно.
Два вопроса на основе кода обманули 20% и 24% программистов соответственно:
Q12 Каково время выполнения следующего кода?
Q13 При выполнении кода вы получаете сообщение об ошибке для строки 6: Индекс массива вне диапазона. Что бы вы изменили, чтобы решить эту проблему?
Два вопроса в наборе, которые были основаны на псевдокоде для сортировки массива, и два из них были эффективны для различения программистов и не программистов:
Q14 Какова цель алгоритма?
Q15 Каков параметр функции?
Однако вопрос 16, касающийся обратного цикла в псевдокоде «hello world», был отброшен из-за того, что среди программистов было только 94% правильных.
Один из выводов исследования состоял в том, что:
Разработка вопросов для проверки программирования не является тривиальной задачей, и мы не рекомендуем использовать вопросы без их тестирования.
хотя, возможно, более важным результатом было то, что:
для исследований разработчиков, которые распространены в нашем сообществе, не рекомендуется полагаться на навыки программирования с самоотчетом или функции набора платформы. В нашем тестовом наборе 42% программистов Clickworker получили меньше правильных ответов, чем самые бедные исполнители в нашей группе программистов ground truth.