Сколько реально стоит виртуальный продукт

Когда Заказчик спрашивает, сколько стоит информационная система или база данных (чаще всего это называют просто «программой» или ПО), надо понимать, что по большому счету ему не нужно ни то, ни другое. Заказчику нужна помощь в решении своих проблем. В определенных случаях эту помощь может оказать компьютер, снабженный специальным программным обеспечением, а также люди, которые будут им пользоваться на благо компании. В конечном счете Заказчику не важно, как организована программа внутри и к каким данным она обращается — главное, чтобы она выполняла свои задачи, позволяла вводить информацию на разных участках, быстро получать аналитические отчеты и т.д.

Из чего складывается стоимость разработки на заказ 

Немного отвлечемся от программ и представим себе, что некая компания производит автомобили на заказ, выполняя самые немыслимые запросы клиентов. Одним нужна вездеходная машина для поездок на охоту с салоном из крокодиловой кожи и спутниковым телефоном. Другим — такая машина, которая может не только ездить, но и плавать. Третьим — грузовик для перевозки негабаритного груза. Таких пользователей не устраивают серийные авто. Сколько будет стоить их заказ? Назвать даже примерную стоимость можно только после изучения потребностей будущего владельца машины и задач, для которых она будет использоваться. После этого можно постараться подобрать серийные детали, соединить их с запчастями, созданными под конкретные запросы, и собрать из них автомобиль. Его стоимость будет складываться из цены уже готовых запасных частей, стоимости проектирования этого чуда техники и стоимости труда по соединению всех деталей в единое целое с изготовлением недостающих или эксклюзивных частей. При этом, если в такой машине установлено сложное оборудование, требующее особых навыков, то к общей цене нужно добавить и стоимость обучения.

Теперь вернемся к разработке ПО, стоимость которого, как ни странно, рассчитывается аналогично. Как и при создании заказной машины, в программных проектах, кроме собственно программирования (применительно к машине: сварка, сборка, покраска), есть еще большой объем других работ, которые необходимы для успешной реализации задуманного: обследование, описание требований, проектирование, тестирование, документирование и, конечно же, обучение. Причем обучение всегда индивидуально, т.к. каждый человек обладает собственным уровнем знаний:

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

Нельзя забывать, что предварительно оценить полный объем работ, необходимых для создания эксклюзивного ПО, сложно. Часто уже в процессе работы возникают дополнительные задачи, требующие дополнительных трудовых ресурсов и денежных средств. Таким образом, Заказчик изначально должен ориентироваться не на цену продукта как такового (как при покупке коробочного программы), а на стоимость всего проекта по разработке и внедрению новой информационной системы.

Эти непонятные человеко-часы…

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

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

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

Часто выясняется, что «нужно добавить чуть-чуть здесь, изменить чуть-чуть там… — это ведь не сложно!», как говорят пользователи. Некоторые такие «небольшие доработки» могут так повлиять на внутреннюю архитектуру системы, что придется затратить значительные силы на выполнение требований, о которых пользователи забыли упомянуть разработчику на начальном этапе или просто появились после запуска системы в промышленную эксплуатацию. Опытные разработчики стараются изначально вложить в будущий программный продукт возможность легкого внесения изменений, однако это все равно не спасает от превышения бюджета, которое складывается из многих «чуть-чуть». Есть методы, уменьшающие риск превышения бюджета: например, представление на суд пользователям реализованных «сквозных задач». Так, продукт еще не обладает всей заказанной функциональностью, но дает возможность посмотреть и пощупать то, что получается, а также принять решение о направлении дальнейшей работы.

Стоит ли столько платить?

Когда стоимость проекта примерно понятна, у Заказчика возникает резонный вопрос, а стоит ли только платить или можно обойтись другими средствами? Чтобы ответить, нужно в первую очередь понять, какая выгода (в денежном эквиваленте) ожидается от создания нового ПО. Можно прикинуть, сколько людских ресурсов высвободится или сколько часов рабочего времени будет сэкономлено после внедрения. Однако часто автоматизация не просто ускоряет некоторый процесс, а позволяет получить результат, который без использования компьютера был просто невозможен: например, обработка больших массивов информации и получение аналитических отчетов, которые в ручном режиме не составлялись из-за большой трудоемкости.

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

Кому платить?

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

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

Если вы наняли штатного программиста, то количество проблем часто не только не уменьшается, но со временем может и увеличиться. Практика показывает, что мифическое спокойствие руководителя, что свой программист всегда рядом и может сделать программу как нужно, может обернуться плачевными результатами. К сожалению, в наших реалиях работник может в любой момент заболеть, запить или просто уволиться, если его загрузить слишком большим (по его мнению) объемом работы. А что останется в компании?

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

Штатный программист в непрофильной (например, торговой) компании может быстро облениться и перенять манеру общения у системных администраторов со стажем (имеется в виду отсутствующий взгляд и пренебрежительное отношение к пользователям).

При работе с компанией-разработчиком, естественно, такого не должно и не может быть в принципе. Ведь Заказчик — это глава проекта, тот, ради кого и за счет кого работает разработчик (не случайно слово «Заказчик» везде по тексту с заглавной буквы). Заказчик знает свой бизнес, а разработчик знает свой, и только вместе можно создать что-нибудь стоящее, о чем в дальнейшем можно будет с гордостью рассказывать в прессе и указывать в своем портфеле проектов. К тому же ПО на заказ не делаются с нуля: у разработчиков всегда есть некоторый резерв, который позволяет реализовать ту или иную функциональность в сроки, а не тянуть работу, бесконечно требуя денежных инъекций, как это часто бывает при выполнении проекта автоматизации с нуля собственными силами Заказчика. При этом найти опытного программиста, платить ему хорошую зарплату не всем по карману. Дешевле сделать заказ у тех же опытных программистов, которые работают в профессиональной компании по разработке ПО, которых не нужно отдельно стимулировать для хорошего выполнения своей работы и беспокоиться, чтобы они не ушли туда, где больше платят.

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

Сколько все-таки это стоит?!

Чтобы точно сказать, во сколько обойдется разработка конкретной базы данных, нужно встречаться с Заказчиком и беседовать, беседовать и еще раз беседовать (хотя все равно только после реализации проекта можно рассчитать, насколько он вписался в бюджет). Исходя из опыта предыдущих проектов, которые были проведены нашей компанией в 2005-2006 гг., приводим следующие приблизительные цифры.

Стоимость проекта до 500$ — Заказчик получает продукт с минимальной адаптацией. Возможности доработок ограничены, поскольку основное время уходит на компоновку решения, настройку прав пользователей, установку и обучение.

Стоимость проекта около 500-1000$ — типовые отраслевые решения, кроме базовых возможностей есть поле для создания новых учетных единиц и отчетов в пределах 30-40 часов работ.

Стоимость проекта около 1000-3000$ — базовые возможности плюс порядка 80 часов адаптации. Здесь уже можно создать решение со сложными расчетными задачами, широкой структурой связей и бизнес-логикой, а также большим количеством отчетов и форм ввода.

Комплексная автоматизация — это проекты стоимостью более 3000$. Такие проекты целесообразно разделять на отдельные этапы и рассчитывать каждый этап отдельно.

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

узнавать и сравнивать предложения и опыт разных разработчиков;

проверять то, что вам декларирует поставщик (можно проконсультироваться с реальными предприятиями Вашего типа, которые уже работают с предлагаемой системой);

настаивать на том, чтобы стоимость программного продукта оплачивалась частями по мере подписания актов выполненных работ по конкретным участкам;

организовать участие в проекте своего штатного сотрудника (типа специалиста по логистике), видящего задачу «глобально» и способного координировать запросы пользователей и действия разработчика.

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