Как сделать программу идеальной?

Как пользователи оценивают программы? Что нужно, чтобы они могли назвать ее "идеальной"? Почитав блог одного из пользователей, Криса Пирилло, я наткнулся на интересную статью, которая будет полезно почитать большинству разработчиков.
- Программа никогда не зависает и не падает. Мне плевать, что я хочу загрузить картинку размером 10 Гб в Photoshop на компьютере, где установлено лишь 256 Мб оперативки. Пусть программа сама проанализирует ситуацию и уравновесит ресурсы так, чтобы не повесить всю систему. Пользователь не должен иметь возможность заставить программу зависнуть.
- Безопасность. Бабушка не должна иметь ученую степень по Информатике, чтобы защитить ее компьютер от вирусов и программ-шпионов. Программа не должна отсылать данные подобно шпионам. Одна из причин того, что Мак и Линукс имеют гораздо меньше вирусов не в том, что у них мало пользователей, а в том, что у них высокий уровень безопасности и саморазмножающимся программам очень сложно спрятаться от системы. Firefox - другой хороший пример ПО, которое безопасно и в случае опасности (например, при входе на phishing-сайт) предупреждает об этом пользователя.
- Любой ценой защищайте данные. Приходит на ум ужасная история, в которой пользователь скачал документ из почты, но выбрал "Открыть" вместо "Сохранить". После подтверждения документ открылся в программе и он лишь сохранял его с помощью комбинации CTRL-S, даже не думая о том, куда он сохраняется. Он весь день работал с ним, а вечером нажал "Сохранить" и отправился спать. Утром он как обычно включил компьютер, заглянул в последнии документы, открыл и с ужасом прочитал сообщение "Файл не найден". Просто документ был распакован и открыт в TEMP-директории, которая и была очищена после перезагрузки компьютера. Такого не должно было случится! Операционная система таке должна хранить резервные копии документов в случае, если пользователь захочет откатить изменения. Как это можно было бы сделать в "Машине времени".
- Интеграция с Интернетом. Сейчас много разговоров о "Web 2.0" и многие люди считают, что все программы должны работать через браузер. Я считаю, что это глупо. Гугловский офис никогда не переплюнет Microsoft Office или любой другой хороший офисный пакет, установленный в системе. Причина тут и в низкой скорости и в интеграции программ в систему, и в их работе оффлайн. Однако я верю, что устанавливаемые программы могут лучше использовать возможности Интернетаю. Например, в OpenOffice можно сохранять документы как на диск, так и в сети Интернет и для этого не нужно открывать веб-браузер. Мой видеоплеер может сам подгружать тексты для музыки и скачивать другую информацию о фильме, когда я смотрю DVD.
- Философия "Просто работает". Я подключаю мой принтер и он работает. Пользователь никогда не должен слышать страшных слов вроде "драйвер" и "установка". Идеальный пример - сервис YouTube. Десять лет назад мне нужен был Windows Media Player, RealPlayer, Quicktime-плагины, установить все это и перегрузиться только для того, чтобы посмотреть один ролик через браузер в Интеренете. Куча раличных кодеков и форматов. YouTube упростил этот процесс: я захожу на сайт, жму кнопку "Play" и видео играет. Если нет флеша, появляется ссылка "Нажмите для установки флеш" я жму и все работает.

