Хабрахабр

PVS-Studio ROI: как не терять миллионы

PVS-Studio ROI

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Я решил реализовать на сайте ROI-калькулятор и разместить подробное описание принципов его работы. Но прежде я решил вынести свои мысли и расчёты на обсуждение. Я надеюсь получить интересные и полезные комментарии, которые помогут сделать калькулятор как можно более достоверным и убедительным.

Однако, мы надеемся, что, прочитав статью, вы согласитесь, что правильнее будет переключиться в режим: Я доверяю расчётам, описанным в статье «PVS-Studio ROI» :). Вашему вниманию предлагается описание калькулятора, позволяющего рассчитать возврат инвестиций от использования в процессе разработки статического анализатора кода PVS-Studio.
Калькулятор по умолчанию работает в режиме «скептик».

Ценность часа работы программиста

Для того чтобы определить, сколько денег вернёт PVS-Studio, для начала надо рассчитать, какова настоящая стоимость (ценность) часа работы программиста.

Дело в том, что недостаточно просто взять месячную зарплату программиста и поделить её на 160 (среднее количество часов в месяце при 40 часовой рабочей неделе).

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

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

То есть программист приносит в 2 раза больше денег, чем тратится на его зарплату. Для скептически настроенных читателей мы возьмем коэффициент 2. Более честно брать коэффициент, равный по крайней мере 3. На самом деле, компания с такими коэффициентами балансирует на грани безубыточности.

Если программист выпал из процесса разработки на 1 час, то компания недополучила не сумму равную часу его работы, а в 2 или 3 раза больше. Что всё это означает?

Дело том, что сотрудник вовсе не программирует 8 часов в день. Есть и второй коэффициент, влияющий на цену настоящего рабочего часа. Программист работает с Trello, участвует в совещаниях, отвечает в почте, участвует в code-review. Невозможно представить, что человек, как пришел с утра и как сел, так 8 часов не отрываясь занимается с кодом. В лучшем случае непосредственно с кодом он будет работать 6 часов. В конце концов, ему ещё надо ходить в туалет и пить чай :). А если вы читаете этот текст не в режиме скептика, то понимаете, что на самом деле 4 часа куда более правдоподобное время.

33 или на 2. Вот и получается, что стоимость часа нужно дополнительно умножить на 8/6=1.

Теперь перемножим два рассмотренных коэффициента и получим итоговый коэффициент, на который нужно умножать стоимость часа работы программиста:

  • коэффициент для скептиков: 2 * 1.33 = 2.66
  • коэффициент более близкий к реальности: 3 * 2 = 6

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

Давайте теперь посмотрим, что означает для компании выпадение программиста с зарплатой 100 000 рублей из рабочего процесса на 1 час.

Следует учесть, что компания делает отчисления в различные фонды («зарплатные налоги»). Примечание. Для понимания отметим, что на самом деле компания тратит на выплату зарплаты больше, чем 100 000 рублей. Для упрощения расчётов не будем учитывать отчисления и примем, что компания тратит только 100 000. А на руки после удержания 13% налога человек получает 87 000 рублей. Я решил это отметить, чтобы показать, что делаю округления не в пользу PVS-Studio.

Получается, что если программист на 1 час отвлёкся на правку ошибки, то компания не сможет из-за этого заработать: При зарплате 100 000 рублей ставка 1 часа работы составит 625 рублей.

  • для скептика: 625 рублей/час * 2.66 = 1660 рублей/час
  • в реальности более чем: 625 рублей/час * 6 = 3750 рублей/час

Это и есть настоящая стоимость (ценность) одного часа программиста, когда он занят полезным делом.

Сколько часов экономит PVS-Studio

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

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

Учитывая, что иногда анализатор может предотвратить появление трудно воспроизводимых гейзенбагов, то средним значением вполне можно указать 3 часа.

В год анализатор экономит следующее количество часов настоящей работы программиста: В году приблизительно 52 недели.

  • скептическое отношение к статическому анализу: 2 часа * 52 = 104 сэкономленных часа
  • позитивное отношение: 3 часа * 52 = 156 сэкономленных часа

Пришло время считать ROI

Тогда использование PVS-Studio одним программистом с зарплатой в 100 000 рублей будет возвращать бизнесу в год:

  • Если вы скептик: 1660 рублей/час * 104 часа = 172 640 рублей
  • Реально: 3750 рублей/час * 156 часов = 585 000 рублей

Возьмём теперь типовую команду разработчиков из 10 человек. Внедрив PVS-Studio, можно ожидать, что благодаря сэкономленному времени команда сможет выполнить полезную работу стоимостью:

  • Скептик: 1 726 400 рублей
  • Реальность: 5 850 000 рублей

Окончательная формула

Итак, давайте теперь объединим всё в единую формулу, которая используется в калькуляторе.

Обозначим месячную зарплату программиста как S.

Количество программистов в команде обозначим как N.

  • Формула для скептика: N * (S / 160) * 2.66 * 104
  • Реальная формула: N * (S / 160) * 6 * 156

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

Левый столбец: зарплата разработчиков. Верхняя строка: количество программистов в команде.

Таблица для скептиков:

Скептик. Таблица N1.  Зеленый: использование статического анализатора оправдано и полезно.  Красный: использование PVS-Studio может быть неоправданным.  Голубой: использование однозначно выгодно.

Таблица N1. Скептик. Красный: использование PVS-Studio может быть неоправданным. Зеленый: использование статического анализатора оправдано и полезно. Голубой: использование однозначно выгодно.

Реальная таблица:

Реальность. Таблица N2.  Зеленый: использование статического анализатора оправдано и полезно.  Красный: использование PVS-Studio может быть неоправданным.  Голубой: использование однозначно выгодно.

Таблица N2. Реальность. Красный: использование PVS-Studio может быть неоправданным. Зеленый: использование статического анализатора оправдано и полезно. Голубой: использование однозначно выгодно.

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

Примечание

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

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

Заключение

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть