Почему программисты не могут давать гарантий?
Вообще, вопрос о надежности и
гарантиях в IT индустрии
довольно болезненный.На данный
момент все успокоилось
(относительно) на признании
общественностью (а главное –
судебной системой) того факта,
что программного обеспечения без
ошибок не бывает.
Но почему?
Вопрос этот достаточно сложен
и ему посвящено немало
литературы. Точнее – ответов на
него достаточно много и они
работают сообща. Предлагаю для
начала (раз и навсегда? хотелось
бы верить, но я, разумеется, не
верю) разобраться с вопросом о
гарантиях.
Многие пользователи
возмущаются – «вот у меня на
стиральную машину гарантия, если
что не так – мне поменяют,
отремонтируют, вернут деньги,
возместят моральный ущерб (1 000
000 $) и еще в Диснейленд на
халяву свозят».
Для справки – пытался я тут
как-то по гарантии вернуть фирме
нестабильно работающий сотовый
телефон. Это была песня из
нескольких куплетов, причем
каждый еще и с припевом, но я ее
опущу – к делу не относится. В
результате, телефон остался при
хозяйке, но был слегка
«доработан напильником».
На каких условиях можно было бы
предоставлять серьезные гарантии
на ПО? Сразу оговоримся – если
вы никогда не заказывали
разработку софта для своей
компании (занимающейся, скажем,
заколачиванием гвоздей в
кирпичные стены) соседскому
студенту Васе, то с
действительно неработающим
программным обеспечением вам,
скорее всего, никогда
сталкиваться не доводилось.
Как правило, продаваемое ПО
на компьютерах с определенной
аппаратно-программной
конфигурациях способно
безошибочно выполнить основные
сценарии своего использования,
как их понимал разработчик ПО.
Если нет – то это обычное
мошенничество
(непрофессионализм) и в этих
случаях возмещение ущерба и
прочие радости жизни потребителя
должны присутствовать.
Но они отсутствуют – и это
реальная проблема (а вы думали,
я оголтелый программер, буду тут
до последней капли крови
профессиональную честь
отстаивать? так я ведь тоже
потребитель ПО).
Задача проверки
работоспособности программы на
всех возможных конфигурациях
компьютера – практически не
имеет решения.
Неумолимая комбинаторика,
знаете ли. Следовательно – чтобы
быть уверенным в работе своего
ПО на все 100%, нужно быть на
100% уверенным в конфигурации
программно-аппаратной части.
Следовательно – ПО должно
поставляться вместе с готовым
компьютером, причем внесение
любых изменений как в его
аппаратную часть (upgrade), так
и в программную (установка
других программ) автоматически
вызывает потерю гарантии. Уже
слышу громкие обвинения в
тупости и непрофессионализме, а
также в незнании законов рынка.
Дескать – захочешь жить – не
будешь выдвигать идиотских
требований.
Но погодите минутку, разве
эти требования не кажутся вам
смутно знакомыми? Да ведь это же
условия потери гарантии любой
бытовой техники!
Залезли внутрь, покопались,
что-то изменили – никто не
виноват, кроме вас самих. А с
чего вы взяли, что установка
нового (не обязательно корректно
написанного) антивируса чем-то
отличается для конкретной
программы от заливания ацетона в
стиральную машину?
Должна быть защита от дурака,
говорите? Так она есть. Но вот
если вспомнить нежно любимые
вами автомобили – что будет,
если вы гаечный ключ уроните в
работающий двигатель? И где
будет защита от дурака и
пресловутая гарантия? Вот то-то
и оно. Или пример со стиральной
машиной. Сколько у вас на ней
кнопок?
У меня – штуки 4. И рычажок с
несколькими делениями. Уверяю
вас, 99,9% программ со столь
примитивными возможностями по
управлению будут безошибочно
работать (при условии соблюдения
правил эксплуатации, читай –
соответствия
программно-аппаратного комплекса
требуемому). А сколько кнопочек
в Word-е? А вариантов их
использования? Тысячи? Десятки
тысяч? А вы инструкцию
пользователя внимательно прочли?
Вот то-то и оно.
Почему никто не возмущается
тем, что если забраться в
самолет и нажимать там разные
кнопочки и дергать за ручки в
произвольном порядке, то пилот,
скорее всего, разобьется
всмятку?
А курсы (платные, разумеется)
и экзамены на права
использования Word-а не хотите?
Я тоже не хочу. И гарантий от
Microsoft соответственно не
требую и не собираюсь.
Наконец, отдельная категория
предъявляющих претензии – это
инженеры других специализаций.
Особенно разработчики
процессоров. Типа – у нас все
еще сложнее, но работает
стабильно.
Уважаемые коллеги, я ни в
коей мере не хочу преуменьшать
ваши заслуги, но вы работаете в
несколько других условиях.
Требования к вашей работе –
предельно формализованы. Что
может быть формальнее описания
набора команд процессора?
А что вы будете делать с
требованиями «сделайте нам
красиво» и с претензиями «нет,
это как-то не красиво»?
А что с вами будет, если
где-нибудь в середине работы по
проектированию микропроцессора
вас ненавязчиво, милым тоном,
попросят сменить архитектуру
CISC на RISC. Со словами «вам
ведь это не трудно, правда?». А
как вы себя будете чувствовать
за неделю до сдачи системы,
когда клиент (глядя на вас, как
на последнего идиота) скажет
вам, что «умножение» на их
профессиональном языке означает
возведение в куб и нужно срочно
все переделать? А еще (после
выпуска ваших процессоров в
производство) вдруг решит, что
он хочет их вставлять в другой
сокет?
Фантастика? Сказки? Кошмарный
сон? Да нет – абсолютно штатные
ситуации. Встречаются в каждом
втором проекте - поверьте,
сплошь и рядом.
Можно возразить, что у
разработчиков ПО нет многих
проблем, с которыми сталкиваются
другие инженеры. Это правда.
Именно поэтому программы не
греются до 80 градусов по
Цельсию, несмотря на охлаждение
настоящей турбиной (ревущей так,
как будто компьютер вот-вот
пойдет на взлет), и не
покрываются трещинами из-за
перепадов температур.
У каждой профессии – свои
сложности. И свои проблемы. И –
свои радости. Разработчики ПО, к
примеру, не могут гарантировать
работоспособность своего
продукта во всех обстоятельствах
(положа руку на сердце – никто
не может, просто у нас это
особенно заметно). В обозримом
будущем нам всем придется как-то
с этим жить. Зато никто больше
не предоставляет такого удобного
и дешевого способа исправить
ситуацию в случае чего.
Мораль у этой сказки – «Не
забывайте скачивать update-ы и
не пытайтесь решать мировые
проблемы, обзывая всех
окружающих идиотами».
P.S. Пока я это писал, Word упал
два раза. За что я деньги БГ
плачу? Зато не потерял
информацию – и на том спасибо.
http://www.gazeta.ru