Так получилось, что я знаком со многими программистами, которые работают в крупных (и не очень) софтверных компаниях в качестве наемных сотрудников, т.е. на окладе. На сегодняшний день Москве можно наблюдать два явления:
1. Дефицит квалифицированных кадров.
2. Кризис самореализации. Много ИТ специалистов в прошлом учились в лучших высших учебных заведениях России, но текущая их работы не в полной мере позволяет им реализовать свой потенциал. Одни мирятся с таким положением дел, у других возникает желание "изменить судьбу", открыть свое дело, начать стартап, освободиться от "офисного рабства".

Как следствие они начинают карьеру молодого предпринимателя, пытаясь начать самостоятельные проекты, искать заказы на разработку ПО. При этом у многих сохраняются наивные представления о том, как продавать свои услуги, на каких условиях работать с клиентом и самый главный вопрос возникающий у начинающего московского программиста-предприниматели - сколько стоят его услуги по созданию программного обеспечения. Для многих технически подкованных специалистов моего возраста в школьные годы не составляла особого труда решить примера вида:
blog_primer

Пример из сборника задач Сканави М.И. для поступающих ВТУЗы. В прошлом, те кто хотел поступить в ВУЗ могли решить такой пример не особо себя утруждаю, как мы шутили «спинным мозгом». Наверное сейчас с появлением ЕГЭ эпоха задач из Сканави уходит в прошлое.

С другой стороны, когда нужно сделать не намного более сложные арифметические и алгебраические операции, но вместо конкретных чисел будут стоять налоги, накладные расходы, человеко-часы, риски, объемы, сроки, скидки и другие составляющие, то это вызывает панику. Человек с высшим техническим образованием может потратить несколько дней или даже недель, чтобы найти грубые ошибок в своих вычислениях.
Другими словами, если речь идёт о готовом математическом выражении — всё просто, но если это якобы "бизнес" ситуация и нужно ответить на вопрос "за 100 000 сделаешь программу?" или "сколько будет стоит сделать мобильное приложение?", то начинается тупёж. Например постоянно сталкиваюсь с людьми, которые путаются с процентами и не могут посчитать какую цену они должны указать заказчику, чтобы у них осталось 100 000 рублей после оплаты налога в 6% с дохода?
Казалось бы ответ очевиден - приблизительно 106 383 рубля, но даже в таком простом примере многие делают ошибки (считают 106 000) или вообще не учитывают налог в конечной стоимости («да ладно, пусть, чего мелочится, всего 6%»). Когда же нужно проделать более «сложные» вычисления, т.е. учесть в цене все затраты (часы на согласование проекта, тестирование, внедрение, отчисления в фонды, обслуживание счета в банке, расходы на аренду, обрудывание и другие расходы), то в итоге некоторые делают множество существенных арифметических, алгебраических и алгоритмических ошибок. Хотя на самом деле, здесь нет ничего сложного.

Ошибка 1.

Допустим существует некий абстрактный московский java-программист. Его зарплата 120 000 в месяц. Он решил, что начинает работать на себя. Какую стоимость человеко-часа выставлять заказчику? Берем зарплату и делим на среднее количество рабочих часов в месяц (допустим 164,17 часов). Получаем стоимость часа около 731 рубля.

Давайте приведем аналогию из сферы услуг. Я знаю фитнес-центр в котором годовой абонемент стоит 16 000 рублей. Это недорого для Москвы (даже скажем средний, бюджетный вариант). Фитнес открыт ежедневно, работает по 12 часов в день. Разделим 16 000 на количество часов в году (365 дней * 12 часов = 4 380 часов) и получим стоимость часа равную 3 рубля 65 копеек. Посчитав это, я решаю пойти и позаниматься 2 часа, т.к. по моим расчетам должен заплатить 7 руб 30 копеек. Вопрос, почему администрации фитнес-центра требует с меня за разовое посещение 500 руб?! Что за наглость?

  2 * (16 000 / (365 * 12)) = 7.30 != 500

Устраиваясь на работу, программист предоставляет свои услуги работодателю не на один месяц, а как правило по бессрочному договору, т.е. работать будет годами (хотя на обычно специалист меняет работодателя через 2-5 лет). Вы как бы "продаете" годовой абонемент своему работодателю — будут для вас задачи или нет, это уже не ваши проблемы. Фитнес-центр же не виноват, что кому-то лень тащить свое тело в зал и кто-то не приходит заниматься уже вторую неделю. Так и здесь, работодатель сам должен обеспечить вам фронт работы, а вы качественно программировать и получать каждый месяц зарплату. Если задач нет, то можно плевать в потолок или гонять танки, вашей вины в простое нет.
Другими словами, если вам предлагают проект на условиях: 2 миллиона рублей на 12 человеко-месяцев, деньги поступают каждый месяц, заказчик покупает вам необходимую для работы компьютерную технику, оплачивает интернет и аренду рабочего места, то можно говорить о том, что стоимость часа равна 731 рублей. Если это подработка на 60-100 часов, то о каких 731 рублей за час может идти речь? Вас же за 7 рублей в фитнес-клуб никто не пустит, хотя стоимость часа рассчитана по схожему принципу. Думаю для любого торговца на улице очевидна причина в разнице цены за килограмм картошки между покупкой ее вагонами и трех килограммов в розницу, но почему-то у программистов-предпринимателей работает "линейное" мышление в расчете цены.

Ошибка 2.


Есть такой бородатый анекдот:
Новый русский открыл фотосалон и дал объявление: "Приглашаю фотомодель для съемки. Оплата наличкой на месте. За час работы 20 тысяч баксов".
Набежала куча моделей, отобрали одну, снимали с вечера и до ночи.
Приходит новый русский:
- Ну что, фотограф, сколько наснимал?
- Четыреста кадров.
- А выдержку ставил какую?
- 1/200 секунды.
- Ну ты, девка, в натуре, на две секунды всего лишь наработала, держи 12 баксов.

К чему я вспомнил этот старый анекдот из прошедшей эпохи? Дело в том, что программист часто видит под "работой" только процесс написания программного код, т.е. те короткие мгновения когда его пальца касаются клавиатуры и набирают строчки кода. Многие программисты даже тестирование не считают "работой", не говоря уже про отладку (т.к. сколько времени займет дебаг предсказать нельзя, то многие программисты закрывают на это глаза и думают, что оно будет равно нулю, а вдруг повезет?). В итоге получается сильный перекос. Заказчик обращается к программисту (начинающему предпринимателю) с вопросом за сколько времени он сделает ему «ПРОГРАММУ». Программист думает что работы на два-три дня, говорит что сделает работу за неделю. Заказчик думает, что через неделю ему сделают за эти деньги ВСЁ - и техническое задание напишут, напишут код, на маркет выложат, на сервере все настроят, документацию оформят, а еще будет пожизненная техническая поддержка (которая он тоже думает включена в цену). Про то, что дизайн у кого-то нужно покупать заказчик может даже не представлять, не говоря уже про то, что нужно делать тестирование и писать техническое задание.
Почему так?

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

Теперь если программист выходит на рынок в чистое поле, без группы поддержки, то тут начинается совсем другая история. Вы пробовали заставить программиста написать техническое задание? При чем написать такое, которое было бы хоть немного понятно заказчику и чтобы он его утвердил? Часто бывает, что на небольшой проект сроком около трех месяцев, на анализ может уйти около месяца интенсивной работы и переговоров. Чтобы было наглядней, если грубо вы оценили проект в 300 000 рублей и у вас вышла "промашка" в расчетах и не учли время работы на анализ и разбор задачи, то поздравляю вы себя обманули где-то на 100 тысяч.

Бог с ним, с техническим заданием, оно делается в начале, про него сложно забыть и не учесть, а вот про внедрение (установка ПО, настройка серверов) и дальнейшее техническое сопровождения забывают очень многие. Кто-то наивно думает, что на эти работы требуется 0 (ноль!) часов иначе как объяснить, что многие начинающие программисты - предприниматели не учитывают их в смете?

Резюмирую очевидные вещи: программист - программирует, аналитик - анализируют, тестировщик - тестирует, художник - рисует, системный администратор - устанавливает и настраивает ПО. Плюс еще кто-то всем этим цирком должен управлять, иначе все сломается. Если считать работой только само программирование, то это будет 1/3 или 1/6 от общего объема работ (а возможно даже меньше). Легко видеть взяв обратное число к этой дроби, что в итоге можно пролететь в 3-6 и больше раз! Это уже не ошибка в пару процентов. Ведь в жизни как правило бывает, что если вы сказали "сделаю за 50 000 руб", то заказчик будет держаться за эту сумму мёртвой хваткой, а то что в эту сумму вы что-то там не учли, потом ему в большинстве случаев, если честно, будет наплевать.

Ошибка 3.

С затратами связанными с работой других людей/ролей разобрались. Как быть с материальными и финансовыми затратами? Вот один из хитрых примеров. Вы покупаете ноутбук для работы. Думаю мало кто будет спорить, что для того, чтобы разрабатывать ПО нужна нормальная хорошая техника. Хотите вы или нет, но через три года нужно будет покупать новый ноутбук. Возьмем для работы нормальный мак бук, он обойдется нам приблизительно в 60 000 руб. В итоге каждый год вам нужно откладывать +20 000. Иначе спустя три года уже будет не на что купить новый компьютер. Если вы разрабатываете мобильные приложение, то вам скорее всего понадобится, что-то из этого списка:
- iPhone (разные модели)
- iPad/iPad mini/iPad 2
- Android (телефон, желательно разные модели)
- Android (планшет, желательно разные модели)
Причем их устаревание тоже происходит стремительно, хотите вы или нет, но через пару лет, всё равно придётся покупать новый смартфон или планшет, работающей на новой платформе.

Для наглядности приведу вымышленный пример (числа все взяты с потолка).
garden spade
Допустим ваши услуги – копать ямы. Вам платят за одну яму 500 руб, на вопрос кто покупает лопаты, заказчик вам сказал, а у вас что своей нет? Вы по наивности пришли на объект и стали копать своей. Допустим объем работ 100 ям. Вы купили лопату за 200 руб, но пока копали выяснилось, что выкопав 5 ям нужно покупать новую лопату, так как старая лопата уже нета. В концу работу в итоге вы потратили своих 4 000 рублей, плюс есть много разных старых ненужных лопат, которые непонятно куда девать.
Вроде простая арифметика и на лопатах все понятно, но когда идет речь о высоких материях вроде "разработки супер инновационной программы" все забывают про учет таких простых вещей как оборудование.
Конечно это сложный пример, такие затраты легко не увидеть, но многие не учитывают множество других затрат. Например - бухгалтерское и юридическое обслуживание. За это нужно платить. Если делать самому, то нужно учитывать временные издержки (ошибка №2), т.к. самому бегать по налоговым, составлять отчетность и придумывать текст договора тоже отнимает время. Если вы его не учитываете в стоимости, то значит это вы делаете бесплатно или это ваше странное увлечение (мотаться по городу, бегать по налоговым, пенсионным, банкам и т.д.).
Другой пример затрат - аренда места рабочего места или что более актуально, когда начинаешь вести свое дело, место для проведения переговоров и обсуждения рабочих вопросов (надеюсь еще на забыли про то, что при создании ПО время уходит не только на написание исходного кода).
Эти местом может быть:
- коворкинг с нормальной переговорной
- кафе
- или можно проводить встречи на территории клиента.

В первом случае нужно учесть ежемесячную плату среднем в размере от 5 000 - 10 000 месяц и встречи назначать не отходя далеко от рабочего места, во втором это счет в кафе около 200-600 рублей за раз + время на дорогу. В третьем - потраченное время на дорогу. В любом случае за эти услуги нужно будет платить, либо явно - за обслуживание, либо косвенно – учитывая свое время, что выгодней - нужно считать, а итог обязательно учитывать в конечной стоимости.

Ошибка 4.

Все написанное выше не так важно, т.к. цены определяются рынком. Прежде чем ответить на вопрос сколько стоит разработка ПО, нужно посмотреть, а сколько и какой труд вообще стоит в Москве? Например сколько стоят услуги репетитора по английскому языку в Москве? Нормальный преподаватель обойдется вам в районе 3000 руб за академический час. При этом качество преподавания может оставлять желать лучшего. Например мой друг после того как вернулся из Нью-Йорка, в откровенном разговоре мне сказал, что не видит большого смысла платить московским репетиторам по-английскому...

Вы думаете такие "высокие" ставки только у "высококвалифицированной рабочей силе"? В Москве и московской области просто скосить траву на небольшом дачном участке может обойтись в 4000 руб. Естественно это будут не высококвалифицированные кадры с дипломом Московского ВУЗа факультета травокошения. Попробуйте поинтересоваться сколько стоит нормочас у автослесаря, думаю многие видели в метро рекламу автосервисов BMW "Выбор очевиден - 2013 руб за нормочас".

Такие вот цены.
Что происходит в ИТ? Если вы работаете в Москве и получаете 120 000 рублей на руки, то грубо разделив на среднее количество часов в месяце вы получите 731 рублей/час (см. предыдущие ошибки). Теперь вы все еще продолжаете думать, что ваш работодатель действительно продает ваши услуги по 731 рублей в час? Если покосить траву на пяти сотках будет стоить 4000 рублей, то может программирование это работа менее требовательная к качеству, по-проще? Из своего опыта общения с руководителями небольших ИТ компаний в Москве могу сказать, что для небольшого проекта на 1-3 человеко месяца, коммерческая стоимость часа программиста будет закладывать в районе 1500 - 3500 рублей за чел.час.
Более того, это скорее нижняя граница и многие уже в конце лета планирует повышение цен. Естественно в любой отрасли везде свои нюансы и место для маневра, тем более в ИТ. В этой сфере есть огромные возможности в плане раздувания объема и сроков, многие организации начинает "хитрить" либо накручивая в несколько раз часы разработки, либо продавая на самом деле услуги более "дешевых" программистов (стажеров, студентов и фрилансеров), но я не хотел бы углубляться в тему "как лучше запудрить мозг заказчику".

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

P.S.: Интересно, спустя столько лет после окончания школы, у кого сколько времени уйдет на то, чтобы решить пример 1.001? Правильный ответ не публикую, но его можно найти в интернете.