Еще одна моя заметка о разработке ПО, опубликованная в блоге http://www.ht.ua/blog/making_soft/
С повсеместным распространением интернета перед нами открылось море новых возможностей, начиная от развлечений до новых возможностей для бизнеса. Для разработчиков открылось не только новое поле деятельности, но и новый способ распространения своих продуктов. Доставка продукта конечному пользователю через интернет - быстро, удобно, дешево. К тому же интернет позволяет программисту более легко исправить версию продукта с ошибкой на версию продукта без ошибки - всего лишь обновить файл на сервере и все! Не надо думать о том, что на складе лежат коробки с CD-дисками программы, на которых эта дурацкая ошибка! В случае распространения продукта через интернет пользователь всегда получит самую свежую версию.
В условиях экономической конкуренции целью компаний, выпускающих продукты в одной нише, является завоевание большего количества клиентов. Как это сделать? От чего это зависит? Правильный маркетинг? Не только. Представьте, что ваш конкурент месяц назад выпустил продукт, разрекламировал его, занял какую-то долю клиентов. Вы знаете, что его продукт не идеален, содержит ошибки, а ваша программа - без единой ошибки (конечно, это из ряда фантастики :) ). И вот вы готовите к выпуску свой продукт, а ваш конкурент - выпускает исправления своей программы. Вы организуете маркетинговую компанию, но... Но рынок-то уже занят конкурирующим продуктом. Как вы думаете, что пользователю будет легче - скачать и установить обновления или полностью перейти на новый продукт?
И вот тут замечается плохая тенденция.
... разработчики утверждают, что пользователи просто хотят скорее получить ПО, нежели обрести его безукоризненную версию. ... Лучше быть первым, чем правым.[1]А так ли это? Насколько лучше быть первым, чем правым? Ведь преспокойно можно заработать репутацию компании, выпускающей некачественный продукт. С другой стороны, есть возможность заполучить больше ни о чем не подозревающих пользователей. На мой взгляд, такая тактика выпуска "неидеального ПО" уместна только в том случает, если ошибка не значительна, если ее себестоимость не велика по сравнению с задержкой выпуска продукта. Под себестоимостью ошибки я понимаю сумму неудобств, которые предоставит эта ошибка пользователю, и время, которое будет потрачено на исправление этой ошибки. Самые легкие ошибки - это опечатки :) Порой на них можно закрыть глаза (только тссс!). Примером некритичной ошибки так же может служить возникновение сбоя в программе, если у пользователя установлено какое-то редко встречающееся приложение, которое чудным образом конфликтует с вашим. Вы потратите гораздо больше сил и времени на поиск и устранение проблемы, чем выиграете от этого. Сколько процентов ваших клиентов пользуются этим редко встречающимся приложением? 1%? или 2%? Только не подумайте, что я призываю оставить этого пользователя на произвол судьбы. Нет, нет и нет. Просто такую ошибку вы можете исправить позже, когда у вас не будет более приоритетных задач. Конечно, выпуск продукта, в котором возникает fatal error при нажатии на кнопку сохранить, если у клиента драйвер видеокарты не от компании ATI - это большой грех :). Такого нельзя допускать ни в коем случае. Эту ошибку следует исправить.
Таким образом, все решает цена вопроса - не всегда оказывается уместной поговорка "семь раз отмерь, один раз отрежь", иногда "лучше быть первым, чем правым".
[1] С.Макконнелл. "Профессиональная разработка программного обеспечения"