В середине мая этого года мы выпустили обновленную версию нашей викторины для C++ разработчиков. Прошло уже 2 месяца — продолжайте читать, чтобы узнать больше о результатах!
Вы наверняка слышали о нашей викторине и даже проходили ее. В любом случае, позвольте мне рассказать вам подробности.
Мы выбрали несколько участков кода из open-source проектов, в которых анализатор PVS-Studio обнаружил ошибки.
-
Участникам дается 10 случайно выбранных фрагментов кода. Каждый фрагмент содержит ошибку.
-
У вас есть 60 секунд, чтобы найти ошибку.
-
За каждый правильный ответ начисляется 1 балл. Максимально возможная оценка — 10 баллов.
-
Если вы ответили неправильно или время истекло, вы не получаете ни одного балла.
Механика викторины проста, так что если вы еще не прошли ее, попробуйте.
Что ж, перейдем к самой интересной части — результатам.
На момент написания статьи в викторине приняли участие 1970 человек.
Я намеренно написал «1970 человек» — в это число могут входить студенты или люди, которые не занимаются развитием, а прошли викторину ради интереса. Но все же большинство участников — разработчики на C++, и тем удивительнее средний балл правильных ответов — 3,53… из 10. Довольно неожиданный и немного разочаровывающий результат.
Конечно, можно с уверенностью сказать, что викторина — это игра, и по ее результатам нельзя оценивать навыки разработчика. Однако факт остается фактом, и статистика набранных баллов несколько удручает.
Для наглядности я сделал график, который показывает распределение участников по количеству набранных баллов. Как видите, самое сложное — дать 6 и более правильных ответов.
Кто-то может сказать, что мы выбрали сложные примеры и дали мало времени на поиск ошибки. Но дело не в этом.
Результаты теста ни в коем случае не означают, что разработчики, выполнившие его, некомпетентны или невнимательны. На мой взгляд, причина в другом. На самом деле, причин несколько:
-
люди могут быть не в курсе событий. Это те, кто не участвует в разработке и не может с одного взгляда определить, есть ли в коде ошибка.
-
люди не хотят просматривать код. Они замечают ошибку — и нажимают на нее. Не смогли ли они сразу найти ошибку? Они щелкают на случайном месте или пропускают фрагмент кода — в конце концов, это не их работа.
-
Люди хотят знать, что они получат в конце. Им просто интересно, каким будет результат, если они будут кликать на ошибки наугад (лично я таким образом получил 3 правильных ответа, а я не разработчик).
-
люди отвлеклись от викторины.
Положа руку на сердце, скажу, что даже некоторые разработчики из нашей команды C++ не заметили всех ошибок (я не включил их результаты в сводные данные).
Каждый разработчик — это прежде всего человек. И некоторые из описанных выше причин вполне могут проявляться в их рабочем процессе:
-
начинающие разработчики могут совершить «простую» ошибку в начале своей карьеры;
-
у человека может не быть желания искать ошибки в коде, особенно если это не его код;
-
интереснее сосредоточиться на новой функции, чем несколько раз перебирать уже написанный код;
-
всегда можно отвлечься и не заметить ошибку, от этого никто не застрахован.
Внедрение инструментов статического анализа в процесс разработки может помочь преодолеть эти проблемы.
Поэтому не бойтесь использовать статические анализаторы кода. Дайте разработчикам возможность исправлять ошибки, а не тратить время на их поиск. Почему бы вам не начать с бесплатной версии PVS-Studio? Кстати, те, кто прошел тест, получают промокод на 30-дневную лицензию вместо 7-дневной.
Мы постараемся придумать для вас новые развлечения, чтобы проверить ваши навыки программирования. В ближайшем будущем мы планируем запустить аналогичную викторину по C#. После этого мы обязательно сравним, кто лучше находит ошибки: C++ разработчики или C# разработчики?