В середине мая этого года мы опубликовали обновлённую версию нашего квиза для C++ разработчиков. Спустя 2 месяца мы решили рассказать о результатах.


0964_rezultaty_quiza_cpp_ru/image1-3f082de585be7198d831d7e418a82578.png


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


Мы выбрали несколько фрагментов кода из Open Source проектов, в которых анализатор PVS-Studio нашёл ошибки.


  • Каждому участнику предлагается 10 случайно выбранных фрагментов, в которых нужно найти ошибку.
  • На поиск одной ошибки даётся 60 секунд.
  • За каждый правильный ответ начисляется 1 балл, максимально можно набрать 10 баллов.
  • Если вы отвечаете неправильно или не успеваете ответить правильно за 60 секунд, то остаётесь без балла.

Механика очень простая, поэтому, если ещё не пробовали, попробуйте.


Итак, перейдём к самому интересному – результатам квиза.


На момент написания заметки в квизе приняли участие 1970 человек.


Я намеренно не стал обобщать и писать 1970 разработчиков, т.к. часть из этого числа — студенты либо люди, не занимающиеся разработкой, а проходящие квиз ради интереса. Но большая часть участников — всё же C++ разработчики, и тем удивительней, что средний балл правильных ответов – 3,53 из 10 :) Довольно неожиданно и слегка печально.


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


Для наглядности я сделал график, показывающий распределение участников по количеству набранных баллов. Как видно, самое сложное — дать 6 и более правильных ответов.


0964_rezultaty_quiza_cpp_ru/image2-d15e35d5f81c6e8d0ab13d15c9f2427c.png


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


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


  • люди не в теме. Этот как раз та часть, которая не занимается разработкой и визуально не может определить, есть ошибка в коде или нет.
  • не хотят вчитываться код. Увидел ошибку и отметил. Сразу не нашёл? Тыкну наугад или пропущу, это всё-таки не работа.
  • интересно, что там в конце. Просто интересно, какой будет результат если отмечать ошибки наугад (лично я таким образом набрал 3 правильных ответа, не являясь разработчиком).
  • отвлёкся от прохождения.

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


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


  • начинающие разработчики не всегда в теме и могут допустить "простые" ошибки;
  • нет желания выискивать баги в коде, особенно если это не твой код;
  • интересней придумать новую фичу, чем несколько раз просматривать уже написанный код;
  • всегда можно отвлечься и упустить ошибку, от этого никто не застрахован.

Для решения в том числе и этих проблем стоит внедрять в процесс разработки инструменты статического анализа.


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


А мы постараемся придумывать новые развлекательные активности, чтобы вы смогли испытать себя. Кстати, в скором времени мы планируем запустить подобный квиз, но уже по C#. После этого мы обязательно сравним, кто из разработчиков лучше находит ошибки.


Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Alexey Sarkisov. Static code analyzer vs developers. Here we go again..

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


  1. kai3341
    11.07.2022 18:09

    А если разработчики, но не C++, а на другом языке?


    1. al_sarkisov Автор
      11.07.2022 18:13

      В таком случае их можно отнести к категории "Другие участники".


  1. tzlom
    11.07.2022 18:13

    На один из вопросов я знал ответ, но отметил его не верно по мнению опроса. Да и в принципе проходить его с мобильного телефона была плохая идея.


    1. al_sarkisov Автор
      11.07.2022 18:15

      Да, с десктопной версии его проходить значительно удобнее. А какой это был пример, не помните?


    1. grafdezimal
      11.07.2022 20:33

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


      1. al_sarkisov Автор
        12.07.2022 08:46
        +1

        Спасибо за фидбек. Будем проверять конечно и учитывать при разработке шарпового квиза.


  1. max_dark
    11.07.2022 22:06

    Лично у меня основной ошибкой был клик на строку с дефектом, а не на конкретное место в строке.


    1. al_sarkisov Автор
      12.07.2022 08:55

      Да, есть некоторое расхождение в этом моменте. Но всё же акцент делаем именно на ошибке, а не на строке с ней. Хотя иногда целая строка может быть ошибкой )


  1. asaks
    12.07.2022 08:26

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


    1. al_sarkisov Автор
      12.07.2022 08:47
      +1

      Это интересное наблюдение. Будем проверять, спасибо )


    1. al_sarkisov Автор
      13.07.2022 11:56

      Ошибку поправили. Ещё раз спасибо за наблюдение )


  1. a-tk
    12.07.2022 08:29

    Много вопросов есть к разметке ответов. Например, когда идёт использование потенциального nullptr, кликать надо не то в район введения переменной, не то в район неполной проверки, не то в разыменование при использовании... Оказалось, что последний вариант неверный.


    1. al_sarkisov Автор
      12.07.2022 17:45
      +1

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


  1. webhamster
    12.07.2022 15:14
    -3

    Но большая часть участников — всё же C++ разработчики, и тем удивительней, что средний балл правильных ответов – 3,53 из 10 :) Довольно неожиданно и слегка печально.

    Каков язык, таковы и результаты. Странно было бы ожидать идеального парсинга C++ кода в головах разработчиков, если его архаичный синтаксис для этого вообще не предназначен.

    Но вообще вы должны радоваться, что безосновательная сложность языка обеспечивает вас работой.


    1. al_sarkisov Автор
      12.07.2022 17:44
      +2

      Скорее мы больше рады, что наш анализатор реально помогает разработчикам.