суббота, 24 августа 2019 г.

[work.f*ck] О трудоемкости/стоимости SObjectizer-а на простом примере

В русскоязычном сегменте Интернета меня время от времени троллят двумя выпадами в адрес SObjectizer-а. Первый -- это то, что SObjectizer никому не нужен и никем не используется. Второй -- это то, что SObjectizer несложная и несерьезная поделка, которую, при необходимости, сможет повторить каждый второй C++ник, если не каждый первый.

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

Никто вашим проектом не пользуется

То, что SObjectizer мало известен и мало используется, как раз таки неудивительно. Удивительно другое: то, что он вообще-то говоря, используется. Об этом уже писал неоднократно, но не грех написать еще раз, ибо изрядное количество "малолетних дебилов" (с) живет под гипнозом больших брендов и громких историй успеха.

Когда публике является что-то от Google или Facebook, или Yandex, то это воспринимается с гораздо большим интересом и гораздо большей степенью доверия, нежели продукт какого-то неизвестного мелкого производителя софта из заштатного областного центра из какой-то мелкой Белоруссии.

По идее, SObjectizer вообще не должен был бы привлечь к себе никакого интереса. Но, к моему удивлению, время от времени кто-то задает вопросы и о том, как что-то сделать с помощью SObjectizer-а, и о том, что и как сделано в SObjectizer-е и почему. Иногда кто-то говорит что-то вроде: "Нам нравится ваш продукт, но, к сожалению, мы не можем его использовать по тем-то или тем-то причинам", а иногда еще и просит какого-то совета о том, чем можно заменить SObjectizer в их условиях. И уж тем более удивительно узнавать про то, что люди делают на SObjectizer-е вообще без нашего участия.

Так что тут в полной мере работает принцип "вода камень точит": мы продолжаем развивать SObjectizer и рассказывать о нем, а информация о SObjectizer-е потихонечку расходится все шире и шире, и к нему потихонечку подтягиваются новые пользователи. Процесс этот не быстрый, он растянется на годы. Но SObjectizer и так уже живет больше 17-лет, а SObjectizer-5 развивается уже в течении девяти лет. Так что мы смело можем оперировать именно годами.

Это несерьезная поделка

Мне сложно понять, исходя из каких критериев ынтырнетовские ыксперды оценивают проект масштаба SObjectizer-а "поделкой". Да, это совсем небольшой проект. Там порядка 30KLOC кода в ядре, чуть больше в тестах, и еще порядка 10KLOC кода в примерах. Т.е. проект больше 50KLOC, но меньше 100KLOC. Что, в принципе, немного.

Но KLOC-и мало что говорят о трудозатратах и стоимости. Поэтому я приведу другую калькуляцию для иллюстрации "масштаба трагедии".

Думаю, что количество статей о SObjectizer-е, написанных лично мной, составляет порядка 45 (из которых только на Хабре будет статей 40).

Итак, 45 статей. Предположим невероятное: что на написание одной статьи уходит всего один день. Даже при таких фантастических допущениях 45 статей -- это 45 рабочих дней. Т.е., по простому, два месяца при расчете 22-23 рабочих дня в месяце.

Если взять зарплату middle C++ developer в размере $2.5k "чистыми", то только статьи про SObjectizer можно оценить в $5k. И это если мы смотрим только со стороны наемного сотрудника, если посмотрим со стороны работодателя, который бы решил вложиться в популяризацию инструмента посредством статей, то там зарплату можно смело умножать на 1.5. Что дает уже $7.5k. И это минимум. И это мы исходим из ЗП middle C++ developer, что в моем случае, опять же, ну очень уж оптимистично.

Так что затраты только на рассказы о том, что такое SObjectizer, как он работает и что он может, можно оценить в несколько месяцев работы и порядка $10k. Только на обзорные и вводные статьи.

Могу смело сказать, что 99.9(9)% анонимных надмозгов, с удовольствием бросающихся какашками в SObjectizer, вообще никогда в жизни не тратили таких денег ни на покупку ПО, ни на разработку ПО.

Но это всего лишь статьи. Здесь в расчет не берутся другие виды работ по проекту: документирование, например. Не говоря уже про собственно разработку и тестирование. А если все это взять, то разработка даже такой "поделки", как SObjectizer, внутри какой-нибудь софтверной компании с достижением такого же уровня качества (как кода, так и документации) обойдется в десятки тысяч у.е.

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

Вам не нравится SObjectizer и вы думаете, что запросто сделаете себе такой же, но с перламутровыми пуговицами свой собственный? Не проблема. Но готовьтесь потратить несколько месяцев своего времени и несколько десятков тысяч у.е. своих денег.

И если вы это сделаете, то вряд ли у вас будет желание называть результаты своей работы "поделкой". Поделки столько не стоят.

Итого

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

PS. По своим масштабам RESTinio стремительно догоняет SObjectizer, если уже не обогнал. Так что в сторону RESTinio бросаться какашками так же не стоит. Тот, кто это делает, просто-напросто расписывается в своем непонимании объема работы, который приходится проделать разработчикам программного продукта, который могут использовать все желающие, а не только авторы этого продукта.

Комментариев нет: